第一部分 概论 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.2 操作系统的形成和发展 4
1.2 操作系统的形成和发展 4
1.2.1 什么是操作系统 4
1.3 多道程序设计的概念 5
1.3.1 多道程序设计的引入 5
1.3.2 多道程序设计的概念 5
1.4 操作系统的功能和特性 6
1.4.1 操作系统的功能 6
1.4.2 操作系统的特性 7
1.5.1 多道批处理操作系统 8
1.5 操作系统的类型 8
1.5.2 分时系统 9
1.5.3 实时系统 10
1.6 微型计算机及其操作系统的发展趋势 10
第二章 操作系统的运行环境 13
2.1 硬件环境 13
2.1.1 中央处理机(CPU) 13
2.1.1.1 特权指令 13
2.1.1.3 程序状态字PSW 14
2.1.1.2 处理机的状态 14
2.1.2 主存储器 15
2.1.2.1 存储器的类型 15
2.1.2.2 存储分块 15
2.1.2.3 存储保护 16
2.1.3 缓冲技术 17
2.1.4 中断技术 17
2.1.4.1 中断的概念 17
2.1.4.2 中断逻辑与中断寄存器 18
2.1.4.3 中断类型 19
2.1.4.5 中断处理 20
2.1.4.4 中断响应与中断屏蔽 20
2.1.5 时钟、时钟队列 22
2.2 操作系统与其它系统软件的关系 23
2.2.1 作业、作业步和进程的关系 23
2.2.2 重定位的概念 23
2.2.2.1 绝对地址、相对地址和逻辑地址空间 23
2.2.2.2 静态重定位 24
2.2.3 绝对装入程序和相对装入程序 25
2.2.3.2 相对装入程序--连接装入程序 26
2.2.3.1 绝对装入程序 26
2.3 操作系统与人的接口 27
2.3.1 作业控制语言 28
2.3.2 联机作业控制--终端命令和会话语言 29
2.3.2.1 终端命令 29
2.3.2.2 会话语言 30
2.4 固件--微程序设计概念 30
2.4.1 微程序设计的概念 30
2.4.2 微程序设计和操作系统 31
2.4.3 微程序设计范例 32
3.1.1 进程的引入 35
3.1 进程的概念 35
第二部分 多道程序设计基础--并行程序设计 35
第三章 进程管理 35
3.1.2 进程的定义 36
3.2 进程的状态和进程控制块 37
3.2.1 进程的状态及其变化 37
3.2.2 进程控制块 37
3.3 进程队列 38
3.4 进程的管理 40
3.4.1 进程的挂起和解除挂起 40
3.4.2.1 建立进程原语 41
3.4.2 进程的控制原语 41
3.4.2.2 挂起进程原语 42
3.4.2.3 解除挂起原语 43
3.4.2.4 撤消进程原语 43
3.4.2.5 改变进程优先数原语 44
第四章 多道程序设计基础--并行程序设计 46
4.1 顺序程序设计和并行程序设计概念 46
4.1.1 顺序程序设计的特点 46
4.1.2.1 并行程序设计的概念 47
4.1.2 并行程序设计 47
4.1.2.2 程序并行性的表示 48
4.1.2.3 并行程序设计的特点 49
4.2 进程间的同步与互斥 53
4.2.1 临界段问题 53
4.2.1.1 问题的提出 53
4.2.1.2 软件解决办法 54
4.2.2 同步与互斥的执行工具 58
4.2.2.1 硬件指令 58
4.2.2.3 P、V操作 60
4.2.2.2 信号量 60
4.3 同步机构应用 62
4.3.1 用信号量实现进程间的互斥 62
4.3.2 信号量作为进程的阻塞和唤醒机构 63
4.3.3 生产者和消费者问题 64
4.3.4 阅读者/写入者问题 65
4.4 进程间的通讯 66
4.5 管程的概念 67
4.5.2 五位就餐的哲学家问题 68
4.5.1 管程的定义 68
第五章 作业和进程的调度 71
5.1 调度的层次和作业状态转换 71
5.1.1 调度的层次 71
5.1.2 作业状态及其转换图 71
第三部分 处理机管理 71
5.2 作业的调度 72
5.2.1 后备作业队列及作业控制块JCB 72
5.2.2 作业调度及其功能 73
5.4 选择调度算法时应考虑的问题 74
5.3 进程调度 74
5.5 调度算法 75
5.5.1 先来先服务调度算法FIFO 75
5.5.2 优先级调度算法 76
5.5.3 时间片轮转算法 76
5.5.4 短作业优先调度算法 77
5.5.5 最短剩余时间优先调度算法 77
5.5.6 最高响应比优先调度算法 77
5.5.7 多级反馈队列调度算法 78
6.1 死锁问题的提出 80
第六章 死锁 80
6.2 死锁的必要条件 82
6.2.1 资源的概念 82
6.2.2 死锁的必要条件 83
6.3 死锁的预防 83
6.3.1 预先静态分配法 83
6.3.2 有序资源使用法 84
6.4 死锁的避免和银行家算法 84
6.4.1 银行家算法问题 85
6.4.2 银行家算法 86
6.4.3 银行家算法的优缺点 88
6.5 死锁检测 89
6.5.1 资源分配图 89
6.5.2 资源分配图的化简 89
6.5.3 资源分配图化简的实现 91
6.5.3.1 矩阵表示法 91
6.5.3.2 链表表示法 92
6.5.3.3 检测算法的执行速度 92
7.1.1 主存储器的物理组织、多级存储器 95
7.1 引言 95
第七章 实存储器管理技术 95
第四部分 主存储器管理 95
7.1.2 主存储器管理中的研究课题 96
7.2 固定分区 96
7.2.1 数据基 97
7.2.2 存储分配算法 98
7.2.3 存储保护与重定位 99
7.2.4 优缺点 99
7.3 可变分区的多道管理技术 99
7.3.1 数据基 100
7.3.2 分配和释放算法 101
7.3.3 存储器的紧缩和程序的浮动 103
7.3.3.1 碎片问题和存储器的紧缩 103
7.3.3.2 程序浮动 104
7.3.4 动态重定位的可变分区多道管理 104
7.3.4.1 动态重定位 104
7.3.4.2 动态重定位的硬件支持、软件算法 105
7.3.4.3 IBM-PC等微型计算机的存储管理与地址变换机构 105
7.5.1 覆盖的概念 107
7.5 覆盖技术 107
7.4 多重分区(多对界地址)管理 107
7.3.5 优缺点 107
7.5.2 覆盖处理 109
7.6 交换技术 109
第八章 虚拟存储管理 111
8.1 虚拟存储系统的基本概念 111
8.2 分页存储管理 113
8.2.1 分页存储管理的基本概念 113
8.2.2.2 相关映象页地址转换 115
8.2.2.1 直接映象的页地址转换 115
8.2.2 分页系统中的地址转换 115
8.2.2.3 相关映象和直接映象结合的页地址转换 116
8.2.3 分页存储管理策略 117
8.2.4 分页存储管理的软件算法 118
8.2.4.1 数据基 118
8.2.4.2 软件算法框图(缺页中断处理) 118
8.2.4.3 页表表目的扩充 118
8.2.5 页的共享 120
8.3 分段存储管理 120
8.3.1 分段存储管理的基本概念 121
8.3.3 段的动态连接 122
8.3.2 分段管理中的地址转换 122
8.3.3.1 连接间接字和连接中断 123
8.3.3.2 编译程序的连接准备工作 123
8.3.3.3 连接中断处理 124
8.3.3.4 纯段和杂段(连接段) 125
8.3.4 虚拟存储管理中的存储保护问题 125
8.3.5 分段存储管理的优缺点 126
8.4.2 段页式存储管理中的地址转换 127
8.4 段页式存储管理 127
8.4.1 段页式存储管理的基本概念 127
8.4.3 段页式存储管理算法 128
8.4.4 段页式存储管理的优缺点 130
8.5 页(和段)的更换算法和系统行为 131
8.5.1 最佳更换算法OPT 131
8.5.2 先进先出更换算法FIFO 131
8.5.3 最近最少使用更换算法LRU 132
8.5.5 分页环境中程序的行为特性 133
8.5.5.1 局部性的概念 133
8.5.4 最近未使用更换算法NUR 133
8.5.5.2 分页环境中程序的行为特性 134
8.5.5.3 减少访问离散性的程序结构 134
8.5.6 工作集 135
8.6 页架的分配算法 137
8.6.1 提前分配 137
8.6.2 最少页架数 137
8.6.3 局部和全局分配 137
8.7 高速缓冲存储器 138
8.6.5 页的大小 138
8.6.4 分配算法 138
8.7.1 高速缓冲存储器的组织 139
8.7.2 缓存块的编址形式 140
8.7.3 缓存的工作过程 141
第五部分 设备和文件管理 143
第九章 设备管理 143
9.1 输入输出组织和输入输出处理机 143
9.1.1 输入输出接口(IO接口) 144
9.1.2 输入输出处理机(通道) 144
9.2.1 磁带的硬件特性及信息的组织 145
9.2 辅助存储器 145
9.2.2 磁鼓的硬件特性及信息的组织 147
9.2.3 磁盘的硬件特性及信息的组织 147
9.3 设备管理概述 149
9.3.1 设备绝对号、相对号、类型号与符号名 149
9.3.2 设备管理的任务 149
9.4 设备分配策略 151
9.4.1 设备控制块和设备等待队列 151
9.4.3 虚拟设备和Spooling系统 152
9.4.2 独享设备的分配 152
9.4.4 共享设备的分配和磁盘调度策略 153
9.4.4.1 移动头磁盘存储器的操作 153
9.4.4.2 查找优化的各种策略 154
9.4.4.3 旋转优化 155
9.5 输入输出管理程序 156
9.5.1 输入输出进程 156
9.5.2 设备管理程序 157
9.5.3 输入输出调度程序 157
10.1.1 引言 159
10.1 文件系统概述 159
第十章 文件系统 159
10.1.2 文件的分类 160
10.1.3 文件系统的功能和基本操作 161
10.2 文件的逻辑组织和物理组织 161
10.2.1 文件的逻辑组织 162
10.2.2 文件的物理组织 162
10.3 文件目录 165
10.3.1 文件目录和文件描述符 165
10.3.3 二级目录结构 166
10.3.2 一级目录结构 166
10.3.4 多级目录结构 167
10.3.5 目录组织的改进--符号文件目录和基本文件目录 169
10.4 辅存空间的分配和释放 171
10.4.1 辅存空闲块的管理 171
10.4.2 辅存空间的分配和释放 172
10.5 文件的共享与文件系统的安全性 173
10.5.1 文件的连接 174
10.5.2 文件的存取控制 174
10.5.3 文件的转储和恢复 176
10.6.1 活动文件表和活动符号名表 177
10.6 文件的使用与控制 177
10.6.2 建立文件命令 178
10.6.3 打开文件命令 178
10.6.4 读文件命令 179
10.6.5 写文件命令 179
10.6.6 关闭文件命令 179
10.6.7 撤消文件命令 179
10.7 文件系统的层次模型 180
11.1 操作系统的设计 183
11.1.1 引言 183
第六部分 操作系统结构与范例 183
第十一章 操作系统的结构和设计 183
11.1.2 总体功能设计 184
11.1.3 系统功能分配与结构设计 184
11.1.4 二次整体功能设计 185
11.2 操作系统的层次结构 185
11.2.1 模块接口法 186
11.2.2 层次结构设计法 186
11.2.3 分层的原则 188
第十二章 UNIX操作系统 189
12.1 UNIX操作系统概述 189
12.2 系统结构 190
12.3 进程管理 191
12.3.1 程序状态字和通用寄存器 191
12.3.2 进程和进程控制块PCB 192
12.3.3 进程的控制 196
12.4 文件系统 198
12.4.1 UNIX文件系统概述 198
12.4.2 文件目录结构和文件(路径)名 199
12.4.3 文件卷的动态装卸和安装 200
12.4.4 文件的共享和联接 200
12.5 设备管理和输入输出系统 200
12.6 管道线pipe机构 201
12.7 系统调用 202
12.8 shell语言简介 203
12.8.1 shell的一般用法 203
12.8.2 shell过程的用法 205
13.1.2 CP/M操作系统的功能和特性 207
13.1.1 概述 207
13.1 CP/M操作系统概述 207
第十三章 CP/M操作系统 207
13.2 CP/M的结构 208
13.3 主存分配 208
13.4 控制台命令处理程序CCP 209
13.5 基本输入输出系统BIOS 210
13.6 CP/M文件系统 211
13.6.1 CP/M的文件组织和文件操作 211
13.6.2 盘空间管理 213
13.7 MP/M操作系统 214
13.7.1 MP/M的结构 214
13.6.3 目录管理 214
13.6.4 表块管理 214
13.7.2 主存管理 215
13.7.3 进程的管理 215
13.7.4 进程调度 216
13.7.5 进程的同步与通讯 216
13.7.6 Spooling系统 217
参考文献 218