第1章 操作系统概论 1
1.1 操作系统的概念 1
1.1.1 计算机系统 1
1.1.2 操作系统的定义 2
1.1.3 操作系统的特征 3
1.1.4 研究操作系统的几种观点 4
1.1.5 操作系统的功能 5
1.2 操作系统的发展 8
1.2.1 手工操作 8
1.2.2 监控程序(早期批处理) 8
1.2.3 多道批处理 9
1.2.4 分时与实时系统 9
1.2.5 UNIX通用操作系统 9
1.2.6 个人计算机操作系统 10
1.2.7 当代操作系统的两大发展方向——宏观应用与微观应用 10
1.3 操作系统的分类 10
1.3.1 批处理操作系统 10
1.3.2 分时操作系统 13
1.3.3 实时操作系统 13
1.3.4 嵌入式操作系统 14
1.3.5 个人计算机操作系统 15
1.3.6 网络操作系统 15
1.3.7 分布式操作系统 15
1.3.8 智能卡操作系统 16
1.4 Solaris的发展史 17
1.4.1 Solaris与BSD UNIX 17
1.4.2 Solaris与Bill Joy 18
1.4.3 Solaris版本的演化过程 18
1.4.4 Solaris 8和Solaris 9操作系统 19
1.4.5 Solaris 10的特性 21
1.4.6 CDDL协议 26
1.5 本章小结 27
习题 28
第2章 Solaris体系结构和机制 30
2.1 操作系统的设计 30
2.1.1 操作系统的设计所面临的问题 30
2.1.2 操作系统的设计过程 31
2.1.3 操作系统的设计目标 31
2.1.4 操作系统的结构设计 33
2.2 Solaris内核体系结构 36
2.2.1 进程、线程和调度 37
2.2.2 新的线程模型 38
2.2.3 全局进程优先级和调度 39
2.2.4 进程间通信 40
2.2.5 内存管理 40
2.2.6 文件和文件系统 40
2.2.7 资源管理 41
2.3 Solaris系统机制 41
2.3.1 中断 41
2.3.2 系统调用 49
2.3.3 资源管理 54
2.4 本章小结 56
习题 57
第3章 进程管理 58
3.1 进程 58
3.1.1 程序的顺序执行和并发执行 58
3.1.2 进程的定义和描述 59
3.1.3 进程的状态转换 60
3.2 进程控制 63
3.2.1 进程的创建和退出 63
3.2.2 进程的阻塞和唤醒 64
3.3 线程 64
3.3.1 线程的概念 64
3.3.2 进程和线程的比较 65
3.4 Solaris进程和线程 66
3.4.1 进程对象 66
3.4.2 进程的核心组成部分 67
3.4.3 Solaris进程模型的演变 68
3.4.4 进程数据结构 69
3.4.5 进程创建 75
3.4.6 进程终止 77
3.5 进程互斥和同步 78
3.5.1 互斥算法 78
3.5.2 信号量 81
3.5.3 经典进程同步问题 84
3.5.4 管程 85
3.5.5 Solairs内核同步机制 86
3.6 进程间通信 95
3.6.1 System V的进程间通信框架 96
3.6.2 Solaris信号 98
3.6.3 Solairs信号量 102
3.6.4 Solaris共享存储区 103
3.6.5 Solairs消息队列 106
3.6.6 POSIX的进程间通信 107
3.6.7 Solairs门 110
3.7 死锁问题 113
3.7.1 概述 113
3.7.2 死锁的预防 114
3.7.3 死锁的检测 115
3.7.4 死锁的避免 115
3.7.5 解决死锁问题的综合方法 115
3.8 本章小结 115
习题 116
第4章 处理机调度 118
4.1 概述 118
4.1.1 处理机调度的类型 118
4.1.2 调度的性能准则 119
4.1.3 进程调度程序 119
4.2 调度算法 119
4.2.1 先来先服务算法 119
4.2.2 短作业优先算法 120
4.2.3 时间片轮转算法 120
4.2.4 多级队列算法 120
4.2.5 优先级算法 121
4.2.6 多级反馈轮转算法 121
4.3 Solaris的线程调度 121
4.3.1 Solaris的线程调度算法概述 121
4.3.2 Solaris调度程序和线程状态 122
4.3.3 Solaris调度类 124
4.3.4 Solaris线程优先级 125
4.3.5 Solaris调度类函数 126
4.3.6 Solaris的调度程序相关数据结构 127
4.3.7 调度队列管理 132
4.3.8 分时类TS和交互类IA 133
4.3.9 实时类RT 134
4.3.10 公平共享类FSS 135
4.4 本章小结 135
习题 136
第5章 存储管理 137
5.1 概述 137
5.1.1 存储体系 137
5.1.2 存储管理的任务 138
5.1.3 地址转换 139
5.2 分区存储管理方案 141
5.2.1 固定分区 141
5.2.2 可变分区 142
5.2.3 分区存储管理方案的优缺点 147
5.3 页式存储管理方案 148
5.3.1 基本思想 148
5.3.2 内存空间的分配与回收 148
5.3.3 地址转换与快表 149
5.3.4 页式存储管理的优缺点 151
5.4 段式存储管理方案 151
5.4.1 基本思想 152
5.4.2 内存空间的分配与回收 152
5.4.3 地址转换与存储保护 153
5.4.4 段式存储管理的优缺点 154
5.4.5 段页式存储管理方案 154
5.5 覆盖与交换技术 155
5.5.1 覆盖技术 155
5.5.2 交换技术 156
5.6 虚拟存储管理 157
5.6.1 虚拟存储技术 157
5.6.2 虚拟页式存储管理 158
5.7 Solaris的存储管理 164
5.7.1 概述 164
5.7.2 虚拟存储管理 167
5.7.3 物理内存管理 182
5.7.4 内核内存管理 193
5.8 本章小结 204
习题 205
第6章 文件系统 208
6.1 文件概念与实现 208
6.1.1 文件 208
6.1.2 文件实现 211
6.2 目录概念与实现 214
6.2.1 目录 214
6.2.2 目录实现 217
6.3 文件系统 217
6.3.1 文件系统模型 218
6.3.2 文件系统可恢复性 220
6.3.3 文件系统安全性 221
6.4 Solaris文件系统 222
6.4.1 Solaris文件系统框架 222
6.4.2 UFS文件系统 238
6.4.3 ZFS文件系统 253
6.5 本章小结 265
习题 265
第7章 设备管理 266
7.1 概述 266
7.1.1 设备管理的重要性和任务 266
7.1.2 设备的分类 267
7.1.3 计算机I/O系统的结构 268
7.1.4 I/O设备数据传送控制方式 268
7.2 设备管理的实现技术 272
7.2.1 中断技术 272
7.2.2 缓冲技术 275
7.2.3 设备分配技术 276
7.3 I/O软件的结构 278
7.3.1 设备驱动程序 279
7.3.2 与设备无关的系统软件 280
7.3.3 用户空间的I/O软件 281
7.4 Solaris的I/O子系统 282
7.4.1 I/O子系统与内核的关系 282
7.4.2 设备文件与设备文件系统 283
7.4.3 设备树 284
7.4.4 DDI/DKI 285
7.5 Solaris的设备驱动程序框架 286
7.5.1 设备和驱动程序的分类 286
7.5.2 设备驱动程序的结构与接口 286
7.5.3 通用于所有驱动程序的入口点 289
7.5.4 驱动程序的调用 292
7.6 Solaris的中断和DMA处理 299
7.6.1 中断处理 299
7.6.2 DMA处理 305
7.7 Solaris的各类设备驱动程序 309
7.7.1 字符设备驱动程序 309
7.7.2 块设备驱动程序 310
7.7.3 STREAMS设备驱动程序 311
7.8 简单的字符设备驱动程序 314
7.8.1 编写驱动程序 314
7.8.2 编写设备配置文件 318
7.8.3 创建与安装驱动程序 318
7.8.4 测试驱动程序 318
7.9 本章小结 319
习题 320
参考文献 321