第1章 操作系统概述 1
1.1 操作系统的概念 1
1.2 操作系统的发展历史 2
1.3 操作系统的类型 6
1.4 操作系统的硬件环境 8
1.4.1 受保护的指令 8
1.4.2 系统调用 9
1.4.3 内存保护 10
1.4.4 中断机制 10
习题 11
第2章 进程管理 13
2.1 进程 13
2.1.1 为何引入进程 13
2.1.2 什么是进程 14
2.1.3 进程的特性 15
2.1.4 进程的创建与终止 16
2.1.5 进程的状态 17
2.1.6 状态队列 21
2.2 线程 22
2.2.1 线程的概念 22
2.2.2 线程的实现 24
2.2.3 一个例子 25
2.3 进程间通信与同步 27
2.3.1 进程间通信方式 28
2.3.2 进程的互斥 29
2.3.3 基于关闭中断的互斥实现 31
2.3.4 基于繁忙等待的互斥实现 32
2.3.5 信号量 35
2.3.6 进程的同步 37
2.4 经典的IPC问题 41
2.4.1 生产者-消费者问题 41
2.4.2 哲学家就餐问题 42
2.4.3 读者-写者问题 46
2.5 进程调度 47
2.5.1 关于调度的若干问题 48
2.5.2 批处理系统中的调度算法 51
2.5.3 交互式系统中的调度算法 55
2.5.4 实时系统中的调度算法 60
习题 60
第3章 死锁 67
3.1 死锁概述 67
3.1.1 什么是死锁 67
3.1.2 资源 68
3.1.3 死锁的模型 69
3.2 死锁的检测和解除 71
3.2.1 死锁检测算法 71
3.2.2 死锁的解除 72
3.3 死锁的避免 73
3.3.1 资源轨迹图 74
3.3.2 安全状态与不安全状态 75
3.3.3 银行家算法 77
3.4 死锁的预防 80
习题 81
第4章 存储管理 84
4.1 单道程序存储管理 85
4.2 分区存储管理 87
4.2.1 固定分区存储管理 87
4.2.2 可变分区存储管理 89
4.2.3 可变分区的实现 90
4.2.4 内存中的程序执行 94
4.2.5 重定位和存储保护 96
4.3 页式和段式存储管理 99
4.3.1 页式存储管理 99
4.3.2 段式存储管理 106
4.3.3 页式管理与段式管理的比较 111
4.3.4 段页式存储管理 112
4.4 覆盖技术与交换技术 113
4.4.1 覆盖技术 114
4.4.2 交换技术 115
4.5 虚拟存储技术 116
4.5.1 程序的局部性原理 117
4.5.2 虚拟存储技术的原理 117
4.5.3 虚拟页式存储管理 118
4.5.4 页面置换算法 122
4.5.5 工作集模型 129
4.5.6 虚拟页式的设计问题 131
4.5.7 虚拟段式存储管理 137
习是题 138
第5章 I/O设备管理 147
5.1 I/O硬件 147
5.1.1 I/O设备的类型 148
5.1.2 设备控制器 148
5.1.3 I/O地址 149
5.2 I/O控制方式 153
5.2.1 程序循环检测方式 153
5.2.2 中断驱动方式 155
5.2.3 直接内存访问方式 158
5.3 I/O软件 161
5.3.1 I/O软件的接口 161
5.3.2 I/O软件的层次结构 166
5.4 磁盘 173
5.4.1 磁盘的硬件 173
5.4.2 磁盘格式化 176
5.4.3 磁盘调度算法 177
5.4.4 出错处理 180
习题 181
第6章 文件系统 185
6.1 文件 186
6.1.1 文件的基本概念 186
6.1.2 文件的使用 189
6.2 目录 189
6.2.1 目录的基本概念 189
6.2.2 目录的结构 190
6.3 文件系统的实现 193
6.3.1 文件系统的布局 194
6.3.2 文件的实现 195
6.3.3 目录的实现 201
6.3.4 系统调用的实现 203
6.3.5 空闲空间管理 207
习题 209
参考文献 213