第1章 绪论 1
1.1操作系统概述 1
1.1.1操作系统的定义 1
1.1.2操作系统的功能 2
1.2操作系统的发展过程 3
1.2.1第一代计算机(1946—1955):真空管和插接板 3
1.2.2第二代计算机(1956—1965):晶体管和批处理系统 3
1.2.3第三代计算机(1966—1980):集成电路和多道程序 4
1.2.4第四代计算机(1981一现在):大规模集成电路 7
1.3操作系统的结构 10
1.3.1整体结构的操作系统 11
1.3.2分层操作系统 11
1.3.3微内核结构 12
1.4操作系统的特征 13
1.4.1并发性 13
1.4.2共享性 14
1.4.3异步性 14
1.4.4虚拟性 14
1.5 UNIX系统简介 15
1.5.1 UNIX综述 15
1.5.2 UNIX内核功能 18
本章小结 20
习题 21
第2章 处理机管理 22
2.1多道程序设计 22
2.1.1单道程序的顺序执行 23
2.1.2多道程序的并发执行 23
2.2进程的基本概念 24
2.2.1进程的定义 25
2.2.2进程的属性 26
2.2.3进程与程序的关系 26
2.3进程的状态及转换 27
2.3.1进程的基本状态及转换 27
2.3.2具有挂起功能的进程状态及转换 28
2.4作业的基本概念 29
2.4.1作业的定义 29
2.4.2作业与进程的关系 30
2.4.3作业的状态及转换 31
2.5进程的描述与上下文 31
2.5.1进程控制块 32
2.5.2进程上下文 33
2.6进程的控制 34
2.6.1进程控制机构 34
2.6.2进程控制原语 35
2.7线程 37
2.7.1线程的概念 37
2.7.2线程与进程的关系 38
2.7.3线程的实现 39
2.8处理机调度的原理 41
2.8.1处理机的4级调度 41
2.8.2处理机调度的目标 43
2.8.3处理机调度的方式 45
2.8.4处理机调度的时机 45
2.9调度算法 46
2.9.1先来先服务 46
2.9.2最短周期优先 47
2.9.3最高优先级优先 47
2.9.4时间片轮转算法 48
2.9.5多级反馈队列 49
2.9.6实时调度 50
2.10 UNIX系统进程的结构 51
2.10.1 UNIX进程控制块 51
2.10.2 UNIX进程上下文 55
2.10.3 UNIX进程状态及转换 56
2.11 UNIX系统进程上下文的保存与切换 58
2.11.1中断与异常 58
2.11.2系统调用接口 58
2.11.3上下文切换 59
2.12 UNIX系统进程控制 60
2.12.1进程树 60
2.12.2进程的创建 60
2.12.3执行一个文件 62
2.12.4进程的睡眠与唤醒 65
2.12.5进程的终止 68
2.12.6等待子进程终止 68
2.13 UNIX系统进程调度 69
2.13.1 UNIX系统调度的原理 70
2.13.2 UNIX系统调度的实现 71
本章小结 73
实习项目 74
习题 75
第3章 进程同步与通信 79
3.1进程的并发执行 79
3.1.1与时间有关的错误 79
3.1.2 Bernstein条件 80
3.1.3临界资源与临界区 81
3.2进程的互斥 83
3.2.1软件实现方法 83
3.2.2硬件实现方法 85
3.3进程的同步 86
3.3.1同步的概念 86
3.3.2同步的实现方法 87
3.3.3生产者-消费者问题 88
3.4信号量 89
3.4.1信号量的原理 89
3.4.2用信号量实现进程的互斥 91
3.4.3用信号量实现进程的同步 92
3.4.4用信号量解决生产者-消费者问题 93
3.4.5信号量小结及其不足 95
3.5管程 95
3.5.1管程的定义、结构和原理 96
3.5.2用管程解决生产者-消费者问题 99
3.5.3管程的不足 101
3.6进程的高级通信 101
3.6.1消息缓冲机制 102
3.6.2邮箱机制 104
3.6.3共享存储区 105
3.6.4管道 106
3.7死锁 107
3.7.1什么是死锁 109
3.7.2死锁的表示 111
3.7.3死锁的检测和清除 113
3.7.4死锁的预防 115
3.7.5死锁的避免 117
3.8经典同步与互斥问题 121
3.8.1哲学家进餐问题 121
3.8.2读者-写者问题 123
3.9 UNIX系统软中断 124
3.9.1软中断的检测与处理的时机 124
3.9.2软中断的种类 124
3.9.3软中断的检测与处理 126
3.10 UNIX系统管道 130
3.10.1无名管道 130
3.10.2有名管道 132
3.11 UNIX系统进程间通信IPC 132
3.11.1消息机制 133
3.11.2共享存储区机制 137
3.11.3信号量机制 140
本章小结 144
实习项目 146
习题 146
第4章 存储管理 151
4.1存储管理的基本功能 151
4.1.1转换 151
4.1.2存储保护和共享 154
4.1.3内存分配回收 154
4.1.4内存扩充 155
4.2分区存储管理 155
4.2.1固定分区 155
4.2.2动态分区 156
4.2.3地址转换和存储保护 158
4.2.4存储共享 159
4.2.5分配和回收算法 159
4.2.6覆盖和交换 162
4.2.7分区存储管理的优缺点 163
4.3分页式存储管理 164
4.3.1基本原理 164
4.3.2数据结构 164
4.3.3地址转换和存储保护 166
4.3.4存储共享 167
4.3.5分配算法 168
4.3.6分页式存储管理的优缺点 168
4.4分段式存储管理 168
4.4.1基本原理 168
4.4.2地址转换和存储保护 169
4.4.3存储共享 171
4.4.4分段式存储管理的优缺点 171
4.5段页式存储管理 172
4.5.1基本原理 172
4.5.2地址转换 172
4.5.3段页式存储管理的优缺点 174
4.6虚拟存储管理 174
4.6.1虚拟存储器的概念 174
4.6.2请求分页式虚拟存储管理 175
4.6.3请求分段式虚拟存储管理 180
4.6.4请求段页式虚拟存储管理 181
4.7 UNIX存储管理 182
4.8 UNIX系统进程的虚拟地址空间 183
4.8.1区 183
4.8.2页和页表 184
4.8.3对进程虚拟地址空间的操作 185
4.9 UNIX系统交换 192
4.9.1交换空间的管理 192
4.9.2进程的换出 195
4.9.3进程的换入 197
4.9.4进程交换的实现 198
4.10 UNIX系统进程正文段的共享 202
4.10.1数据结构 202
4.10.2算法 203
4.11 UNIX系统请求调页 206
4.11.1基本原理 206
4.11.2数据结构 206
4.11.3动态地址变换 208
4.11.4页故障 209
4.11.5换页进程 213
4.12 UNIX系统中交换策略与请求调页策略的结合 215
本章小结 216
实习项目 217
习题 217
第5章 文件系统 222
5.1文件和文件系统 222
5.1.1文件的概念 222
5.1.2文件命名 223
5.1.3文件类型 223
5.1.4文件属性 224
5.1.5文件系统的概念 225
5.2文件组织、存取方法和存取设备 225
5.2.1文件的逻辑结构 226
5.2.2文件的物理结构 228
5.2.3文件的存取方法 231
5.2.4文件的存储设备 233
5.3文件目录 233
5.3.1一级目录结构 234
5.3.2二级目录结构 235
5.3.3树状目录结构 235
5.4文件共享与保护 236
5.4.1文件共享 236
5.4.2文件保护 238
5.5文件系统其他功能的实现 239
5.5.1文件操作 239
5.5.2文件系统的层次模型 240
5.5.3外存空间管理 241
5.5.4虚拟文件系统 242
5.6 UNIX文件系统概述 243
5.7 UNIX文件系统的数据结构 244
5.7.1文件系统的存储结构 244
5.7.2i节点 244
5.7.3目录文件 247
5.7.4超级块 247
5.7.5用户打开文件表 248
5.7.6系统打开文件表 248
5.7.7安装表 249
5.7.8各数据结构间的关系 250
5.8 UNIX文件系统的存储资源管理 252
5.8.1空闲块的管理 252
5.8.2磁盘i节点的管理 256
5.8.3内存i节点的管理 260
5.8.4文件表的管理 263
5.9 UNIX正规文件的物理结构 264
5.9.1地址索引表 264
5.9.2地址映射 266
5.10 UNIX目录文件 269
5.11 UNIX中与文件有关的系统调用 271
本章小结 272
实习项目 273
习题 273
第6章 设备管理 277
6.1概述 277
6.1.1设备分类 277
6.1.2 I/O设备管理的目标和功能 278
6.1.3设备控制器 279
6.2 I/O控制方式 280
6.2.1程序直接控制方式 282
6.2.2中断控制方式 283
6.2.3 DMA方式 284
6.2.4通道方式 286
6.3 I/O软件 288
6.3.1 I/O中断处理程序 289
6.3.2 I/O设备驱动程序 289
6.3.3与设备无关的操作系统I/O软件 290
6.3.4用户层I/O软件 291
6.4缓冲技术 291
6.4.1缓冲的引入 291
6.4.2缓冲的类型 292
6.5设备分配技术 294
6.5.1设备分配的策略 294
6.5.2 SPOOLing技术 295
6.6 UNIX设备管理概述 296
6.7 UNIX系统中断和异常 297
6.7.1中断的分类 297
6.7.2异常的分类 298
6.7.3中断和异常的处理 298
6.8 UNIX系统缓冲区管理 303
6.8.1缓冲池结构 303
6.8.2缓冲区的分配与释放 306
6.8.3块的读写 307
6.9 UNIX系统设备驱动程序的接口 311
6.9.1设备开关表 311
6.9.2设备驱动程序的接口 312
6.9.3系统调用与驱动程序的接口 313
6.9.4中断处理程序 317
6.10 UNIX系统字符设备驱动 317
6.10.1数据结构 317
6.10.2对字符缓冲区队列的操作 318
6.10.3终端设备驱动 325
6.11 UNIX系统块设备驱动 334
本章小结 336
实习项目 336
习题 337
第7章UNIX操作系统的用户接口 339
7.1系统调用 339
7.2 shell进程 343
7.2.1 shell概述 343
7.2.2 shell流程 343
7.2.3 shell进程的生成 345
7.3 shell常用命令 346
7.3.1与用户有关的命令 346
7.3.2与文件系统有关的命令 347
7.3.3进程与通信命令 351
7.3.4后台命令 353
7.3.5管道与重定向命令 353
7.4 shell程序语言 354
本章小结 356
实习项目 357
习题 357
参考文献 359