第1章 Linux操作系统简介
1. 1 主要特点
1. 2 Linux产品
第2章 编译内核
2. 1 所有的东西在哪里
2. 2 编译过程
2. 3 额外的配置工具
第3章 内核入门
3. 1 重要的数据结构
3. 1. 1 任务结构
3. 1. 2 进程表
3. 1. 3 文件和节点
3. 1. 4 动态内存管理
3. 1. 5 队列和信号标志
3. 1. 6 系统时间和定时器
3. 2 主要的算法
3. 2. 1 信号
3. 2. 2 硬件中断
3. 2. 3 软件中断
3. 2. 4 启动系统
3. 2. 5 定时器中断
3. 2. 6 调度程序
3. 3 系统调用的实现
3. 3. 1 系统调用的实际工作原理
3. 3. 2 简单系统调用的例子
3. 3. 3 更复杂的系统调用的例子
第4章 内存管理
4. 1 独立于体系结构的内存模型
4. 1. 1 内存页面
4. 1. 2 虚拟地址空间
4. 1. 3 转换线性地址
4. 1. 4 页面目录
4. 1. 5 页面表
4. 2 进程的虚拟地址空间
4. 2. 1 用户段
4. 2. 2 虚拟内存区域
4. 2. 3 系统调用brk
4. 2. 4 映射函数
4. 2. 5 内核段
4. 2. 6 引导过程中内核段中的内存分配
4. 2. 7 内核段中的动态内存管理
4. 3 块设备高速缓存
4. 3. 1 块缓冲
4. 3. 2 bdflush和kupdate
4. 3. 3 用于缓冲存储器的列表结构
4. 3. 4 使用缓冲存储器
4. 4 Linux系统下的分页技术
4. 4. 1 内存管理和高速缓冲存储器
4. 4. 2 预定一个内存页面
4. 4. 3 通过内核线程优化内存页面管理
4. 4. 4 页面错误和重新载入页面
第5章 进程间的通信
5. 1 内核中的同步
5. 2 通过文件通信
5. 2. 1 锁定整个文件
5. 2. 2 锁定文件区域
5. 3 管道
5. 4 使用ptrace调试
5. 5 System V中的进程间通信(IPC)
5. 5. 1 访问权限. 号码和关键字
5. 5. 2 信号标志
5. 5. 3 消息队列
5. 5. 4 共享内存
5. 5. 5 ipcs和ipcrm命令
5. 6 使用套接字的IPC
5. 6. 1 一个简单的例子
5. 6. 2 UNIX域套接字的实现
第6章 Linux文件系统
6. 1 基本原理
6. 2 内核中文件系统的表示
6. 2. 1 装载
6. 2. 2 超代码块
6. 2. 3 超代码块操作
6. 2. 4 目录缓存器
6. 2. 5 DEntry操作
6. 2. 6 i节点
6. 2. 7 i节点操作
6. 2. 8 文件结构
6. 2. 9 文件操作
6. 2. 10 打开文件
6. 3 Ext2文件系统
6. 3. 1 Ext2文件系统的结构
6. 3. 2 Ext2文件系统中的目录
6. 3. 3 Ext2文件系统中代码块的分配
6. 3. 4 Ext2文件系统的扩充
6. 4 Proc文件系统
6. 4. 1 Proc文件系统的结构
6. 4. 2 Proc文件系统的实现
第7章 Linux下的设备驱动程序
7. 1 字符设备和代码块设备
7. 2 硬件
7. 2. 1 端口I/O
7. 2. 2 PCI总线
7. 2. 3 恐龙--ISA总线
7. 2. 4 ISA即插即用
7. 3 查询. 中断和等待队列
7. 3. 1 查询
7. 3. 2 中断模式
7. 3. 3 中断共享
7. 3. 4 软件中断
7. 3. 5 下半部--较低的中断一半
7. 3. 6 任务队列
7. 3. 7 计时器
7. 4 实现驱动程序
7. 4. 1 PC扬声器驱动程序
7. 4. 2 一个简单的驱动程序
7. 4. 3 setup函数
7. 4. 4 init
7. 4. 5 打开和释放
7. 4. 6 读取和写入
7. 4. 7 IOCTL
7. 4. 8 Poll
7. 4. 9 Llseek
7. 4. 10 Mmsp
7. 4. 11 Fasync
7. 4. 12 Readdir及Fsync
7. 5 动态驱动程序和静态驱动程序
第8章 网络实现方式
8. 1 导言和概述
8. 1. 1 网络实现方式的层模型
8. 1. 2 将A中的数据转移到B
8. 2 一些重要的结构
8. 2. 1 套接字结构
8. 2. 2 sk_buff结构--网络中的缓冲区管理
8. 2. 3 INET套接字--套接字的一个特殊部分
8. 2. 4 proto结构中的协议操作
8. 2. 5 套接字地址的一般结构
8. 3 Linux下的网络设备
8. 3. 1 以太网
8. 3. 2 SLIP和PLIP
8. 3. 3 回送设备
8. 3. 4 哑设备
8. 3. 5 示例设备
第9章 模块和调试
9. 1 什么是模块
9. 2 内核中的实现
9. 3 模块和内核的对象片断的含义
9. 4 参量的传输和示例
9. 5 模块能实现什么
9. 6 内核守护程序
9. 7 模块之间的简单交换
9. 8 示例模块
9. 9 调试
9. 9. 1 更改是末尾的开始
9. 9. 2 最好的调试器--printk()
9. 9. 3 使用gdb进行调试
第10章 多重处理
10. 1 英特尔多重处理规范
10. 2 多重处理器系统存在的问题
10. 3 内核的改动
10. 3. 1 内核初始化
10. 3. 2 调度
10. 3. 3 中断处理
10. 4 原子操作
10. 4. 1 原子数据类型
10. 4. 2 访问原子数据类型
10. 4. 3 改变和检测原子变量
10. 5 旋转锁定
10. 5. 1 访问函数
10. 5. 2 读写旋转锁定
附录A 系统调用
附录B 内核的相关命令
附录C PROC文件系统
附录D 引导进程
附录E 有用的内核函数