第一章 操作系统概论 1
1.1 操作系统概观 1
1.1.1 操作系统的定义和目标 1
1.1.2 操作系统的作用与功能 2
1.1.3 操作系统的主要特性 5
1.2 操作系统的形成和发展 8
1.2.1 人工操作阶段 8
1.2.2 管理程序阶段 9
1.2.3 多道程序设计与操作系统的形成 10
1.2.4 操作系统的发展与分类 15
1.3 操作系统提供的服务和用户接口 24
1.3.1 操作系统提供的基本服务 24
1.3.2 操作系统提供的用户接口 26
1.3.3 程序接口与系统调用 26
1.3.4 操作接口与系统程序 30
1.4 操作系统的结构设计 35
1.4.1 操作系统的构件 36
1.4.2 整体式结构的操作系统 41
1.4.3 层次式结构的操作系统 42
1.4.4 虚拟机结构的操作系统 44
1.4.5 客户/服务器与微内核结构的操作系统 45
1.4.6 操作系统的运行模型 49
1.4.7 实例研究:Windows 2000/XP客户/服务器结构 51
1.5 流行操作系统简介 57
1.5.1 DOS操作系统 57
1.5.2 Windows操作系统 58
1.5.3 UNIX操作系统家族 60
1.5.4 自由软件和Linux操作系统 63
1.5.5 IBM系列操作系统 65
1.5.6 其他流行操作系统 68
1.6 本章小结 70
习题一 72
第二章 处理器管理 76
2.1 中央处理器 76
2.1.1 单处理器系统和多处理器系统 76
2.1.2 寄存器 78
2.1.3 特权指令与非特权指令 78
2.1.4 处理器状态 79
2.1.5 程序状态字寄存器 80
2.2 中断技术 82
2.2.1 中断的概念 82
2.2.2 中断源分类 83
2.2.3 中断装置 84
2.2.4 中断处理程序 86
2.2.5 中断事件的具体处理方法 87
2.2.6 中断的优先级和多重中断 93
2.2.7 实例研究:Windows 2000/XP中断处理 95
2.2.8 实例研究:Solaris中断处理 103
2.2.9 实例研究:Linux中断处理 105
2.3 进程及其实现 113
2.3.1 进程的定义和属性 113
2.3.2 进程的状态和转换 115
2.3.3 进程的描述 118
2.3.4 进程切换与模式切换 123
2.3.5 进程的控制 125
2.3.6 实例研究:UNIX SVR4进程管理 129
2.3.7 实例研究:Linux进程管理 133
2.4.1 引入多线程技术的动机 137
2.4 线程及其实现 137
2.4.2 多线程环境中的进程与线程 138
2.4.3 线程的实现 144
2.4.4 实例研究:Solaris的进程与线程 148
2.4.5 实例研究:Windows 2000/XP的进程与线程 153
2.5 处理器调度 162
2.5.1 处理器调度的层次 162
2.5.2 高级调度(High Level Scheduling) 164
2.5.5 选择调度算法的原则 165
2.5.4 低级调度(Low Level Scheduling) 165
2.5.3 中级调度(Medium Level Scheduling) 165
2.6 批处理作业的管理与调度 167
2.6.1 作业和进程的关系 167
2.6.2 批处理作业的管理 167
2.6.3 批处理作业的调度 169
2.6.4 作业调度算法 169
2.7 低级调度 173
2.7.1 低级调度的功能 173
2.7.2 低级调度算法 173
2.7.3 实时调度 178
2.7.4 多处理器调度 179
2.7.5 实例研究:UNIX SVR4调度算法 183
2.7.6 实例研究:Windows 2000/XP调度算法 185
2.7.7 实例研究:Linux调度算法 195
2.8 本章小结 199
习题二 201
第三章 并发进程 208
3.1 并发进程 208
3.1.1 顺序程序设计 208
3.1.2 进程的并发性 209
3.1.3 与时间有关的错误 212
3.1.4 进程的交互(Interaction Among Processes):协作和竞争 213
3.2 临界区管理 215
3.2.1 互斥和临界区 215
3.2.2 临界区管理的尝试 216
3.2.3 实现临界区管理的软件方法 218
3.2.4 实现临界区管理的硬件设施 221
3.3 信号量与PV操作 222
3.3.1 同步和同步机制 222
3.3.2 记录型信号量与PV操作 224
3.3.3 用记录型信号量实现互斥 227
3.3.4 记录型信号量解决生产者—消费者问题 230
3.3.5 记录型信号量解决读者—写者问题 233
3.3.6 记录型信号量解决理发师问题 235
3.4 管程 236
3.4.1 管程和条件变量 236
3.4.2 Hoare方法实现管程 241
3.4.3 Hanson方法实现管程 244
3.5.1 信号通信机制 252
3.5 进程通信 252
3.5.2 共享文件通信机制 254
3.5.3 共享存储区通信机制 257
3.5.4 消息传递通信机制 258
3.5.5 有关消息传递实现的若干问题 261
3.6 死锁 266
3.6.1 死锁的产生 266
3.6.2 死锁的定义 268
3.6.3 死锁的防止 268
3.6.4 死锁的避免 270
3.6.5 死锁的检测和解除 280
3.7 实例研究:Windows 2000/XP的同步和通信机制 283
3.7.1 Windows 2000/XP的同步和互斥机制 283
3.7.2 Windows 2000/XP进程通信机制 284
3.8 实例研究:Linux信号量机制 285
3.9 本章小结 289
习题三 291
第四章 存储管理 304
4.1 存储器 304
4.1.1 存储器的层次 304
4.1.2 快速缓存 305
4.1.3 地址转换与存储保护 306
4.2 连续存储空间管理 307
4.2.1 单用户连续存储管理 307
4.2.2 固定分区存储管理 309
4.2.3 可变分区存储管理 311
4.3 分页式存储管理 317
4.3.1 分页式存储管理的基本原理 317
4.3.2 相联存储器和快表 319
4.3.3 分页式存储空间的分配和去配 320
4.3.4 分页存储空间的页面共享和保护 321
4.3.5 多级页表 322
4.3.6 反置页表 324
4.4 分段式存储管理 325
4.4.1 程序的分段结构 325
4.4.2 分段式存储管理的基本原理 326
4.4.3 段的共享 327
4.4.4 分段和分页的比较 327
4.5 虚拟存储管理 328
4.5.1 虚拟存储器的概念 328
4.5.2 请求分页虚拟存储管理 330
4.5.3 请求分段虚拟存储管理 350
4.5.4 请求段页式虚拟存储管理 352
4.6 实例研究:Intel x86/Pentium存储管理硬件设施 354
4.6.1 Intel x86/Pentium段机制——段选择符和段描述符 354
4.6.2 Intel x86/Pentium运行模式选择 356
4.6.3 Intel x86/Pentium地址转换 356
4.6.4 Intel x86/Pentium页式或段页式地址转换 358
4.7 实例研究:Windows 2000/XP虚拟存储管理 360
4.7.1 进程地址空间布局 360
4.7.2 用户空间内存分配 361
4.7.3 内存管理的实现 366
4.8 实例研究:Linux虚拟存储管理 373
4.8.1 Linux虚拟存储管理概述 373
4.8.2 Linux进程的虚拟地址空间 373
4.8.3 Linux物理内存空间的管理 376
4.8.4 用户态内存的申请与释放 378
4.8.5 内存的共享和保护 379
4.8.6 交换空间、页面换出和调入 379
4.8.7 缓冲机制 381
4.9 本章小结 382
习题四 384
第五章 设备管理 391
5.1 I/O硬件原理 391
5.1.1 I/O系统 392
5.1.2 I/O控制方式 392
5.1.3 设备控制器 397
5.2 I/O软件原理 399
5.2.1 I/O软件的设计目标和原则 399
5.2.2 I/O中断处理程序 400
5.2.3 设备驱动程序 402
5.2.4 与硬件无关的操作系统I/O软件 403
5.2.5 用户空间的I/O软件 404
5.3 具有通道的I/O系统管理 405
5.3.1 通道命令和通道程序 405
5.3.2 I/O指令和主机I/O程序 407
5.3.3 通道启动和I/O操作过程 409
5.4 缓冲技术 410
5.4.1 单缓冲 411
5.4.2 双缓冲 411
5.4.3 多缓冲 412
5.5 驱动调度技术 413
5.5.1 存储设备的物理结构 413
5.5.2 循环排序 415
5.5.3 优化分布 416
5.5.4 交替地址 417
5.5.5 搜查定位 417
5.5.6 独立磁盘冗余阵列 420
5.5.7 提高磁盘I/O速度的一些方法 423
5.6.1 设备独立性 424
5.6 设备分配 424
5.6.2 设备分配 425
5.7 虚拟设备 427
5.7.1 问题的提出 427
5.7.2 Spooling的设计和实现 428
5.7.3 Spooling应用例子 430
5.8 实例研究:Windows 2000/XP的I/O系统 431
5.8.1 Windows 2000/XP I/O系统结构和组件 431
5.8.2 Windows 2000/XP I/O系统的数据结构 437
5.8.3 Windows 2000/XP设备驱动程序 440
5.8.4 Windows 2000/XP I/O处理 444
5.8.5 Windows 2000/XP高速缓存管理 447
5.9 实例研究:Linux设备管理 462
5.9.1 Linux设备管理概述 462
5.9.2 Linux硬盘管理 464
5.9.3 Linux网络设备 465
5.9.4 Linux设备驱动程序 465
5.10 本章小结 466
习题五 468
第六章 文件管理 472
6.1 文件 473
6.1.1 文件的概念 473
6.1.2 文件的命名 473
6.1.3 文件的类型 474
6.1.4 文件的属性 475
6.1.5 文件的存取方法 477
6.1.6 文件的使用 478
6.2 文件目录 479
6.2.1 文件目录与文件目录项 479
6.2.2 一级目录结构 480
6.2.3 二级目录结构 481
6.2.4 树形目录结构 482
6.3 文件组织与数据存储 484
6.3.1 文件的存储 484
6.3.2 文件的逻辑结构 484
6.3.3 文件的物理结构 490
6.4 文件系统其他功能的实现 496
6.4.1 文件系统调用的实现 496
6.4.2 UNIX文件系统调用 498
6.4.3 文件卷的安装和使用 504
6.4.4 文件共享 507
6.4.5 层次式文件系统模型 512
6.4.6 辅存空间管理 513
6.4.7 内存映射文件 515
6.4.8 虚拟文件系统 517
6.5 实例研究:Linux文件管理 519
6.5.1 Linux文件管理概述 519
6.5.2 Linux文件系统安装 520
6.5.3 虚拟文件系统VFS 522
6.5.4 文件系统管理的缓冲机制 527
6.5.5 系统打开文件表和主要文件操作 529
6.5.6 EXT2文件系统 532
6.6 实例研究:WINDOWS 2000/XP文件系统 534
6.6.1 Windows 2000/XP文件系统概述 534
6.6.2 Windows 2000/XP文件系统模型和FSD体系结构 536
6.6.3 NTFS文件系统驱动程序 540
6.6.4 NTFS在磁盘上的结构 542
6.6.5 NTFS的实现机制 545
6.6.6 NTFS可恢复性支持 549
6.6.7 NTFS安全性支持 550
6.7 本章小结 551
习题六 552
第七章 操作系统的安全与保护 556
7.1 安全性概述 556
7.2 安全威胁及其类型 557
7.3 保护 561
7.3.1 操作系统保护层次 561
7.3.2 内存储器的保护 561
7.3.4 面向数据的访问控制 562
7.3.3 面向用户的访问控制 562
7.4 入侵者 563
7.4.1 入侵技术 563
7.4.2 口令保护 565
7.4.3 入侵检测 568
7.5 病毒(恶意软件) 570
7.5.1 病毒及其威胁 570
7.5.2 病毒的特性 572
7.5.3 病毒的类型 572
7.5.4 反病毒的方法 573
7.6.1 机制、策略与模型 575
7.5.5 电子邮件病毒 575
7.6 保护的基本机制、策略与模型 575
7.6.2 身份认证机制 592
7.6.3 授权机制 597
7.6.4 加密机制 610
7.6.5 审计机制 615
7.7 实例研究:Windows 2000/XP的安全机制 616
7.7.1 Windows 2000/XP安全性概述 616
7.7.3 Windows 2000/XP保护对象 617
7.7.2 Windows 2000/XP安全性系统组件 617
7.7.4 访问控制策略 618
7.7.5 访问令牌 619
7.7.6 安全描述符 619
7.8 本章小结 622
习题七 623
第八章 网络和分布式操作系统 626
8.1 计算机网络概述 626
8.1.1 计算机网络的概念 626
8.1.2 数据通信基本概念 629
8.1.3 网络体系结构 631
8.2 网络操作系统 638
8.2.1 网络操作系统概述 638
8.2.2 几个流行的网络操作系统 639
8.2.3 网络操作系统实例 640
8.3 分布式操作系统 643
8.3.1 分布式系统概述 643
8.3.2 分布式进程通信 644
8.3.3 分布式资源管理 650
8.3.4 分布式进程同步 654
8.3.5 分布式系统中的死锁 665
8.3.6 分布式文件系统 667
8.3.7 分布式进程迁移 673
8.4 实例研究:Windows 2000网络体系结构和网络服务 676
8.4.1 Windows 2000网络体系结构 676
8.4.2 Windows 2000的层次化网络服务 695
8.5 实例研究:Linux网络体系结构 700
8.6 本章小结 701
习题八 703
参考文献 706