内容简介
本书从原理、技术、设计实现三个方面讲述了计算机操作系统,即首先从操作系统设计原理出发,介绍操作系统的设计思想和实现技术,然后回到目前普及的现代操作系统上加以实例讲解和深化,最后是实际应用。全书以UNIX和Windows 2000/XP为实例辅助原理介绍,并给出相应的编程接口和实用操作。这种集原理、技术以及设计实现于一体的特点是本书的独到之处。
本书适合作为计算机专业本科及其他相关专业的操作系统教程,对于从事计算机应用和开发的技术人员也具有很高的参考价值。
图书目录
第1章 操作系统概述 1
1.1 操作系统的地位 1
1.2 操作系统的定义 2
1.3 操作系统的特征 3
1.4 操作系统的发展 4
1.4.1 操作系统的发展历史 4
1.4.2 操作系统的分类 6
1.5 操作系统结构研究 17
1.5.1 资源管理的观点 17
1.5.2 层次结构观点 18
1.5.3 模块接口法 19
1.5.4 虚拟机 19
1.5.5 客户机/服务器系统 20
1.5.6 用户观点 20
1.6 内核体系结构模型 21
1.6.1 微内核 21
1.6.2 单内核 22
1.7 UNIX操作系统 23
1.7.1 UNIX操作系统概述 23
1.7.2 UNIX系统的特点 23
1.7.3 UNIX操作系统的结构 24
1.8 Windows NT/2000/XP简介 25
1.8.1 Windows NT 25
1.8.2 Windows 2000 25
1.8.3 Windows XP 26
习题 26
第2章 作业管理和用户接口 28
2.1 作业的组织和管理 28
2.1.1 作业和作业处理过程 28
2.1.2 作业的输入/输出方式 30
2.1.3 作业控制块 32
2.1.4 作业调度 32
2.2 作业控制方式 38
2.2.1 脱机作业控制方式 38
2.2.2 联机作业控制方式 39
2.3 系统功能调用 42
2.3.1 系统调用及实现 42
2.3.2 系统调用的实现过程 47
2.4 图形用户接口 49
2.4.1 概述 49
2.4.2 Xwindow系统 51
2.4.3 Windows系统 52
2.5 用户管理 54
2.5.1 UNIX的用户管理 54
2.5.2 Windows NT的用户管理 55
习题 56
第3章 进程管理 57
3.1 进程的引入 57
3.1.1 顺序程序 57
3.1.2 多道程序设计 58
3.1.3 程序并发执行的特性 59
3.1.4 与时间有关的错误 60
3.2 进程定义与控制 60
3.2.1 进程的概念 61
3.2.2 进程控制块 63
3.2.3 进程的基本状态及其转换 64
3.2.4 进程控制 65
3.2.5 进程的特征 68
3.3 进程调度 68
3.3.1 确定进程调度算法的原则 68
3.3.2 进程调度算法 69
3.4 进程间的相互作用 70
3.4.1 进程间的同步和互斥 71
3.4.2 进程的同步机制 73
3.4.3 IPC经典问题 78
3.4.4 进程的同步机制--管程 81
3.5 进程通信 83
3.5.1 概述 83
3.5.2 共享内存模式 83
3.5.3 消息传递方式 84
3.5.4 管道 86
3.6 线程 88
3.6.1 线程的引入 88
3.6.2 线程的实现机制 90
3.6.3 线程与进程的比较 91
3.7 UNIX进程模型 92
3.7.1 进程模型的基本结构和工作过程 92
3.7.2 进程状态及转换 95
3.7.3 进程调度算法 95
3.7.4 UNIX的进程控制与管理 96
3.8 Windows 2000/XP的进程和线程模型 105
3.8.1 Windows 2000/XP的进程和线程模型总述 106
3.8.2 Windows 2000/XP的进程实现 106
3.8.3 Windows 2000/XP的线程实现 109
3.8.4 Windows 2000/XP的线程调度 111
3.8.5 空闲线程 113
3.8.6 多线程编程 113
习题 116
第4章 死锁 119
4.1 死锁的基本概念 119
4.1.1 资源 120
4.1.2 产生死锁的四个必要条件 120
4.2 产生死锁的示例 120
4.3 解决死锁的方案 122
4.3.1 死锁的预防 122
4.3.2 死锁的避免 125
4.3.3 死锁的检测和解除 128
4.4 其他相关问题 131
4.4.1 两阶段加锁 131
4.4.2 饥饿 132
习题 132
第5章 存储管理 135
5.1 概述 135
5.1.1 存储体系 135
5.1.2 地址重定位 136
5.1.3 链接 138
5.1.4 存储管理的目的 140
5.1.5 存储管理的任务 141
5.1.6 各种存储管理方案 141
5.2 分区存储管理方案 142
5.2.1 单一连续分区存储管理 142
5.2.2 固定分区 143
5.2.3 可变分区 144
5.2.4 可再定位式分区 150
5.2.5 多重分区 151
5.3 页式存储管理 151
5.3.1 基本原理 151
5.3.2 页式存储管理的地址变换 153
5.3.3 硬件支持 155
5.3.4 优缺点 156
5.4 段式存储管理 157
5.4.1 基本思想 157
5.4.2 分段式管理的数据结构 159
5.4.3 分段式管理的地址变换 159
5.4.4 分段式管理的硬件支持 160
5.4.5 分段式管理的优缺点 160
5.4.6 分页式管理和分段式管理的比较 160
5.5 段页式存储管理 161
5.5.1 基本思想 161
5.5.2 段页式存储管理的地址变换 162
5.5.3 硬件支持 162
5.6 交换技术与覆盖技术 163
5.6.1 覆盖技术 163
5.6.2 交换技术 164
5.7 虚拟存储 164
5.7.1 虚拟存储管理的引入 164
5.7.2 虚拟页式存储管理 166
5.7.3 性能问题 173
5.7.4 虚拟段式存储管理 176
5.8 高速缓冲存储器 177
5.8.1 高速缓存的组织 177
5.8.2 缓存的工作过程 178
5.9 内存管理实例分析 179
5.9.1 UNIX S5的内存管理 179
5.9.2 Windows 2000/XP的内存管理 186
习题 192
第6章 文件管理 195
6.1 概述 195
6.1.1 文件与文件系统 195
6.1.2 文件的分类 196
6.2 文件的结构及文件存取方式 197
6.2.1 文件的逻辑结构 197
6.2.2 存储介质 198
6.2.3 文件的物理结构 202
6.2.4 文件结构、文件存取方式与文件存储介质的关系 206
6.3 文件目录 208
6.3.1 文件目录的内容 208
6.3.2 目录结构 209
6.4 文件系统的实现 215
6.4.1 文件空间的分配和管理 216
6.4.2 内存中所需的表目 218
6.4.3 外存空间管理 222
6.5 文件系统的使用 224
6.5.1 文件操作 224
6.5.2 文件的系统调用 226
6.5.3 文件共享 231
6.6 文件系统的可靠性与安全性 235
6.6.1 文件系统的可靠性 235
6.6.2 文件系统的安全性 238
6.6.3 文件的保护机制 240
6.7 文件系统的性能问题 241
6.7.1 块高速缓存 242
6.7.2 磁盘调度 243
6.7.3 信息的优化分布 246
6.8 Windows 2000/XP 文件系统实例分析 246
6.8.1 Windows 2000/XP 文件系统概述 246
6.8.2 Windows 2000/XP 文件系统模型和FSD体系结构 250
6.8.3 NTFS的文件驱动程序 253
6.8.4 NTFS的磁盘结构 255
6.8.5 NTFS的实现机制 257
6.8.6 NTFS的可恢复性支持 260
6.8.7 NTFS的安全性支持 261
习题 262
第7章 设备管理 266
7.1 概述 266
7.1.1 I/O系统的结构和控制方式 266
7.1.2 设备的分类 269
7.1.3 设备管理的目标和任务 270
7.2 I/O软件的组成 271
7.2.1 I/O软件的目标 271
7.2.2 中断处理程序 271
7.2.3 设备驱动程序 274
7.2.4 与设备无关的系统软件 275
7.2.5 用户空间的I/O软件 277
7.3 具有通道的设备管理 278
7.3.1 通道的类型 278
7.3.2 "瓶颈"问题 279
7.3.3 通道命令与通道程序 279
7.3.4 通道的工作原理 281
7.4 与设备管理有关的技术 283
7.4.1 DMA技术 283
7.4.2 缓冲技术 284
7.4.3 总线技术 288
7.4.4 即插即用技术 291
7.5 设备管理中的数据结构 293
7.5.1 设备管理中的数据结构 293
7.5.2 设备的分配与回收 294
7.5.3 设备的处理 294
7.6 UNIX设备管理实例分析 296
7.6.1 UNIX块设备管理的主要数据结构 296
7.6.2 UNIX的缓冲区管理 299
7.6.3 块设备管理 301
7.6.4 字符设备管理 304
7.7 Windows 2000/XP 设备管理机制实例分析 306
7.7.1 Windosw 2000/XP输入/输出系统的体系结构 306
7.7.2 核心态模块 307
7.7.3 输入/输出系统的数据结构 308
7 .7.4 Windows 2000/XP的设备驱动程序 311
7.7.5 Windows 2000/XP 的I/O处理 312
习题 314
第8章 网络操作系统 315
8.1 网络操作系统的功能 315
8.1.1 网络操作系统简介 315
8.1.2 网络操作系统的功能和特性 315
8.1.3 网络操作系统的功能结构 318
8.1.4 网络操作系统的逻辑构成 318
8.1.5 网络操作系统与OSI-RM 320
8.2 Windows NT/2000/XP 321
8.2.1 Windows NT/2000/XP网络基本概念 321
8.2.2 Windows NT/2000网络结构 327
8.3 UNIX网络文件系统 329
8.4 Linux操作系统 329
8.4.1 Linux的特点 330
8.4.2 Linux系统结构及文件组织 330
8.4.3 Linux系统启动和初始化 332
8.4.4 Linux的常用软件 333
8.5 对等式局域网 333
8.5.1 对等式局域网操作系统 333
8.5.2 Windows 98的网络技术 334
习题 334
第9章 分布式计算机系统 336
9.1 分布式计算机系统 336
9.1.1 概述 336
9.1.2 分布式系统的特征 337
9.1.3 分布式系统的结构 337
9.1.4 分布式系统的设计方法 341
9.2 分布式系统的设计 341
9.3 分布式系统中的通信问题 344
9.3.1 发送策略 344
9.3.2 连接策略 344
9.3.3 争夺处理 345
9.3.4 保密 346
9.4 消息传递 347
9.4.1 异步型 347
9.4.2 同步型 347
9.4.3 组通信 348
9.5 远程过程调用 349
9.5.1 概述 349
9.5.2 基本RPC操作 350
9.5.3 两种通信方式的比较 352
9.6 进程迁移 353
9.6.1 数据和计算的迁移 353
9.6.2 引入进程迁移的原因 354
9.6.3 进程迁移机制 355
9.6.4 迁移的协商 356
9.7 分布式操作系统中的进程同步 357
9.8 分布式操作系统中的进程互斥 358
9.9 分布式系统的资源管理 361
9.10 死锁处理 363
习题 365
第10章 应用开发篇 366
10.1 UNIX Shell 366
10.1.1 Shell基础 366
10.1.2 正文全屏编辑程序 vi 367
10.2 Shell程序设计 373
10.2.1 Shell变量及其赋值 373
10.2.2 命令表与命令行 375
10.2.3 流程控制命令 376
10.2.4 命令替换与参数替换 380
10.2.5 Shell过程的运行 381
10.3 UNIX实用程序 381
10.3.1 目录操作与文件操作命令 381
10.3.2 过滤器 389
10.4 UNIX程序设计 391
10.4.1 文件系统程序设计 391
10.4.2 高级进程间的通信 393
10.5 Windows应用程序设计 396
10.5.1 WIN32 API 396
10.5.2 Windows应用程序的设计模式 397
10.5.3 Windows应用程序的基本结构 403
习题 406
参考文献 409