第1章 操作系统引论 1
1.1 操作系统的功能和特征 1
1.1.1 操作系统的功能 1
1.1.2 操作系统的外特征 5
1.1.3 操作系统的微观特征 7
1.1.4 操作系统的基本技术 9
1.1.5 多道程序设计的实现 9
1.2 操作系统发展简史 10
1.2.1 从无助的人工操作到作业自动定序 10
1.2.2 20世纪60年代中期的IBM OS/360 13
1.2.3 从CTSS、MULTICS到UNIX 14
1.2.4 个人计算机上的DOS和Windows 16
1.2.5 云计算时代的操作系统 18
1.2.6 操作系统的发展动力 24
1.3 操作系统的基本类型 25
1.3.1 批处理系统 25
1.3.2 分时系统 26
1.3.3 实时系统 27
1.3.4 个人机操作系统 27
1.3.5 网络操作系统 28
1.3.6 分布式操作系统 28
1.3.7 云操作系统 28
1.4 操作系统结构 29
1.4.1 整体式系统 29
1.4.2 层次式系统 30
1.4.3 虚拟机 31
1.4.4 客户机/服务器系统 33
1.4.5 云计算分布式系统结构 35
1.5 操作系统基本概念 36
1.6 重点演示和交互练习:多道程序设计 41
小结 42
习题 43
第2章 进程及其管理 47
2.1 进程的概念及其引入 47
2.1.1 并发程序的特征 47
2.1.2 进程的定义 48
2.1.3 进程与程序的联系和区别 49
2.2 进程的描写 49
2.2.1 进程实体 49
2.2.2 PCB 49
2.2.3 PCB队列 50
2.3 进程状态及转化 50
2.3.1 进程状态 50
2.3.2 进程状态转化 51
2.4 进程管理 51
2.4.1 进程管理原语 51
2.4.2 创建进程的时机 51
2.4.3 创建进程的基本操作 52
2.5 进程互斥与同步 52
2.5.1 进程互斥与同步的概念 52
2.5.2 临界区准则 53
2.5.3 临界区的软件解决方案 53
2.5.4 用屏蔽与开放中断指令实现临界区 54
2.5.5 上锁与解锁指令 55
2.5.6 信号量与P、V操作 55
2.5.7 经典同步问题 58
2.6 进程间的通信 62
2.6.1 软中断通信 62
2.6.2 共享存储区(剪贴板)通信 63
2.6.3 管道通信 64
2.6.4 消息通信 64
2.7 线程 66
2.7.1 线程概念的引入 67
2.7.2 线程与进程的比较 67
2.8 多核环境的进程同步 68
2.9 重点演示和交互练习:经典同步问题 69
2.9.1 生产者—消费者问题的Java程序实现 69
2.9.2 读者—写者问题的Java程序实现 70
2.9.3 哲学家就餐问题的Java程序实现 71
小结 72
习题 73
第3章 调度与死锁 77
3.1 概述 77
3.2 分级调度 78
3.2.1 高级调度 78
3.2.2 中级调度 78
3.2.3 低级调度 78
3.3 常用调度算法 80
3.3.1 FIFO调度算法 80
3.3.2 SJF调度算法 81
3.3.3 HRN调度算法 82
3.3.4 RR调度算法 83
3.3.5 优先级调度算法 83
3.3.6 多级反馈队列调度 84
3.4 死锁问题 86
3.4.1 产生死锁的必要条件 86
3.4.2 预防死锁 87
3.4.3 死锁避免及银行家算法 88
3.4.4 死锁的检测 90
3.5 重点演示和交互练习:优先级调度算法 91
小结 93
习题 94
第4章 存储器管理 97
4.1 概述 97
4.1.1 存储管理的基本任务 97
4.1.2 存储管理的基本概念 98
4.2 单一连续分配 99
4.2.1 存储区域分配 99
4.2.2 存储区域回收 99
4.3 分区管理 100
4.3.1 固定分区 100
4.3.2 可变分区 100
4.3.3 存储保护 101
4.4 分页管理 102
4.4.1 分页的概念 102
4.4.2 地址映射机构 103
4.4.3 地址变换 104
4.4.4 页的共享 105
4.4.5 保护机制 106
4.5 分段管理 107
4.5.1 分段地址空间 107
4.5.2 段表与地址变换 107
4.5.3 分段与分页的异同点 108
4.6 覆盖与对换 108
4.6.1 覆盖 108
4.6.2 对换 109
4.7 重点演示和交互练习:地址重定位 110
4.7.1 静态重定位 110
4.7.2 动态重定位 111
4.7.3 分页重定位 112
小结 113
习题 114
第5章 虚拟存储器 117
5.1 虚拟存储器的概念 117
5.1.1 分级存储体系 117
5.1.2 局部性原理 118
5.1.3 虚拟存储器 118
5.2 请求分页式虚拟存储管理 119
5.2.1 对页式存储技术的改进 119
5.2.2 缺页中断处理过程 119
5.2.3 工作集概念 119
5.3 页面淘汰算法 121
5.3.1 淘汰最老页面的FIFO算法 121
5.3.2 淘汰最近最少使用页面的LRU算法 121
5.3.3 OPT算法 123
5.4 段页式存储管理 123
5.4.1 基本概念 123
5.4.2 地址转换 124
5.4.3 管理算法 124
5.5 重点演示和交互练习:页面淘汰算法 125
小结 127
习题 127
第6章 设备管理 131
6.1 设备管理概述 131
6.1.1 输入输出的硬件组成 131
6.1.2 计算机设备分类 132
6.1.3 设备管理的功能 133
6.1.4 主要数据结构 134
6.2 缓冲技术 134
6.2.1 缓存的作用 134
6.2.2 管理缓冲存储 135
6.3 中断技术 136
6.3.1 中断的作用 136
6.3.2 中断处理过程 136
6.3.3 嵌套中断处理过程 137
6.4 SPOOLing技术 137
6.4.1 SPOOLing系统的一般结构 137
6.4.2 SPOOLing系统的工作原理 138
6.4.3 假脱机打印 138
6.4.4 SPOOLing系统的优点 138
6.5 设备驱动 139
6.5.1 逻辑设备和物理设备 140
6.5.2 设备状态监视 140
6.5.3 设备驱动程序 141
6.6 磁盘的特性及调度算法 141
6.6.1 活动头磁盘 141
6.6.2 磁盘的存取速度 142
6.6.3 FCFS调度算法 143
6.6.4 SCAN及其改进算法 143
6.7 用户请求输入输出的实现过程 144
6.8 重点演示和交互练习:中断过程、磁盘调度、输入输出实现过程 145
小结 145
习题 146
第7章 文件系统 149
7.1 文件与文件系统 149
7.1.1 文件 149
7.1.2 文件系统 149
7.1.3 文件系统模型 150
7.1.4 文件卷 151
7.2 文件的逻辑结构 152
7.2.1 记录式结构 152
7.2.2 流式结构 152
7.3 文件目录组织 152
7.3.1 文件目录 152
7.3.2 目录组织 153
7.3.3 目录检索 154
7.4 文件的物理结构 155
7.4.1 连续结构 155
7.4.2 链接结构 155
7.4.3 索引结构 156
7.5 文件存储空间管理 156
7.5.1 空白文件目录 156
7.5.2 位示图 157
7.5.3 空闲块链 157
7.6 文件保护 157
7.6.1 存取控制矩阵 157
7.6.2 存取控制表 157
7.6.3 口令 158
7.7 文件系统的系统调用 158
7.7.1 用户程序的接口 158
7.7.2 文件句柄 159
7.7.3 open的实现 160
7.8 重点演示和交互练习:写文件的实现过程 160
小结 162
习题 163
第8章 操作系统的安全性 165
8.1 问题的提出 165
8.1.1 信息系统面临日益严重的安全性挑战 165
8.1.2 操作系统的脆弱性 167
8.2 操作系统安全机制 169
8.2.1 操作系统的硬件保护 169
8.2.2 注册与身份验证 170
8.2.3 存取控制 172
8.2.4 最小特权原则 172
8.2.5 建立可信通道 174
8.2.6 消除隐蔽通道 174
8.2.7 安全审计 175
8.2.8 病毒防护 175
8.3 操作系统安全评测标准 176
8.3.1 主要的评测标准 176
8.3.2 美国评测标准介绍 178
8.3.3 中国评测标准 179
8.4 UNIX和Linux操作系统的安全性 180
8.4.1 标识与鉴别 181
8.4.2 存取控制 182
8.4.3 审计与加密 182
8.4.4 网络安全 185
8.4.5 备份和恢复 185
8.5 Windows 2000和Windows XP操作系统安全性 186
8.5.1 安全模型 186
8.5.2 文件保护及防盗版安全机制 190
小结 191
习题 192
第9章 UNIX和Linux实例分析 193
9.1 系统结构 193
9.1.1 UNIX的特点 193
9.1.2 UNIX系统结构 193
9.1.3 UNIX系统的主要数据结构 195
9.2 进程管理 195
9.2.1 进程数据结构 195
9.2.2 进程状态 195
9.2.3 进程的产生与进程族系 196
9.2.4 管道通信机制 197
9.3 内存管理 200
9.3.1 支持虚存和分段 200
9.3.2 swap交换技术 200
9.4 文件管理 201
9.4.1 文件分类 202
9.4.2 树状层次目录 202
9.4.3 文件空间的组织 203
9.4.4 空闲块的管理 205
9.4.5 有关文件操作的系统调用 207
9.5 设备缓冲管理 211
9.5.1 块缓冲与字符缓冲 211
9.5.2 块缓冲队列管理 211
9.5.3 字符缓冲队列管理 213
9.6 shell程序设计 213
9.6.1 概述 213
9.6.2 shell命令及命令的解释执行 214
9.6.3 shell程序设计 217
9.6.4 shell程序实例 220
9.7 Linux 222
9.7.1 Linux的历史 222
9.7.2 Linux内核 223
9.7.3 Linux进程 223
9.7.4 Linux文件系统 223
9.7.5 Linux磁盘分区 224
9.8 重点演示和交互练习:文件块的多重索引物理结构 224
小结 225
习题 227
第10章 Windows 2000和Windows XP实例分析 229
10.1 模型与结构 229
10.1.1 客户机/服务器模型 229
10.1.2 对象模型 230
10.1.3 对称多处理器模型 230
10.1.4 系统结构 231
10.1.5 注册表 233
10.2 对象、进程和线程 234
10.2.1 对象 234
10.2.2 进程 234
10.2.3 线程 236
10.2.4 对象、进程、线程的关系 238
10.3 系统微内核 238
10.3.1 内核概述 238
10.3.2 内核的线程安排与调度 239
10.3.3 描述表切换 240
10.3.4 中断与异常处理 240
10.3.5 内核的互斥机制 241
10.4 虚拟存储器 242
10.4.1 进程的虚拟地址空间 242
10.4.2 虚拟分页的地址变换机构 242
10.4.3 页面调度策略和工作集 242
10.4.4 共享主存——段对象和视口 243
10.5 磁盘与文件管理 244
10.5.1 磁盘管理 244
10.5.2 NTFS文件系统 245
10.5.3 文件系统的恢复 246
10.6 输入输出子系统 247
10.6.1 输入输出子系统结构 247
10.6.2 高速缓存 247
10.6.3 异步输入输出操作和输入输出请求处理过程 248
10.6.4 映像文件的输入输出 248
10.7 进程通信 249
10.7.1 端口对象 249
10.7.2 LPC消息传送方法 250
10.8 系统安全性 250
10.8.1 登录进程和安全子系统 250
10.8.2 存取令牌 250
10.8.3 存取控制表 251
10.8.4 主存保护 252
10.9 Windows 2003简介 252
10.9.1 IIS 6.0服务 252
10.9.2 集群技术 252
10.9.3 跨域树信任技术 253
10.9.4 终端服务技术 253
10.9.5 SAN/NAS技术 253
10.9.6 活动目录技术 254
10.9.7 便于Windows XP用户登录网络 254
小结 254
习题 255
参考文献 257