图书介绍

Linux内核2.4版源代码分析大全【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

Linux内核2.4版源代码分析大全
  • 李善平等编著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111093445
  • 出版时间:2002
  • 标注页数:845页
  • 文件大小:32MB
  • 文件页数:854页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux内核2.4版源代码分析大全PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

前言1

第1章 Linux进程管理1

1.1 进程和进程控制块2

1.1.1 调度数据成员5

1.1.2 信号处理6

1.1.3 进程队列指针6

1.1.4 进程标识8

1.1.5 时间数据成员9

1.1.6 信号量数据成员9

1.1.7 文件系统数据成员10

1.1.8 内存数据成员11

1.1.9 页面管理12

1.1.10 支持对称多处理器方式时的数据成员13

1.1.11 其他数据成员13

1.1.12 进程队列的全局变量15

1.2 进程状态和进程标志17

1.3 list_head链表19

1.4 进程调度21

1.5 等待队列及其操作30

1.6 中断与定时服务34

1.6.1 中断机制34

1.6.2 定时服务35

1.7 bottom half43

1.8 tasklet与softirq44

1.9 任务队列49

1.10 原子操作51

1.11 自旋锁53

1.12 信号量55

1.13 系统调用65

1.13.1 与系统调用有关的数据结构和函数65

1.13.2 进程的系统调用命令是如何转换为INT Ox80中断请求的70

1.13.3 系统调用功能模块的初始化71

1.13.4 Linux内部是如何分别为各种系统调用服务的71

1.13.5 ret_from_sys_call72

1.14 进程的创建和终止73

1.15 程序的装入和执行80

第2章 Linux存储管理87

2.1 I386体系结构对存储管理的硬件支持88

2.1.1 80386分段机制及在Linux中的应用89

2.1.2 80386分页机制91

2.2 Linux的分页管理93

2.3 虚存段的组织和管理97

2.3.1 建立映射99

2.3.2 撤销映射105

2.3.3 修改映射109

2.4 内存的加锁和保护114

2.4.1 内存加锁115

2.4.2 内存保护119

2.5 Linux的AVL树121

2.6 物理空间管理127

2.7 空闲物理内存管理130

2.7.1 申请分配物理页面的操作133

2.7.2 释放物理页面的操作142

2.8 slab147

2.8.1 缓存区的创建与销毁操作155

2.8.2 缓存区的收缩与增长操作163

2.8.3 对象的分配与释放操作173

2.9 内核态内存的申请与释放kmalloc/kfree177

2.9.1 内核态内存的申请177

2.9.2 内核态内存的释放179

2.10 用户态内存的申请与释放vmalloc/vfree183

2.10.1 用户态内存的申请185

2.10.2 用户态内存的释放187

2.11 交换空间188

2.12 页交换进程和页面换出190

2.13 缺页中断和页面换入208

2.14 存储管理系统的缓冲机制218

2.14.1 Swap缓冲219

2.14.2 页缓冲220

第3章 Linux文件系统管理222

3.1 文件系统管理222

3.1.1 register/unregister操作222

3.1.2 mount操作224

3.2 虚拟文件系统237

3.2.1 VFS超级块238

3.2.2 越级块的操作函数241

3.2.3 read_super操作244

3.2.4 VFS inode245

3.2.5 inode的操作函数249

3.2.6 VFS inode缓存255

3.2.7 iget/iput操作256

3.3 路径定位259

3.3.1 定位操作259

3.3.2 VFS directory缓存268

3.4 打开文件表271

3.4.1 系统打开文件表271

3.4.2 进程打开文件表272

3.4.3 操作已打开的文件273

3.5 文件共享与文件锁274

3.6 EXT2文件系统280

3.6.1 EXT2的超级块281

3.6.2 EXT2的组描述符283

3.6.3 EXT2的inode284

3.6.4 文件扩展时的数据块分配策略286

3.7 open操作和close操作287

3.8 缓冲区缓存296

3.8.1 缓冲区相关数据结构296

3.8.2 缓冲区操作函数298

3.8.3 寻找缓冲区305

第4章 Linux设备管理306

4.1 概述306

4.1.1 设备管理概述306

4.1.2 与外设的数据交流方式307

4.1.3 字符设备与块设备307

4.1.4 主设备号和次设备号308

4.1.5 本章内容分配309

4.2 设备文件310

4.2.1 基本设备文件的设备访问流程311

4.2.2 设备驱动程序接口312

4.2.3 块设备文件接口314

4.2.4 def_blk_fops中的函数分析316

4.3 传统方式下的设备注册与管理318

4.3.1 字符设备管理318

4.3.2 块设备管理的相关结构与变量321

4.3.3 blkdevs[ ]的设置323

4.3.4 blk_dev[ ]的设置325

4.4 devfs注册与管理329

4.4.1 设备文件系统的基本概念329

4.4.2 采用devfs的原因330

4.4.3 启用设备文件系统331

4.4.4 如何使传统管理方式依然有效332

4.4.5 内核实现综述333

4.4.6 核心结构与变量334

4.4.7 devfs节点注册函数338

4.4.8 编写采用devfs的设备驱动程序342

4.5 块设备的请求队列344

4.5.1 相关结构及请求队列的初始化344

4.5.2 block_read()提交请求的过程348

4.5.3 ll_rw_block()函数分析352

4.5.4 submit_bh()与generic_make_request()354

4.5.5 _make_request()函数分析357

4.6 ioctl361

4.6.1 构造ioctl命令字361

4.6.2 ioctl的实现过程363

4.6.3 ioctl的上层处理函数365

4.6.4 ioctl的底层处理函数367

4.7 I/O端口的资源分配与操作370

4.7.1 I/O端口概述370

4.7.2 Linux系统中的I/O空间分配371

4.7.3 端口操作函数374

4.8 其他辅助管理功能377

4.8.1 中断处理377

4.8.2 电源管理383

4.8.3 缓冲区管理385

4.9 字符设备驱动程序的实现389

4.9.1 分析设备功能389

4.9.2 编写file_operations结构中的操控函数389

4.9.3 字符设备注册及初始化394

4.9.4 设备的使用395

4.9.5 驱动程序编写实例396

4.10 块设备驱动程序的实现400

4.10.1 设备功能400

4.10.2 编写块设备的函数接口fops400

4.10.3 设备接口注册与初始化401

5.1 系统引导404

第5章 Linux系统初始化404

5.2 其他引导方法408

5.3 实模式下的系统初始化408

5.4 保护模式下的系统初始化410

5.4.1 初始化寄存器与数据区410

5.4.2 核心代码解压缩410

5.4.3 页表初始化411

5.4.4 初始化idt、gdt和ldt412

5.4.5 启动核心416

5.5 启动核心(init/main.c)416

5.6 init进程及系统配置(init/main.c)425

5.6.1 init进程的执行流程425

5.6.2 可执行文件init429

5.7 Linux源程序的目录分布430

5.7.1 kernel目录430

5.7.3 fs目录431

5.7.2 mm目录431

5.7.4 arch目录432

5.7.5 include目录432

5.7.6 net目录432

第6章 Linux网络实现433

6.1 概述433

6.2 基本数据结构435

6.2.1 数据包结构435

6.2.2 连接452

6.2.3 协议操作集合465

6.2.4 网络设备接口数据结构469

6.2.5 路由491

6.2.6 地址结构528

6.3 网络系统初始化529

6.3.1 整个网络系统启动531

6.3.2 协议初始化534

6.3.3 路由初始化537

6.3.4 网络接口设备初始化549

6.4 网络设备驱动程序558

6.4.1 网络设备接口初始化函数558

6.4.2 设备打开和关闭569

6.4.3 接收数据分析571

6.4.4 发送数据分析580

6.5 网络连接587

6.5.1 连接的建立和关闭587

6.5.2 数据发送604

6.5.3 数据接收631

6.6 路由过程661

6.6.1 发送路由661

6.6.2 接收路由669

7.1 模块编程678

7.1.1 模块编程基本接口678

第7章 Linux的模块678

7.1.2 内核空间和用户空间680

7.1.3 内核符号表683

7.1.4 模块的使用683

7.2 模块机制内核分析684

7.2.1 数据结构684

7.2.2 模块实现分析692

7.3 模块和/proc文件系统712

7.3.1 初始化712

7.3.2 支持函数712

7.4 modutils介绍717

7.4.1 insmod717

7.4.2 rmmod720

7.4.3 lsmod720

7.4.4 modprobe720

7.5.1 从kemeld到kmod722

7.5 kmod722

7.5.2 kmod的实现723

第8章 Linux内核源代码的调试726

8.1 调试机制726

8.1.1 断点726

8.1.2 信号727

8.1.3 单步运行727

8.1.4 系统调用的调试727

8.1.5 暂时中断后的继续处理727

8.2 i386提供的调试机制728

8.2.1 调试断点的分类728

8.2.2 调试寄存器的结构728

8.2.3 断点地址731

8.2.4 Linux调试处理732

8.3 ptrace()系统调用737

8.3.1 数据结构738

8.3.2 用户空间ptrace()系统调用的使用739

8.3.3 ptrace调用分析742

8.3.4 ptrace()调用机制及流程756

8.4 /proc文件系统757

8.4.1 /proc文件系统在调试中的作用757

8.4.2 /proc文件系统实现分析760

8.5 内核参数动态更改792

8.5.1 数据结构792

8.5.2 /proc/sys方式795

8.5.3 sysctl系统调用方式806

8.6 内核调试环境813

8.6.1 内核调试的手段813

8.6.2 远程方式在内核调试中的地位815

8.6.3 Kgdb的使用819

8.6.4 Kgdb的实现分析821

热门推荐