第一部分 Linux内核原理 1
第1章 软件基础 1
1.1 计算机语言 1
1.2 什么是一个操作系统? 2
1.3 内核数据结构 3
第2章 内存管理 5
2.1 虚拟内存的抽象模型 5
2.2 高速缓冲(Caches) 9
2.3 Linux页表 10
2.4 页分配和释放(Page Allocation and Deallocation) 11
2.5 内存镜像 12
2.6 要求的页(Demand Paging) 13
2.7 Linux页高速缓冲(Page Cache) 14
2.8 交换出和抛弃页(Swapping Out and Discarding Pages) 15
2.9 交换式高速缓冲(The Swap Cache) 18
2.10 交换进页 18
第3章 进程 20
3.1 Linux进程 20
3.3 调度 22
3.2 ID 22
3.4 文件 24
3.5 虚拟内存 25
3.6 增加一个进程 26
3.7 时间和计时器 28
3.8 可执行程序 28
第4章 进程间通信机制 32
4.1 信号 32
4.2 管道 33
4.3 Sockets 35
5.1 PCI地址空间 40
第5章 PCI 40
5.2 PCI配置头 41
5.3 PCI I/O和PCI内存地址 42
5.4 PCI-ISA桥 43
5.5 PCI-PCI桥 43
5.6 Linux PCI初始化 44
第6章 中断和中断处理 51
6.1 可编程中断控制器 51
6.2 初始化中断处理数据结构 52
6.3 中断处理 53
第7章 设备驱动器 55
7.1 轮流检测(polling)和中断 56
7.2 直接内存访问(DMA) 57
7.3 内存 57
7.4 设备驱动器到内核的接口 58
7.5 硬盘 60
7.6 网络设备 66
第8章 文件系统 68
8.1 EXT2 69
8.2 VFS 74
8.3 缓冲式高速缓存 79
8.4 /proc文件系统 81
8.5 设备特殊文件 82
第9章 网络 83
9.1 TCP/IP网络的浏览 83
9.2 Linux TCP/IP网络层 85
9.3 BSD Socket接口 85
9.4 INET Socket层 87
9.5 IP层 91
9.6 地址解析协议 94
9.7 IP路由 95
10.1 Bottom Half处理 98
第10章 内核机制 98
10.2 任务队列 99
10.3 计时器 100
10.4 等待队列 101
10.5 Buzz锁 101
10.6 信号量 102
第11章 模件 103
11.1 加载一个模件 104
11.2 卸载一个模件 105
12.1 从哪里得到Linux内核源代码 107
第12章 Linux内核源代码 107
12.2 从哪里开始看 108
第13章 Linux数据结构 111
13.1 block_dev_struct 111
13.2 buffer_head 111
13.3 device 112
13.4 device_struct 115
13.5 file 115
13.6 files_struct 115
13.9 inode 116
13.8 gendisk 116
13.7 fs_struct 116
13.10 ipc_perm 118
13.11 irqaction 118
13.12 linux_binfmt 118
13.13 mem_map_t 119
13.14 mm_struct 119
13.15 pci_bus 120
13.16 pci_dev 120
13.18 rtable 121
13.17 request 121
13.19 semaphore 122
13.20 sk_buff 122
13.21 sock 124
13.22 socket 128
13.23 task_struct 128
13.24 timer_list 130
13.25 tq_struct 131
13.26 vm_area_struct 131
14.2 简介 132
14.1 概述 132
第14章 GAWK 132
第二部分 编程方法 132
14.3 读取输入文件 134
14.4 显示 135
14.5 匹配模式(patterns) 138
14.6 表达式作为行为的语句 141
14.7 行为中的控制语句 142
14.8 变量 144
14.9 内部函数(Built-in Functions) 145
14.10 户定义的函数 148
14.11 例子 149
14.12 结论 150
第15章 C语言编程 151
15.1 什么是C 151
15.2 GNU C编译器 151
15.3 使用gcc 152
15.4 用gdb调试gcc程序 153
15.5 其他的C编程工具 158
15.6 Linux编程基础 163
第16章 服务级系统调用 165
16.1 文件和记录加锁 165
16.2 任务控制 168
16.3 符号链接 184
16.4 用户和组 187
第17章 多进程编程 199
17.1 多进程程序的特点 199
17.2 进程启动和结束 200
17.3 子进程 211
17.4 其他系统调用 220
17.5 信号 225
18.1 套接字概念 229
第18章 网络程序设计 229
18.2 通信类型 230
18.3 套接字地址 230
18.4 文件名字空间 232
18.5 Internet名字空间 234
18.6 数据报套接字操作 243
18.7 Inetd精灵进程 246
18.8 套接字选项 248
18.9 网络数据库 249
18.10 套接字和端口 250
18.11 套接字程序设计 251
18.12 编程实例 254
18.13 记录和文件锁定 258
第19章 GTK 260
19.1 开始 260
19.2 下一步 266
19.3 对象打包 269
19.4 对象概论 277
19.5 按钮对象 278
19.6 Tooltips对象 282
19.7 Container对象 283
19.8 EventBox窗口对象 290
19.9 其他对象 292
19.10 文件对话框 295
19.11 List对象 297
19.12 Menu对象 306
19.13 Timeouts、IO及Idle函数 314
19.14 选取区域管理 315
19.15 glib 321
19.16 设置窗口对象属性 325
19.17 GTK的rc文件 325
19.18 写出自己的对象 330