第1章 绪论 1
1.1 操作系统在计算机系统中的地位 1
1.1.1 存储程序式计算机的结构和特点 1
1.1.2 操作系统与计算机系统各层次的关系 3
1.1.3 操作系统与计算机体系结构的关系 4
1.2 操作系统的形成和发展 6
1.2.1 操作系统发展的初级阶段 7
1.2.2 操作系统的形成 9
1.2.3 操作系统的进一步发展 11
1.3 操作系统的基本概念 12
1.3.1 操作系统的定义和特性 12
1.3.2 操作系统的资源管理功能 14
1.3.3 操作系统应解决的基本问题 16
1.4 操作系统的基本类型 17
1.4.1 批量操作系统 17
1.4.2 分时操作系统 18
1.4.3 实时操作系统 18
1.4.4 个人计算机操作系统 19
1.4.5 网络操作系统 20
1.4.6 分布式系统 21
1.5 操作系统采用的关键技术 23
1.5.1 操作系统采用的并行处理技术 24
1.5.2 操作系统采用的虚拟技术 24
1.6 Linux系统概述 25
1.6.1 UNIX系统及其特点 25
1.6.2 Linux系统形成和发展的基础 27
1.6.3 Linux系统及其特点 29
习题1 31
第2章 操作系统的结构和硬件支持 33
2.1 操作系统虚拟机 33
2.2 操作系统的组织结构 34
2.2.1 操作系统的结构 34
2.2.2 运行时的组织结构 37
2.2.3 操作系统与计算机系统各层次的接口 38
2.3 处理机的特权级 38
2.3.1 处理机的状态及分类 38
2.3.2 特权指令 39
2.4 中断及其处理 39
2.4.1 中断的概念及类型 39
2.4.2 向量中断和探询中断 41
2.4.3 中断进入 42
2.4.4 软件中断的处理过程 44
2.5 Linux系统的内核结构 46
2.6 Linux系统的特权级与中断处理 46
2.6.1 Linux系统的特权级 46
2.6.2 中断处理的上半部和下半部 47
2.6.3 中断处理下半部的实现机制 48
习题2 49
第3章 操作系统的用户接口 50
3.1 用户工作环境 50
3.1.1 操作系统提供的环境 50
3.1.2 操作系统的生成和系统初启 51
3.1.3 应用程序的处理 54
3.2 用户接口 55
3.2.1 用户接口的定义 55
3.2.2 操作系统提供的用户接口 56
3.3 系统功能调用 58
3.3.1 系统功能调用的定义 58
3.3.2 系统功能调用的实现 59
3.3.3 应用程序的编程接口 60
3.4 Linux系统功能调用 60
3.4.1 Linux系统功能调用的过程 60
3.4.2 Linux系统功能调用的实现机制 62
3.4.3 增加一个新的系统调用的方法 63
3.4.4 从用户空间访问新的系统调用 64
习题3 65
第4章 进程及进程管理 66
4.1 进程的引入 66
4.1.1 顺序程序及特点 66
4.1.2 并发程序及特点 67
4.1.3 与时间有关的错误 70
4.2 进程的概念 71
4.2.1 进程的定义 71
4.2.2 进程的状态 72
4.2.3 进程控制块 74
4.3 进程控制 75
4.3.1 进程控制的概念 75
4.3.2 进程创建与撤销 76
4.3.3 进程阻塞与唤醒 77
4.4 进程之间的约束关系 79
4.4.1 进程竞争与合作 79
4.4.2 进程互斥的概念 79
4.4.3 进程同步的概念 81
4.5 同步机构 83
4.5.1 锁和上锁、开锁操作 83
4.5.2 信号灯和P、V操作 84
4.6 进程互斥与同步的实现 86
4.6.1 上锁原语和开锁原语实现进程互斥 86
4.6.2 信号灯实现进程互斥 87
4.6.3 进程同步的实现 88
4.6.4 生产者——消费者问题 91
4.7 进程通信 92
4.7.1 进程通信的概念 92
4.7.2 进程通信方式 92
4.8 线程概念及特点 94
4.8.1 线程的概念 94
4.8.2 线程的特点与状态 95
4.9 Linux系统的进程管理 97
4.9.1 Linux系统的进程与线程 97
4.9.2 进程描述符及其主要内容 97
4.9.3 进程描述符的获得 99
4.9.4 Linux系统进程状态的变迁 100
4.9.5 Linux系统的进程创建和终止 101
4.9.6 Linux系统的进程等待与唤醒 102
4.9.7 Linux系统中线程的实现 103
习题4 104
第5章 资源分配与调度 107
5.1 资源管理概述 107
5.1.1 资源管理的目的和任务 107
5.1.2 虚拟资源 108
5.2 资源管理的机制和策略 109
5.2.1 资源分配机制 109
5.2.2 资源分配策略 110
5.3 死锁 115
5.3.1 死锁的定义与例子 115
5.3.2 产生死锁的原因和必要条件 116
5.3.3 系统模型和死锁的处理 118
5.3.4 解决死锁问题的策略 121
5.3.5 死锁的预防 122
5.3.6 死锁的避免 123
5.3.7 死锁的检测与忽略 125
习题5 125
第6章 处理机调度 127
6.1 处理机的多级调度 127
6.2 针对作业的调度 128
6.2.1 作业的状态 128
6.2.2 作业调度的功能与作业控制块 128
6.2.3 作业调度算法性能的衡量 130
6.2.4 作业调度算法 131
6.3 进程调度 132
6.3.1 调度/分派结构 132
6.3.2 进程调度的功能 133
6.3.3 调度方式 134
6.3.4 进程优先数调度算法 135
6.3.5 循环轮转调度 136
6.3.6 多级反馈队列调度 137
6.3.7 调度用的进程状态变迁图 138
6.4 线程调度 139
6.5 Linux系统的进程调度 140
6.5.1 进程调度程序的设计目标和特点 141
6.5.2 可变优先级 141
6.5.3 可变时间片 143
6.5.4 进程调度用的数据结构 144
6.5.5 Linux系统的进程调度算法 145
习题6 146
第7章 主存管理 148
7.1 主存管理概述 148
7.1.1 主存分片共享 148
7.1.2 程序的逻辑组织 149
7.2 主存管理的功能 149
7.2.1 虚拟存储器 149
7.2.2 地址映射 150
7.2.3 主存分配 153
7.2.4 存储保护 153
7.3 分区存储管理及其存在的问题 154
7.3.1 动态分区存储管理技术 155
7.3.2 分区分配机构 156
7.3.3 分区的分配与放置策略 156
7.3.4 碎片问题及拼接技术 159
7.4 页式存储管理 160
7.4.1 页式系统应解决的问题 160
7.4.2 页式地址变换 161
7.4.3 请调页面的机制 164
7.4.4 淘汰机制与策略 166
7.4.5 几种置换算法 167
7.5 段式系统和段页式系统 171
7.5.1 段式地址结构 171
7.5.2 段式地址变换 171
7.5.3 扩充段表功能 172
7.5.4 段页式存储管理 172
7.6 Linux系统的存储管理 174
7.6.1 主存寻址 174
7.6.2 Linux系统段页式地址变换 176
7.6.3 Linux系统动态内核管理 178
7.6.4 Linux系统的进程地址空间 181
习题7 183
第8章 设备管理 186
8.1 设备管理概述 186
8.1.1 设备管理的功能 186
8.1.2 设备独立性 187
8.1.3 设备控制块 189
8.2 缓冲技术 190
8.2.1 缓冲概述 190
8.2.2 常用的缓冲技术 191
8.2.3 UNIX系统的缓冲区管理 192
8.3 设备分配 199
8.3.1 设备分配概述 199
8.3.2 独享分配 200
8.3.3 共享分配 200
8.3.4 虚拟分配 200
8.4 输入/输出控制 202
8.4.1 输入/输出硬件 202
8.4.2 输入/输出控制方式 204
8.4.3 输入/输出子系统 206
8.4.4 输入/输出控制的例子 208
8.5 Linux系统的设备驱动 210
8.5.1 Linux系统设备的分类 211
8.5.2 设备文件及其标识 211
8.5.3 Linux块设备的处理 213
8.5.4 用于块设备处理的数据结构 215
8.5.5 输入/输出调度程序 217
8.5.6 策略例程 218
习题8 219
第9章 文件系统 221
9.1 文件系统概述 221
9.1.1 文件 221
9.1.2 文件系统 223
9.1.3 文件的组织 224
9.2 文件的逻辑结构和存取方法 225
9.2.1 文件的逻辑结构 225
9.2.2 文件的存取方法 226
9.3 文件的物理结构 226
9.3.1 连续文件 227
9.3.2 串联文件 228
9.3.3 索引文件 229
9.3.4 文件物理结构比较 232
9.3.5 LNIX系统的索引文件结构 232
9.4 文件目录 237
9.4.1 文件目录及其内容 237
9.4.2 一级文件目录及缺点 237
9.4.3 多级文件目录 238
9.5 共享与安全 239
9.5.1 文件共享与安全性的关系 239
9.5.2 文件共享的实现方法 240
9.5.3 存取权限的类型及其验证 240
9.6 文件操作与文件备份 243
9.6.1 文件操作 243
9.6.2 文件备份 244
9.7 Linux文件系统 246
9.7.1 虚拟文件系统(virtual file system,VFS)概述 246
9.7.2 VFS通用文件系统模型与VFS对象 246
9.7.3 与进程相关的数据结构 250
9.7.4 VFS系统调用的实现 251
9.7.5 Ext2文件系统概述 253
9.7.6 Ext2磁盘数据结构 255
9.7.7 Ext2磁盘空间的管理 257
9.7.8 Ext2主存数据结构 260
习题9 260
模拟试题1 263
模拟试题2 265
模拟试题1答案 267
模拟试题2答案 271
参考文献 275