1.1 操作系统是什么与为什么 1
1.1.1 引言:你所用过的操作系统 1
第一章 操作系统概论 1
1.1.2 操作系统是什么与做什么 3
1.1.3 操作系统的规模、数量与重要性 7
1.2 操作系统如何工作 8
1.2.1 操作系统的第一个工作:负责所有程序的启动和结束 8
1.2.2 操作系统的第二个工作:在用户程序中调用操作系统——系统调用和中断 16
1.2.3 操作系统的第三个工作:为常用基本操作提供现成实用程序 26
1.2.4 操作系统的第四个工作:解决效率和安全问题——并发技术等 27
1.3 从各种角度看操作系统 33
1.3.1 操作系统的结构 33
1.3.3 操作系统的工作过程 36
1.3.2 操作系统的接口 36
1.3.4 操作系统的特点 37
1.3.5 操作系统的类型 38
1.3.6 操作系统的各种别名、比喻和观点 39
1.4 操作系统发展简史 39
1.5 目前常用操作系统简介:Windows、UNIX、Linux等 42
习题一 50
第二章 处理机管理 51
2.1 处理机管理概述 51
2.1.1 CPU硬件使用特性 51
2.1.2 用户对CPU的使用要求和操作系统CPU管理功能的工作任务 58
2.2 单任务模型 60
2.3.2 进程三态转换分析 61
2.3.1 用户如何让几个进程并发运行:多窗口,后台符,fork 61
2.3 多任务模型之一:进程模型 61
2.3.3 进程模型实现机制 65
2.3.4 专题:栈、程序文件结构与进程空间(进程映像)结构 67
2.3.5 专题:可抢先、不可抢先、完全可抢先 70
2.3.6 专题:进程调度算法 71
2.4 进程模型实例分析(1):UNIX进程模型 73
2.4.1 UNIX关于建立进程和终止进程的用户界面 73
2.4.2 UNIX进程层次和初启过程 75
2.4.3 UNIX进程模型的基本结构和工作过程 77
2.4.4 例析:shell和fork的内部工作过程 79
2.5 进程模型实例分析(2):Linux进程模型 82
2.5.1 Linux进程模型功能特点、用户界面和实现机制总瞰 82
2.5.3 Linux进程表和任务结构 83
2.5.2 Linux初始过程和进程层次 83
2.5.4 Linux进程状态 86
2.5.5 Linux中断处理机制 87
2.5.6 Linux进程调度算法 88
2.6 多任务模型之二:线程模型 91
2.6.1 线程的概念、作用和基本原理 91
2.6.2 线程模型的实现与用户界面 96
2.7 线程模型实例分析(1):Solaris进程和线程模型 100
2.7.1 用户态线程、LWP、核心线程在Solaris中的具体含义 100
2.7.2 Solaris线程模型的设计目标和实现机制总瞰 102
2.8 线程模型实例分析(2):Windows XP/2000/2003进程和线程模型 103
2.8.1 Windows XP/2000/2003进程和线程模型总述 103
2.8.2 Windows XP/2000/2003中进程的实现 105
2.8.3 Windows XP/2000/2003中线程的实现 106
2.8.4 调度算法 107
2.8.5 Windows任务管理器和常见系统进程 108
2.8.6 Windows系统调用两态转换过程和两态进/线程、两态栈 109
2.8.7 Windows操作系统初始化过程 110
2.8.8 Windows的多用户功能:会话管理 110
2.8.9 中断请求级别IRQL与DPC、APC 111
2.9 作业管理 112
2.9.1 概述、实际应用背景与必要性 112
2.9.2 作业管理实例分析(一):UNIX/Linux shell 114
2.9.3 作业管理实例分析(二):NQS和DQS 115
2.9.4 作业管理界面综述:作业输入方式、作业控制说明书、作业控制语言 116
2.9.5 作业管理内部实现机制综述:JCB、井和作业调度 116
2.9.6 作业与程序启动方式的关系 117
习题二 117
3.1.1 内存概念、作用、性能指标和计算机存储层次 118
第三章 内存管理 118
3.1 内存管理概述 118
3.1.2 内存硬件接口使用特性:微观角度(指令级)和宏观角度(程序级) 120
3.1.3 用户(程序)对内存的使用要求 126
3.1.4 内存管理的功能和任务 127
3.2 连续模式 131
3.2.1 无管理模式、覆盖技术和动态装入技术 131
3.2.2 单一分区模式和交换技术 134
3.2.3 固定分区模式和多道技术 136
3.2.4 可变分区模式和动态存储分配技术 139
3.3 不连续模式之一:页模式 142
3.3.1 实存页模式的基本工作过程与结构 143
3.3.2 虚存页模式的基本工作过程和结构 147
3.3.4 页式实现专题讨论(2):进程页表的实现——快表、页表页和页目录 148
3.3.3 页式实现专题讨论(1):虚存概念和作用 148
3.3.5 页式实现专题讨论(3):大而稀疏内存使用 154
3.3.6 页式实现专题讨论(4):页分配策略——请求调页预先调页和写时复制 156
3.3.7 页式实现专题讨论(5):页长和页簇化 158
3.3.8 页式实现专题讨论(6):页淘汰策略、工作集理论和颠簸 159
3.3.9 页式实现专题讨论(7):盘交换区管理 160
3.3.10 页模式评价、实际系统采用情况和本节小结 162
3.4 不连续模式之二/三:段模式和段页式 163
3.4.1 段模式 163
3.4.2 段页式 169
3.5 内存管理实例分析 171
3.5.1 Windows内存管理 171
3.5.2 Linux内存管理 182
3.6 本章总结 184
3.6.1 内存管理概念总结模型:四空间模型 185
3.6.2 各模式的比较 186
习题三 189
第四章 外存管理和文件系统 191
4.1 外存管理和文件系统概述 192
4.1.1 外存硬件接口特性 192
4.1.2 用户对外存的使用要求 200
4.1.3 从文件定义看文件系统的界面高度和工作任务 201
4.2 文件系统用户界面 206
4.2.1 文件级界面:文件属性和文件操作 206
4.2.2 目录级界面:目录(树)和链接 208
4.2.3 文件子系统级用户界面 212
4.3 文件的实现 218
4.3.1 连续分配背景下的讨论 219
4.3.2 不连续分配背景下的讨论 225
4.3.3 各种分配策略的总结比较和综合采用 231
4.4 目录的实现 232
4.4.1 目录树结构的实现:目录文件方法 232
4.4.2 硬链接的实现:设备目录与文件目录的分离 235
4.4.3 符号链接的实现 239
4.5 文件子系统的实现 241
4.6 文件系统性能改善机制 243
4.6.1 物理地址与存取单位的优化 244
4.6.2 文件打开与关闭技术 245
4.6.3 文件共享 246
4.6.4 内存缓冲区与缓冲池 249
4.6.5 磁臂调度技术 250
4.7 文件系统实例分析 254
4.7.1 UNIX文件系统 254
4.7.2 Linux文件系统 257
4.7.3 Windows文件系统 258
4.8 本章总结和有关的文件系统模型 265
习题四 266
第五章 设备管理 268
5.1 设备管理概述 269
5.1.1 计算机外部设备的定义与分类 269
5.1.2 设备硬件接口特性 272
5.1.3 用户对设备的使用要求 281
5.1.4 操作系统设备管理功能的任务 284
5.2.1 用户界面 285
5.2 UNIX设备管理实例分析 285
5.2.2 UNIX I/O内部实现过程和结构 287
5.3 设备管理界面和原理通述 292
5.3.1 操作系统设备管理用户界面通述 292
5.3.2 操作系统设备管理功能的内部实现结构 293
5.3.2.1 设备无关层 294
5.3.2.2 设备相关层:设备驱动程序层 295
5.3.3 操作系统设备管理功能的内部工作过程 296
5.3.4 速度匹配专题讨论(1):设备完成技术、同步和异步I/O 297
5.3.5 速度匹配专题讨论(2):缓冲技术 300
5.3.6 设备分配与共享技术专题讨论:独占、共享和虚拟设备 302
5.3.7 速度匹配专题讨论(3):联机、脱机和假脱机技术 303
5.3.8 非编程式I/O技术专题讨论:DMA、通道等 304
5.3.9.1 设备驱动程序与核心间的接口规范例析:UNIX DDK/DDI标准 308
5.3.9 驱动程序例析 308
5.3.9.2 驱动程序例析:显示器、键盘、打印机驱动程序 309
5.3.9.3 驱动程序例析:电源管理和低功耗 309
5.4 现代设备管理实例分析:Windows XP/2000/2003设备管理 310
5.4.1 Windows XP/2000/2003设备管理(I/O子系统)总述 310
5.4.1.1 Windows XP/2000/2003设备管理的目标与特点 310
5.4.1.2 Windows XP/2000/2003设备管理的总体结构、接口、过程 311
5.4.2 Windows XP/2000/2003设备管理功能的程序组件 314
5.4.2.1 I/O管理器 314
5.4.2.2 设备驱动程序 314
5.4.2.3 PnP管理器 316
5.4.3.2 INF文件 317
5.4.3 Windows XP/2000/2003设备管理功能的外存数据文件和设备标识符 317
5.4.3.1 注册表 317
5.4.2.6 电源管理器 317
5.4.2.5 HAL 317
5.4.2.4 WMI支持例程(WDM WMI provider) 317
5.4.3.3 CAT文件与设备签名、WHQL 318
5.4.3.4 设备标识符DIID、VID、PID、device ID、instance ID 319
5.4.4 Windows XP/2000/2003设备管理功能的内存数据结构 319
5.4.4.1 IRP 319
5.4.4.2 驱动程序对象和设备对象、设备名、devnode 319
5.4.5 Windows XP/2000/2003的典型I/O过程 321
5.4.5.1 I/O类型 321
5.4.5.2 单层驱动背景下的I/O过程:APC与DPC 322
5.4.5.3 多层驱动背景下的L/O过程 323
5.4.5.4 驱动程序与设备的安装过程、设备枚举 324
5.4.5.5 驱动程序与设备安装与卸载、装入、启动、初始化、打开之间的区别与关系 326
5.4.6 专题:Windows驱动程序开发与测试:DDK、Driver Verifier和HCL、受保护驱动程序列表等 327
习题五 328
第六章 进程通信 330
6.1 进程通信概述 330
6.2 进程互斥和同步机制 331
6.2.1 基本的硬件机制 331
6.2.2 软件忙等互斥方案 333
6.2.3 软件非忙等互斥方案:信号量及其变种 336
6.2.4 由程序设计语言支持的进程互斥机制:管程 337
6.2.5 其他方案及其等价性 338
6.3 进程通信机制 338
6.4 死锁和饥饿 339
6.5 进程通信实例分析 340
6.5.1 UNIX进程通信 340
6.5.2 Linux进程通信 342
6.5.3 Windows XP/2000/2003/NT进程通信 344
习题六 345
第七章 分布式、网络、并行和嵌入式操作系统 348
7.1 分布式系统概述 349
7.2 并行操作系统 350
7.3 网络操作系统 352
7.4 分布式操作系统 352
7.5 机群与网格操作系统 356
7.6 嵌入式操作系统 358
习题七 359
第八章 性能与结构 360
8.1 操作系统性能评价 360
8.1.1 性能 360
8.1.2 可扩充性、可移植性、兼容性 361
8.1.3 安全性 362
8.1.4 可靠性和RAS技术 363
8.1.5 低功耗 364
8.2 操作系统结构设计 367
8.2.1 单体结构模型 367
8.2.2 层次结构模型 367
8.2.3 客户/服务器模型(微核结构) 368
8.2.4 策略与机制的分离 369
8.2.5 面向对象方法和模型 369
8.2.6 面向对象模型实例分析:Windows XP/2000/2003面向对象模型实现 370
8.3 操作系统的用户界面设计 372
8.4 操作系统的系统管理 373
习题八 374
参考文献 375