《独辟蹊径品内核 Linux内核源代码导读》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:李云华编译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121085154
  • 页数:484 页
图书介绍:本书注重实例,尽量在讨论“如何做”的基础上,深入讨论为什么要这么做。在内容安排上,本书包含:x86硬件基础、Linux内核Makefile分析、Linux内核启动、内存管理、中断和异常处理、信号机制、系统调用、时钟机制、进程管理、调度器、文件系统、常用内核分析方法等内容。

第1章 x86硬件基础 1

1.1 保护模式 1

1.1.1 分页机制 1

1.1.2 分段机制 7

1.2 系统门 13

1.3 x86的寄存器 14

1.4 典型的PC系统结构简介 16

第2章 基础知识 18

2.1 AT&T与Intel汇编语法比较 18

2.2 gcc内嵌汇编 20

2.3 同步与互斥 25

2.3.1 原子操作 25

2.3.2 信号量 27

2.3.3 自旋锁 29

2.3.4 RCU机制 35

2.3.5 percpu变量 39

2.4 内存屏障 41

2.4.1 编译器引起的内存屏障 41

2.4.2 缓存引起的内存屏障 44

2.4.3 乱序执行引起的内存屏障 47

2.5 高级语言的函数调用规范 49

第3章 Linux内核Makefile分析 52

3.1 Linux内核编译概述 52

3.2 内核编译过程分析 54

3.3 内核链接脚本分析 62

第4章 Linux内核启动 65

4.1 BIOS启动阶段 65

4.2 实模式setup阶段 67

4.3 保护模式startup_32 77

4.4 内核启动start_kernel() 84

4.5 内核启动时的参数传递 90

4.5.1 内核参数处理 91

4.5.2 模块参数处理 95

第5章 内存管理 99

5.1 内存地址空间 99

5.1.1 物理内存地址空间 99

5.1.2 虚拟地址空间 101

5.2 内存管理的基本数据结构 104

5.2.1 物理内存页面描述符 104

5.2.2 内存管理区 106

5.2.3 非一致性内存管理 108

5.3 内存管理初始化 109

5.3.1 bootmem alloctor的初始化 109

5.3.2 页表初始化 115

5.3.3 内存管理结构的初始化 118

5.4 内存的分配与回收 127

5.4.1 伙伴算法 127

5.4.2 SLUB分配器 138

第6章 中断与异常处理 152

6.1 中断的分类 152

6.2 中断的初始化 156

6.2.1 异常初始化 156

6.2.2 中断的初始化 160

6.2.3 中断请求服务队列的初始化 167

6.3 中断与异常处理 171

6.3.1 特权转换与堆栈变化 171

6.3.2 中断处理 172

6.3.3 异常处理 177

6.4 软件中断与延迟函数 180

6.4.1 softirq 180

6.4.2 tasklet 185

6.5 中断与异常返回 187

6.6 中断优先级回顾 191

6.7 关于高级可编程中断控制器 192

6.7.1 APIC初始化 193

第7章 信号机制 199

7.1 信号机制的管理结构 200

7.2 信号发送 204

7.3 信号处理 210

第8章 系统调用 220

8.1 Libc和系统调用 220

第9章 时钟机制 226

9.1 clocksource对象 227

9.1.1 clocksource概述 227

9.1.2 clocksource初始化 228

9.2 tickless机制 232

9.2.1 tickless由来 232

9.2.2 clock event device对象概述 234

9.2.3 clock event device对象的初始化 236

9.3 High-Resolution Timers 247

9.3.1 High-Resolution Timers管理结构 247

9.3.2 High-Resolution Timers初始化 252

9.3.3 High-Resolution Timers操作 258

9.4 时钟中断处理 268

9.4.1 时钟维护 276

9.4.2 进程时间信息统计 281

9.5 软件定时器 283

9.5.1 基本管理结构 283

9.5.2 初始化 284

9.5.3 注册与过期处理 287

第10章 进程管理 295

10.1 进程描述符 296

10.1.1 进程状态 297

10.1.2 进程标识 299

10.1.3 进程的亲缘关系 300

10.1.4 进程的内核态堆栈 301

10.1.5 进程的虚拟内存布局 302

10.1.6 进程的文件信息 305

10.2 进程的建立 306

10.2.1 建立子进程的task_struct对象 308

10.2.2 子进程的内存区域 315

10.2.3 子进程的内核态堆栈 323

10.2.4 0号进程的建立 325

10.3 进程切换 327

10.4 进程的退出 331

10.4.1 do_exit函数 331

10.4.2 task_struct结构的删除 334

10.4.3 通知父进程 335

10.5 do_wait()函数 338

10.6 程序的加载 344

第11章 调度器 351

11.1 早期的调度器 351

11.2 CFS调度器的虚拟时钟 353

11.3 CFS调度器的基本管理结构 357

11.4 CFS调度器对象 359

11.5 CFS调度操作 360

11.5.1 update_curr()函数 360

11.5.2 scheduler_tick()函数 362

11.5.3 put_prev_task_fair()函数 364

11.5.4 pick_next_task()函数 366

11.5.5 等待和唤醒操作 368

11.5.6 nice系统调用 373

第12章 文件系统 376

12.1 Ext2的磁盘结构 376

12.2 Ext2的内存结构 385

12.3 虚拟文件系统的管理结构 387

12.3.1 文件系统对象 388

12.3.2 VFS的超级块 389

12.3.3 VFS的inode结构 400

12.3.4 VFS的文件对象 406

12.3.5 VFS的目录对象 409

12.3.6 VFS在进程中的文件结构 412

12.4 文件系统的挂载 413

12.5 路径定位 425

12.6 文件打开与关闭 441

12.7 文件读写 449

12.7.1 缓冲区管理 449

12.7.2 文件读写操作分析 456

第13章 常用内核分析方法 471

13.1 准确定位同名宏及结构体 471

13.2 准确定位同名函数 473

13.3 利用link map文件定位全局变量 474

13.4 准确定位函数调用线索 476

13.5 SystemTap在代码分析中的使用 479