第1章 操作系统概述 1
1.1 操作系统的概念 1
1.1.1 操作系统的地位 1
1.1.2 资源管理功能 2
1.1.3 接口功能 2
1.2 操作系统的发展历史 3
1.2.1 手工操作阶段 3
1.2.2 联机批处理系统 3
1.2.3 脱机批处理系统 4
1.2.4 执行系统 4
1.2.5 多道批处理系统 5
1.2.6 分时系统 7
1.2.7 实时系统 8
1.2.8 网络操作系统 9
1.2.9 分布式操作系统 9
1.2.10 PC操作系统 10
1.3 操作系统分类 10
1.4 操作系统的功能和主要特征 12
1.4.1 操作系统的功能 12
1.4.2 操作系统的主要特征 15
1.5 常用操作系统介绍 16
1.5.1 MS-DOS及Windows系列 16
1.5.2 UNIX家族 19
1.5.3 自由软件:Linux及其他 22
1.6 小结 25
习题1 26
第2章 进程管理 27
2.1 进程的概念 27
2.1.1 程序的并发执行 27
2.1.2 进程的定义 31
2.1.3 进程的状态及其转换 32
2.1.4 进程控制块 34
2.1.5 进程的特性 35
2.2 进程控制 36
2.3.1 临界资源与临界区 38
2.3 进程互斥与同步 38
2.3.2 互斥工具 39
2.3.3 同步机制 43
2.3.4 经典同步问题 47
2.4 进程通信 55
2.4.1 共享存储 55
2.4.2 消息传递 56
2.4.3 共享文件 58
2.5 进程调度 59
2.5.1 进程调度的基本概念 59
2.5.2 进程调度算法 60
2.6.1 死锁的概念 63
2.6 死锁 63
2.6.2 死锁的预防 65
2.6.3 死锁的避免 66
2.6.4 死锁的检测 67
2.6.5 死锁的解除 70
2.7 线程的概念及其实现 70
2.7.1 线程的引入 71
2.7.2 进程与线程的关系 71
2.7.3 线程的状态及转换 72
2.7.4 线程调度 73
2.7.5 线程通信 73
2.7.6 多线程应用举例 75
2.8 Linux中的进程 76
2.8.1 Linux进程控制块PCB 76
2.8.2 进程的创建 82
2.8.3 进程调度 83
2.8.4 进程的退出与消亡 85
2.8.5 相关的系统调用 86
2.8.6 信号 87
2.8.7 信号量与P/V操作 89
2.8.8 等待队列 90
2.8.9 管道 90
2.8.10 Linux内核体系结构 92
2.8.11 并发程序设计实例 92
2.9 小结 94
习题2 95
第3章 存储管理 97
3.1 概述 98
3.1.1 存储管理的功能 98
3.1.2 内存的分配与回收 98
3.1.3 地址重定位 98
3.1.4 存储保护 100
3.1.5 虚拟存储器 101
3.2 连续存储管理 102
3.2.1 固定分区存储管理 102
3.2.2 可变式分区存储管理 103
3.3 分页式存储管理 108
3.3.1 分页式存储管理中存储块的分配与回收 109
3.3.2 分页式存储管理的地址重定位 110
3.3.3 联想存储器 111
3.3.4 存储保护 112
3.4 分段式存储管理 112
3.4.1 分段式存储管理的基本思想 112
3.4.2 分段式存储管理的地址重定位 113
3.4.3 分段与分页的区别 114
3.5 段页式存储管理 114
3.6 虚拟存储器管理 116
3.6.1 虚拟存储器的概念 116
3.6.2 请求页式存储管理 116
3.6.3 页面置换算法 118
3.6.4 请求段式存储管理 121
3.7 各种存储分配策略的比较 123
3.8 Linux存储管理 125
3.8.1 Linux存储管理概述 125
3.8.2 内存分配 126
3.8.3 请求调页 128
3.8.4 页面交换 129
3.9 小结 130
习题3 131
4.1 文件系统概述 132
4.1.1 文件及文件系统 132
第4章 文件管理 132
4.1.2 文件类型 134
4.1.3 文件的操作 135
4.2 文件的组织结构及存取方法 136
4.2.1 文件的逻辑结构 136
4.2.2 文件的物理结构 136
4.2.3 文件的存取方法 138
4.3 文件存储空间管理 139
4.3.1 磁盘空闲空间分配策略 140
4.3.2 空闲空间管理 142
4.4 文件目录管理 145
4.4.1 文件目录概念 145
4.4.2 文件目录结构 146
4.4.3 文件目录操作 149
4.5 文件的安全与保护 150
4.5.1 用户认证 151
4.5.2 保护域 152
4.5.3 存取控制 153
4.5.4 存取权限 154
4.5.5 保护模型 154
4.5.6 隐藏通道 156
4.6 文件系统性能改善 157
4.7 Linux中的文件系统 159
4.7.1 虚拟文件系统VFS 159
4.7.2 Linux虚拟文件系统的数据结构 161
4.7.3 对虚拟文件系统的管理 162
4.7.4 EXT2文件系统 163
4.7.5 EXT2磁盘重要数据结构 165
4.7.6 EXT3文件系统 173
4.8 小结 175
习题4 176
第5章 设备管理 177
5.1 设备管理概述 177
5.2 输入/输出硬件组织 179
5.2.1 输入/输出设备的分类 179
5.2.2 设备控制器 180
5.2.3 通道 182
5.3 输入/输出软件组织 183
5.3.1 输入/输出软件的层次结构 184
5.3.2 中断处理程序 184
5.3.3 设备驱动程序 186
5.3.4 与设备无关的I/O软件 187
5.3.5 用户层的I/O软件 189
5.4 缓冲技术 190
5.4.1 缓冲技术的引入 190
5.4.2 单缓冲 190
5.4.3 双缓冲 191
5.4.4 缓冲池 192
5.5.1 设备分配所用的数据结构 193
5.5 设备的分配与回收 193
5.5.2 设备分配与回收 197
5.6 Linux设备管理 199
5.6.1 Linux设备管理基础 200
5.6.2 Linux设备驱动程序 203
5.6.3 Linux的中断处理 205
5.7 设备驱动程序的设计 206
5.7.1 设备驱动程序的统一模型与其性能的一般指南 206
5.7.2 Linux下PCI设备驱动程序的设计 208
5.8 小结 215
习题5 216
6.1.1 网络拓扑结构 217
第6章 网络操作系统 217
6.1 网络操作系统概述 217
6.1.2 通信与协议 221
6.1.3 网络操作系统的功能和构成 226
6.1.4 Linux网络操作系统的实现 228
6.2 网络通信技术 230
6.2.1 原语通信 230
6.2.2 远程过程调用 231
6.3 网络资源共享技术 233
6.3.1 网络资源共享的概念 233
6.3.2 硬盘共享 233
6.3.3 打印机共享 235
6.3.4 数据和文件资源的共享 236
6.3.5 在混合网络中访问网络资源 237
6.4 网络文件系统 238
6.4.1 网络文件系统的概述 238
6.4.2 网络文件系统的实现 239
6.4.3 Linux网络文件系统的体系结构 240
6.4.4 Linux网络文件系统的安装 242
6.5 小结 243
习题6 244
附录A 缩略词 245
附录B Linux系统常用系统调用 250
参考文献 257