第1章 引论 1
1.1 系统概述 1
1.1.1 计算机的硬件组织 1
1.1.1.1 微型计算机的典型组织 1
第一部分 概论 1
1.1.1.2 大-小型计算机的硬件组织 2
1.1.2 软件的层次与虚拟机的概念 3
1.2 操作系统的形成和发展 4
1.2.1 什么是操作系统 4
1.2.2 操作系统的形成和发展 4
1.3.1 多道程序设计的引入 5
1.3 多道程序设计的概念 5
1.3.2 多道程序设计的概念 6
1.4 操作系统的功能和特性 7
1.4.1 操作系统的功能 7
1.4.2 操作系统的特性 7
1.5 操作系统的类型 8
1.5.1 多道批处理操作系统 8
1.5.2 分时系统 9
1.5.3 实时系统 10
1.5.4 网络操作系统 10
1.5.4.1 网络操作系统概述 10
1.5.4.2 Windows NT的内装网络简介 11
1.6 微型计算机及其操作系统的发展趋势 12
习题 14
第2章 操作系统的运行环境 16
2.1 硬件环境 16
2.1.1 中央处理机(CPU) 16
2.1.1.1 特权指令 16
2.1.1.2 处理机的状态 17
2.1.1.3 程序状态字PSW 17
2.1.2 主存储器 18
2.1.2.1 存储器的类型 18
2.1.2.3 存储保护 19
2.1.2.2 存储分块 19
2.1.3 缓冲技术 20
2.1.4 中断技术 21
2.1.4.1 中断的概念 21
2.1.4.2 中断逻辑与中断寄存器 21
2.1.4.3 中断类型 22
2.1.4.4 中断响应与中断屏蔽 23
2.1.4.5 中断处理 24
2.1.5 时钟、时钟队列 25
2.2 操作系统与其它系统软件的关系 26
2.2.1 作业、作业步和进程的关系 26
2.2.2.2 静态重定位 27
2.2.2.1 绝对地址、相对地址和逻辑地址空间 27
2.2.2 重定位的概念 27
2.2.3 绝对装入程序和相对装入程序 28
2.2.3.1 绝对装入程序 29
2.2.3.2 相对装入程序——连接装入程序 29
2.3 操作系统与人的接口 30
2.3.1 作业控制语言 31
2.3.2 联机作业控制——终端命令和图形用户接口(GUI) 32
2.3.2.1 终端命令 32
2.3.2.2 图形用户接口(GUI) 33
2.4 固件——微程序设计概念 34
2.4.1 微程序设计的概念 34
习题 35
2.4.2 微程序设计和操作系统 35
第二部分 多道程序设计基础——并行程序设计 37
第3章 进程管理 37
3.1 进程的概念 37
3.1.1 进程的引入 37
3.1.2 进程的定义 38
3.2 进程的状态和进程控制块 39
3.2.1 进程的状态及其变化 39
3.2.2 进程控制块 39
3.3 进程队列 41
3.4.1 进程的挂起和解除挂起 42
3.4 进程的管理 42
3.4.2.1 建立进程原语 43
3.4.2 进程的控制原语 43
3.4.2.2 挂起进程原语 44
3.4.2.3 解除挂起原语 45
3.4.2.4 撤消进程原语 45
3.4.2.5 改变进程优先数原语 46
3.5 Windows NT中的线程 47
习题 48
4.1 顺序程序设计和并行程序设计概念 50
4.1.1 顺序程序设计的特点 50
第4章 多道程序设计基础——并行程序设计 50
4.1.2 并行程序设计 51
4.1.2.1 并行程序设计的概念 51
4.1.2.2 程序并行性的表示 52
4.1.2.3 并行程序设计的特点 53
4.2 进程间的同步与互斥 54
4.2.1 临界段问题 54
4.2.1.1 问题的提出 54
4.2.1.2 软件解决办法 55
4.2.2 同步与互斥的执行工具 59
4.2.2.1 硬件指令 59
4.2.2.3 P,V操作 61
4.2.2.2 信号量 61
4.3 同步机构应用 63
4.3.1 用信号量实现进程间的互斥 63
4.3.2 信号量作为进程的阻塞和唤醒机构 64
4.3.3 生产者和消费者问题 65
4.3.4 阅读者/写入者问题 66
4.4 进程间的通信 67
4.5 管程的概念 68
4.5.1 管程的定义 69
4.5.2 五位就餐的哲学家问题 69
4.6 Windows NT中的同步与互斥机制 71
习题 72
第三部分 处理机管理 75
第5章 作业和进程的调度 75
5.1 调度的层次和作业状态转换 75
5.1.1 调度的层次 75
5.1.2 作业状态 75
5.2 作业的调度 76
5.2.1 后备作业队列及作业控制块JCB 76
5.2.2 作业调度及其功能 77
5.3 进程调度 77
5.4 选择调度算法时应考虑的问题 78
5.5.3 时间片轮转算法 79
5.5.2 优先级调度算法 79
5.5 调度算法 79
5.5.1 先来先服务调度算法FIFO 79
5.5.4 短作业优先调度算法 80
5.5.5 最短剩余时间优先调度算法 81
5.5.6 最高响应比优先调度算法 81
5.5.7 多级反馈队列调度算法 81
5.6 Windows NT可抡占动态优先级多级就绪队列调度算法 83
习题 84
第6章 死锁 86
6.1 死锁问题的提出 86
6.2.1 资源的概念 87
6.2 死锁的必要条件 87
6.2.2 死锁的必要条件 88
6.3 死锁的预防 89
6.3.1 预先静态分配法 89
6.3.2 有序资源使用法 89
6.4 死锁的避免和银行家算法 90
6.4.1 银行家算法问题 90
6.4.2 银行家算法 91
6.4.3 银行家算法的优缺点 93
6.5.1 资源分配图 94
6.5.2 资源分配图的化简 94
6.5 死锁检测 94
6.5.3 资源分配图化简的实现 95
6.5.3.1 矩阵表示法 96
6.5.3.2 链表表示法 97
6.5.3.3 检测算法的执行速度 97
6.6 死锁的恢复 98
习题 99
7.1 引言 101
7.1.1 主存储器的物理组织、多级存储器 101
第7章 实存储器管理技术 101
第四部分 主存储器管理 101
7.1.2 主存储器管理中的研究课题 102
7.2 固定分区 102
7.2.1 数据库 103
7.2.2 存储分配算法 104
7.2.3 存储保护与重定位 104
7.2.4 优缺点 105
7.3 可变分区的多道管理技术 105
7.3.1 数据库 106
7.3.2 分配和释放算法 107
7.3.3 存储器的紧缩和程序的浮动 108
7.3.3.1 碎片问题和存储器的紧缩 108
7.3.3.2 程序浮动 109
7.3.4.1 动态重定位 110
7.3.4 动态重定位的可变分区多道管理 110
7.3.4.2 动态重定位的硬件支持、软件算法 111
7.3.4.3 IBM-PC等微型计算机的存储管理与地址变换机构 111
7.3.5 优缺点 113
7.4 多重分区(多对界地址)管理 113
7.5 覆盖技术 113
7.5.1 覆盖的概念 113
7.5.2 覆盖处理 115
7.6 交换技术 115
习题 116
8.1 虚拟存储系统的基本概念 117
第8章 虚拟存储管理 117
8.2 分页存储管理 119
8.2.1 分页存储管理的基本概念 119
8.2.2 分页系统中的地址转换 121
8.2.2.1 直接映象的页地址转换 121
8.2.2.2 相关映象页地址转换 122
8.2.2.3 相关映象和直接映象结合的页地址转换 123
8.2.3 分页存储管理策略 124
8.2.4 分页存储管理的软硬件关系和软件算法 124
8.2.4.1 数据库 124
8.2.4.2 分页存储管理中软硬件关系和缺页中断处理算法 125
8.2.4.3 页表表目的扩充 126
8.2.5 页的共享 127
8.3 分段存储管理 127
8.3.1 分段存储管理的基本概念 127
8.3.2 分段管理中的地址转换 128
8.3.3 段的动态连接 129
8.3.3.1 连接间接字和连接中断 130
8.3.3.2 编译程序的连接准备工作 131
8.3.3.3 连接中断处理 131
8.3.3.4 纯段和杂段(连接段) 131
8.3.5 分段存储管理的优缺点 132
8.3.4 虚拟存储管理中的存储保护问题 132
8.4 段页式存储管理 133
8.4.1 段页式存储管理的基本概念 133
8.4.2 段页式存储管理中的地址转换 135
8.4.3 段页式存储管理算法 136
8.4.4 段页式存储管理的优缺点 136
8.5 页(和段)的置换算法和系统行为 138
8.5.1 最佳置换算法OPT 138
8.5.2 先进先出置换算法FIFO 138
8.5.3 最近最少使用置换算法LRU 139
8.5.4 最近未使用置换算法NUR 139
8.5.5.1 局部性的概念 140
8.5.5 分页环境中程序的行为特性 140
8.5.5.2 分页环境中程序的行为特性 141
8.5.5.3 减少访问离散性的程序结构 141
8.5.6 工作集 142
8.6 页架的分配算法 143
8.6.1 提前分配 143
8.6.2 最少页架数 144
8.6.3 局部和全局分配 144
8.6.4 分配算法 144
8.6.5 页的大小 145
8.7.1 高速缓冲存储器的组织 146
8.7 高速缓冲存储器 146
8.7.2 缓存块的编址形式 147
8.7.3 缓存的工作过程 148
8.8 Windows NT的分页机构、页面调度算法和工作集、共享主存机制 149
8.8.1 Windows NT的二级页表地址变换机构 149
8.8.2 页面调度算法和工作集 149
8.8.3 共享主存机制——段对象、视口和映象文件 150
习题 150
第五部分 设备和文件管理 152
第9章 设备管理 152
9.1 输入输出组织和输入输出处理机 152
9.1.2 输入输出处理机(通道) 153
9.1.1 输入输出接口(IO接口) 153
9.2 辅助存储器 154
9.2.1 磁带的硬件特性及信息的组织 154
9.2.2 磁鼓的硬件特性及信息的组织 156
9.2.3 磁盘的硬件特性及信息的组织 157
9.3 设备管理概述 158
9.3.1 设备绝对号、相对号、类型号与符号名 158
9.3.2 设备管理的任务 159
9.4 设备分配策略 160
9.4.1 设备控制块和设备等待队列 160
9.4.3 虚拟设备和SPOOL系统 161
9.4.2 独享设备的分配 161
9.4.4 共享设备的分配和磁盘调度策略 163
9.4.4.1 移动头磁盘存储器的操作 163
9.4.4.2 查找优化的各种策略 164
9.4.4.3 旋转优化 165
9.5 输入输出管理程序 165
9.5.1 输入输出进程 166
9.5.2 设备管理程序 166
9.5.3 输入输出调度程序 167
9.6 Windows NT一体化的输入输出系统 167
习题 168
10.1.1 引言 169
第10章 文件系统 169
10.1 文件系统概述 169
10.1.2 文件的分类 170
10.1.3 文件系统的功能和基本操作 171
10.2 文件的逻辑组织和物理组织 172
10.2.1 文件的逻辑组织 172
10.2.2 文件的物理组织 172
10.3 文件目录 175
10.3.1 文件目录和文件描述符 175
10.3.2 一级目录结构 176
10.3.4 多级目录结构 177
10.3.3 二级目录结构 177
10.3.5 目录组织的改进——符号文件目录和基本文件目录 179
10.4 辅存空间的分配和释放 181
10.4.1 辅存空闲块的管理 181
10.4.2 辅存空间的分配和释放 182
10.5 文件的共享与文件系统的安全性 184
10.5.1 文件的连接 184
10.5.2 文件的存取控制 185
10.5.3 文件的转储和恢复 187
10.6 文件的使用与控制 187
10.6.1 活动文件表和活动符号名表 187
10.6.2 建立文件命令 188
10.6.4 读文件命令 189
10.6.3 打开文件命令 189
10.6.5 写文件命令 190
10.6.6 关闭文件命令 190
10.6.7 撤消文件命令 190
10.7 Windows NT的多重文件系统 190
习题 191
第六部分 操作系统结构与范例 192
第11章 操作系统的结构和设计 192
11.1 操作系统的设计 192
11.1.1 设计的目标和原则 192
11.1.2.1 系统分析和总体功能设计阶段 194
11.1.2 操作系统的设计 194
11.1.2.2 系统设计与结构设计阶段 195
11.2 操作系统的结构 195
11.2.1 模块接口法(单块式) 195
11.2.2 层次结构设计法 197
11.2.3 客户/服务器方式 198
习题 199
第12章 Windows NT操作系统 200
12.1 Windows NT操作系统概述 200
12.2 Windows NT的设计目标 200
12.3 Windows NT的系统模型 201
12.4 Windows NT的结构 203
12.5 Windows NT的基元成分——对象、进程和线程 205
12.5.1 对象 205
12.5.2 进程 207
12.5.3 线程 209
12.5.4 对象、进程和线程之间的关系 211
12.5.5 进程管理程序 212
12.6 内核 213
12.6.1 内核调度程序与线程的状态转换 213
12.6.2 中断和异常处理 215
12.6.3 内核的同步与互斥机制——多处理器间的同步 216
12.7.1 进程的虚拟地址空间 217
12.7 虚拟存储管理 217
12.7.2 NT虚拟分页的地址变换机构 218
12.7.3 页面调度策略和工作集 219
12.7.3.1 页面调度策略 219
12.7.3.2 工作集 220
12.7.4 页架状态和页架数据库 220
12.7.5 共享主存——段对象、视口和映象文件 221
12.8 输入输出(I/O)系统 222
12.8.1 输入输出(I/O)系统的结构 222
12.8.2 统一的驱动程序模型 223
12.8.3 异步I/O操作和I/O请求处理过程 224
12.9.1 Windows NT的内装网络的特色 225
12.9 Windows NT的内装网络 225
12.8.4 映象文件I/O 225
12.9.2 Windows NT网络的体系结构 226
12.10 对象管理程序 227
12.11 进程通信及本地过程调用(LPC) 228
12.11.1 线程间的同步 228
12.11.2 进程通信——本地过程调用(LPC) 229
12.12 Windows NT的安全性 230
12.13 综述 231
第13章 UNIX操作系统 233
13.1 UNIX操作系统概述 233
13.2 系统结构 234
13.3.1 程序状态字和通用寄存器 235
13.3 进程管理 235
13.3.2 进程和进程控制块PCB 236
13.3.3 进程的控制 241
13.4 文件系统 243
13.4.1 UNIX文件系统概述 243
13.4.2 文件目录结构和文件(路径)名 244
13.4.3 文件卷的动态装卸和安装 245
13.4.4 文件的共享和联接 245
13.5 设备管理和输入输出系统 245
13.6 管道线pipe机构 246
13.7 系统调用 247
13.8.1 shell的一般用法 248
13.8 shell语言简介 248
13.8.2 shell过程的用法 250
第14章 CP/M操作系统 252
14.1 CP/M操作系统概述 252
14.1.1 概述 252
14.1.2 CP/M操作系统的功能和特性 252
14.2 CP/M的结构 253
14.3 主存分配 253
14.4 控制台命令处理程序CCP 254
14.5 基本输入输出系统BIOS 255
14.6.1 CP/M的文件组织和文件操作 256
14.6 CP/M文件系统 256
14.6.2 盘空间管理 258
14.6.3 目录管理 259
14.6.4 表块管理 259
14.7 MP/M操作系统 259
14.7.1 MP/M的结构 260
14.7.2 主存管理 260
14.7.3 进程的管理 261
14.7.4 进程调度 261
14.7.5 进程的同步与通信 262
14.7.6 SPOOL系统 262
参考文献 263