当前位置:首页 > 工业技术
Linux内核2.4版源代码分析大全
Linux内核2.4版源代码分析大全

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

工业技术

  • 电子书积分:22 积分如何计算积分?
  • 作 者:李善平等编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:7111093445
  • 页数:845 页
图书介绍:
《Linux内核2.4版源代码分析大全》目录

前言 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 half 43

1.8 tasklet与softirq 44

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_call 72

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 slab 147

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

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

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

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

2.9.1 内核态内存的申请 177

2.9.2 内核态内存的释放 179

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

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 inode 245

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的inode 284

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 ioctl 361

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 编写块设备的函数接口fops 400

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和ldt 412

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 可执行文件init 429

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 insmod 717

7.4.2 rmmod 720

7.4.3 lsmod 720

7.4.4 modprobe 720

7.5.1 从kemeld到kmod 722

7.5 kmod 722

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

返回顶部