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