第1章 操作系统概述 1
1.1 操作系统的概念 1
1.1.1 计算机硬件结构 2
1.1.2 系统初启一般过程 3
1.1.3 什么是操作系统 3
1.1.4 操作系统的目标和地位 5
1.1.5 操作系统的特征和服务 7
1.2 操作系统的主要功能 9
1.3 操作系统的形成和基本类型 12
1.3.1 操作系统的形成和发展 12
1.3.2 操作系统的基本类型 15
1.4 操作系统的主要结构 17
1.5 UNIX和Linux系统的核心结构 20
小结 22
习题 23
第2章 进程管理 24
2.1 进程的概念 24
2.1.1 程序顺序执行的特征 24
2.1.2 程序并发执行及其特征 25
2.1.3 进程概念的引入和定义 26
2.2 进程状态描述及组织方式 29
2.2.1 进程的状态及其转换 29
2.2.2 进程的组成 30
2.2.3 进程组织方式 31
2.3 进程管理和有关命令 33
2.3.1 进程图和进程管理 33
2.3.2 Linux进程管理 35
2.3.3 有关进程操作的命令 37
2.3.4 有关进程管理的系统调用 40
2.4 线程概念 42
2.4.1 什么是线程 43
2.4.2 线程的实现方式 45
2.5 进程间的同步与互斥 46
2.5.1 进程间的关系 46
2.5.2 竞争条件和临界区 48
2.5.3 进程同步机制 49
2.5.4 信号量的一般应用 51
2.6 进程通信 54
2.7 管程 58
2.8 经典进程同步问题 59
2.9 死锁 63
2.9.1 死锁概述 63
2.9.2 死锁的预防 66
2.9.3 死锁的避免 67
2.9.4 死锁的检测和恢复 71
2.9.5 活锁和饥饿 73
小结 74
习题 75
第3章 处理机调度 78
3.1 调度的作用和级别 78
3.2 作业调度 79
3.2.1 作业状态 79
3.2.2 作业管理和调度 80
3.3 进程调度 81
3.3.1 进程调度的功能和时机 81
3.3.2 两级调度模型 82
3.3.3 三级调度模型 83
3.4 调度性能的评价 83
3.4.1 调度策略的选择 83
3.4.2 性能评价标准 84
3.5 常用调度算法 85
3.6 实时调度 89
3.7 Linux系统中的进程调度 90
3.7.1 Linux进程调度方式 90
3.7.2 Linux常用调度命令 92
3.8 中断处理和系统调用 94
3.8.1 中断处理的一般过程 94
3.8.2 系统调用处理 99
3.9 shell基本工作原理 102
小结 103
习题 104
第4章 存储管理 106
4.1 地址空间与重定位 106
4.1.1 用户程序的地址空间 107
4.1.2 重定位概念 108
4.1.3 对换技术 109
4.2 分区管理技术 110
4.2.1 分区法 110
4.2.2 可重定位分区分配 114
4.3 分页技术 115
4.3.1 分页的基本概念 115
4.3.2 分页系统中的地址映射 117
4.3.3 页的共享和保护 118
4.3.4 页表的构造 119
4.4 分段技术 121
4.4.1 分段的基本概念 122
4.4.2 分段系统中的地址映射 123
4.4.3 段的共享和保护 124
4.5 虚拟存储管理 125
4.5.1 虚拟存储器的概念 125
4.5.2 虚拟存储器的特征 126
4.6 请求分页技术 127
4.6.1 请求分页的基本思想 127
4.6.2 硬件支持及缺页处理 127
4.6.3 页面置换算法 130
4.7 内存块分配和抖动问题 134
4.7.1 内存块分配 134
4.7.2 抖动问题 136
4.7.3 工作集 136
4.8 段式虚拟存储器 137
4.8.1 基本工作过程 138
4.8.2 动态链接和链接中断处理 138
4.9 段页式结合系统 139
4.10 Linux系统的存储管理技术 140
4.10.1 对换 140
4.10.2 请求分页技术 141
小结 143
习题 144
第5章 文件系统 146
5.1 文件系统概述 146
5.1.1 文件及其分类 147
5.1.2 文件系统的功能 149
5.2 文件的逻辑组织和物理组织 150
5.2.1 文件的逻辑组织 150
5.2.2 用户对文件的存取方法 151
5.2.3 文件的物理组织 153
5.3 目录文件 157
5.3.1 文件控制块和文件目录 157
5.3.2 目录结构 158
5.4 文件存储空间的管理 162
5.5 文件系统的可靠性 165
5.5.1 坏块管理 165
5.5.2 文件的后备和恢复 165
5.5.3 文件系统的一致性 167
5.6 文件共享和保护 168
5.6.1 文件共享 168
5.6.2 文件保护 170
5.7 Linux文件系统 172
5.7.1 文件系统的格式 172
5.7.2 虚拟文件系统 175
5.7.3 管道文件 177
5.7.4 对文件的主要操作 178
小结 180
习题 181
第6章 设备管理 183
6.1 设备管理概述 183
6.1.1 设备分类和标识 183
6.1.2 I/O系统结构 185
6.1.3 直接存储器访问方式 187
6.1.4 缓冲技术 188
6.1.5 设备管理的功能 190
6.2 设备分配技术 191
6.2.1 设备分配技术和算法 191
6.2.2 SPOOLing系统 193
6.3 I/O软件构造原则 194
6.3.1 I/O软件目标 194
6.3.2 设备驱动程序 195
6.3.3 与设备无关的I/O软件 197
6.3.4 用户空间I/O软件 198
6.3.5 处理输入输出请求的步骤 199
6.4 磁盘调度和管理 200
6.4.1 磁盘硬件 200
6.4.2 磁盘调度算法 201
6.5 Linux系统设备管理 203
6.5.1 设备管理概述 203
6.5.2 设备驱动程序与内核间的接口 204
小结 207
习题 207
第7章 操作系统的发展和安全性 209
7.1 现代操作系统发展概述 209
7.1.1 推动操作系统发展的动力 209
7.1.2 现代操作系统的发展 210
7.2 系统安全性 219
7.2.1 信息安全问题 219
7.2.2 一般性安全机制 220
7.2.3 保护机制 222
7.3 系统性能评价 226
小结 229
习题 230
附录A 实验指导 231
附录B 部分习题参考答案 243
附录C Linux常用系统调用 257
附录D Linux常用命令 263
参考文献 269