第1章 绪论 1
1.1 什么是操作系统 1
1.1.1 计算机系统的软件构成 1
1.1.2 操作系统作为特殊子程序 2
1.1.3 操作系统作为资源管理者 3
1.1.4 操作系统提供程序并发运行机制 4
1.2 操作系统的发展历史 5
1.2.1 监督程序 5
1.2.2 专用操作系统 8
1.2.3 多种方式操作系统 13
1.2.4 PC操作系统、并行与分布式操作系统及发展 13
1.3 主要操作系统介绍 14
1.3.1 Windows系列及MS DOS 15
1.3.2 UNIX大家族(SVR4,BSD,Solaris,AIX,HP UX) 17
1.3.3 自由软件Linux和freeBSD等 21
习题1 25
第2章 操作系统运行机制与用户界面 26
2.1 中断和异常 26
2.1.1 中断和异常的区别 26
2.1.2 中断的分级 27
2.2 中断/异常响应和处理 29
2.2.1 中断/异常响应 29
2.2.2 中断/异常处理 31
2.3 操作系统运行模型 34
2.4 系统调用 36
2.5 人机界面 40
2.5.1 命令语言 40
2.5.2 图形化的用户界面 42
2.6 小结 44
习题2 44
第3章 进程与处理机管理 45
3.1 进程描述 45
3.1.1 进程定义 46
3.1.2 进程控制块 47
3.2 进程状态 49
3.2.1 进程的创建与结束 50
3.2.2 进程状态变化模型 51
3.2.3 进程挂起 53
3.3 进程控制与调度 55
3.3.1 进程执行 55
3.3.2 进程调度 57
3.3.3 调度算法 60
3.4 作业与进程的关系 64
3.5 线程的引入 66
3.6 小结 68
习题3 68
第4章 进程同步与通信、进程死锁 70
4.1 并发执行的实现 70
4.1.1 并发编程方法 70
4.1.2 并发执行的实现 71
4.2 进程的同步与互斥 72
4.2.1 同步与临界段问题 73
4.2.2 解决临界段问题的硬件实现方法 74
4.2.3 信号量 76
4.2.4 管程 79
4.2.5 进程同步与互斥举例 80
4.3 消息传递原理 84
4.3.1 消息传递通信原理 84
4.3.2 消息传递通信示例 85
4.3.3 管道通信简介 87
4.4 死锁 87
4.4.1 死锁示例 87
4.4.2 死锁定义 89
4.4.3 死锁防止 92
4.4.4 死锁避免 93
4.4.5 死锁检测 95
4.4.6 死锁的恢复 97
4.4.7 死锁综合处理 97
4.5 小结 98
习题4 99
第5章 存储管理 103
5.1 连续空间分配 103
5.1.1 单道连续分配 103
5.1.2 多道固定分区法 106
5.1.3 多道连续可变分区法 107
5.2 不连续空间分配 110
5.2.1 页式管理 110
5.2.2 段式管理 114
5.2.3 段页式管理 116
5.2.4 改进的页式管理 118
5.3 虚拟存储管理 118
5.3.1 页式虚存的基本思想 119
5.3.2 页式虚存管理实现 119
5.3.3 多级页表 122
5.3.4 页面替换策略 124
5.4 小结 130
习题5 131
第6章 设备管理 134
6.1 I/O硬件概念 134
6.1.1 常见外部设备分类 134
6.1.2 设备控制器(I/O部件) 135
6.1.3 I/O控制方式 136
6.1.4 I/O控制方式的发展过程 139
6.2 设备I/O子系统 139
6.2.1 设备的使用方法 139
6.2.2 I/O层次结构 142
6.2.3 设备驱动程序 144
6.2.4 缓冲技术 147
6.3 存储设备 150
6.3.1 常见存储外部设备 150
6.3.2 磁盘调度 153
6.3.3 磁盘阵列 156
6.4 小结 160
习题6 161
第7章 文件系统 162
7.1 文件结构 162
7.1.1 文件概念 162
7.1.2 文件的逻辑结构 163
7.1.3 文件的物理存储 164
7.1.4 文件控制块 166
7.2 文件目录结构 167
7.2.1 一级目录结构 167
7.2.2 二级目录结构 168
7.2.3 树形目录结构 169
7.2.4 无环图目录结构 170
7.2.5 目录操作 171
7.3 文件存储器空间布局与管理 171
7.4 文件访问接口 173
7.4.1 传统文件系统调用的实现 173
7.4.2 存储映像文件访问 175
7.5 文件保护 176
7.5.1 文件访问保护 176
7.5.2 文件备份 178
7.6 文件系统的基本模型 179
7.7 FAT文件系统磁盘布局 182
7.8 小结 183
习题7 184
第8章 并行与分布式操作系统 185
8.1 并行操作系统 185
8.1.1 对称多处理机 185
8.1.2 线程概念 187
8.1.3 线程实现 193
8.1.4 线程调度 198
8.2 分布式系统 202
8.2.1 分布式系统特点 203
8.2.2 几种分布式应用模型 205
8.2.3 分布式系统实现模型 208
8.2.4 分布式操作系统主要研究内容 210
8.2.5 分布式系统基础——通信协议层次简介 211
8.3 小结 214
习题8 215
第9章 保护与安全 216
9.1 安全威胁 216
9.1.1 病毒 216
9.1.2 蠕虫 217
9.1.3 特洛伊木马 217
9.1.4 隐蔽通道 218
9.2 安全机制 218
9.2.1 硬件保护机制 219
9.2.2 标识与鉴别 219
9.2.3 存取控制 221
9.2.4 最小特权管理 222
9.2.5 安全审计 223
9.2.6 入侵检测 224
9.2.7 网络信息安全技术 225
9.3 Linux的安全机制 228
9.4 安全评测标准 230
9.4.1 TCSEC橘皮书 230
9.4.2 中国国标GB17859-1999 232
9.5 小结 232
习题9 233
第10章 系统虚拟机 234
10.1 虚拟机概述 234
10.1.1 为什么需要虚拟机 234
10.1.2 虚拟机管理器的分类 235
10.1.3 系统虚拟化的优势及发展目标 235
10.1.4 虚拟机管理器的架构 236
10.2 CPU的虚拟化 237
10.2.1 软件完全虚拟化 237
10.2.2 硬件辅助虚拟化 238
10.3 内存虚拟化 239
10.3.1 软件实现内存虚拟化 239
10.3.2 EPT页表辅助内存虚拟化 240
10.4 I/O的虚拟化 240
10.4.1 完全的软件I/O虚拟化 241
10.4.2 半虚拟化设备 241
10.5 小结 242
习题10 243
第11章 Linux操作系统实例 244
11.1 进程管理 244
11.1.1 进程与进程描述符 244
11.1.2 进程状态及切换时机 245
11.1.3 进程的调度算法 247
11.1.4 进程的创建与消亡 248
11.2 存储管理 250
11.2.1 物理内存的管理 250
11.2.2 进程地址空间的管理 253
11.3 文件系统 256
11.3.1 VFS 256
11.3.2 EXT2文件系统 262
11.3.3 主要文件系统中系统调用的处理流程 266
11.4 设备管理 268
11.4.1 设备文件的概念 268
11.4.2 设备模型基础 269
11.4.3 相关数据结构 269
11.4.4 块设备文件的open(),read()操作 272
11.5 中断、异常及系统调用 273
11.5.1 中断/异常的基本知识 274
11.5.2 异常处理函数 274
11.5.3 系统调用 275
11.5.4 中断的处理 275
11.5.5 软中断 278
11.6 SysV进程间通信 279
11.6.1 共有的特性 279
11.6.2 信号量 281
11.6.3 消息队列 283
11.6.4 共享内存 284
习题11 287
附录A bash脚本编程简介 288
A.1 注释和简单命令 288
A.2 环境变量 288
A.3 控制结构 289
A.3.1 if语句 289
A.3.2 case语句 290
A.3.3 for语句 291
A.3.4 while语句和until语句 291
A.4 函数 292
A.5 小结 293
附录B 实现一个简单的Linux命令解释器 294
B.1 myshell的语法 294
B.2 程序框架 294
B.3 命令行的语法分析 295
B.4 简单命令的执行 298
B.5 Makefile 298
B.6 小结 298
附录C Linux常用命令 299
C.1 用户终端命令 299
C.2 vi编辑器的使用 307
附录D Linux常用函数 309
D.1 进程管理函数 309
D.2 文件管理函数 311
D.3 进程间通信函数 313
D.4 多线程库函数 316
参考文献 318