第1章 操作系统概述 1
1.1 操作系统简介 1
1.1.1 操作系统的作用 1
1.1.2 操作系统的功能及其特征 2
1.2 操作系统的发展动力和发展目标 5
1.2.1 操作系统的发展动力 5
1.2.2 操作系统的发展目标 6
1.3 操作系统的发展历程 6
1.3.1 批处理操作系统 6
1.3.2 分时操作系统 8
1.3.3 实时操作系统 9
1.3.4 网络操作系统 10
1.3.5 分布式操作系统 10
1.3.6 微机操作系统 11
1.3.7 嵌入式操作系统 11
习题1 12
第2章 用户接口与作业管理 16
2.1 概述 16
2.1.1 作业的概念 16
2.1.2 用户接口 16
2.2 命令接口 17
2.2.1 联机命令接口 17
2.2.2 脱机命令接口 18
2.3 系统调用 18
2.3.1 系统调用的概念 18
2.3.2 系统调用的处理过程 19
2.4 作业管理 19
2.4.1 作业控制块和作业表 19
2.4.2 作业的建立 20
2.4.3 批处理作业的调度 21
2.4.4 作业的执行 22
2.4.5 作业的终止与撤销 23
2.4.6 作业的状态 24
习题2 24
第3章 进程与进程管理 25
3.1 进程的引入 25
3.1.1 前趋图的定义 25
3.1.2 程序的顺序执行 26
3.1.3 程序的并发执行 26
3.2 进程 27
3.2.1 进程的概念 27
3.2.2 进程的基本状态及其转换 28
3.2.3 进程控制块 29
3.2.4 进程控制 30
3.3 进程调度 33
3.3.1 调度的基本概念 33
3.3.2 进程调度算法 34
3.3.3 进程调度的时机 38
3.4 线程的基本概念 39
3.4.1 线程的引入 39
3.4.2 线程的定义与属性 39
3.4.3 线程与进程的比较 40
3.4.4 线程的实现机制 41
3.5 Linux的进程与进程管理 42
3.5.1 Linux的进程结构 42
3.5.2 Linux的进程创建 43
3.5.3 Linux的线程 43
3.5.4 Linux的进程终结 43
3.5.5 Linux的进程调度 44
3.5.6 Linux 2.6调度器简介 45
习题3 46
第4章 进程同步与通信 52
4.1 进程间的相互作用 52
4.1.1 进程间的联系 52
4.1.2 利用软件方法解决进程互斥问题 54
4.1.3 利用硬件方法解决进程互斥问题 55
4.1.4 信号量机制 56
4.1.5 经典进程同步问题 60
4.1.6 管程机制 68
4.2 进程通信 71
4.2.1 进程通信的类型 71
4.2.2 直接通信和间接通信 72
4.2.3 消息缓冲队列通信机制 73
4.3 死锁 75
4.3.1 产生死锁的原因和必要条件 75
4.3.2 预防死锁 77
4.3.3 避免死锁 78
4.3.4 检测死锁 81
4.3.5 解除死锁 82
4.4 Linux进程间通信 82
4.4.1 Linux进程间的通信方式 82
4.4.2 消息队列 83
4.4.3 Linux下的信号量机制 84
4.4.4 共享内存机制 85
习题4 86
第5章 存储器管理 92
5.1 概述 92
5.1.1 存储体系 92
5.1.2 存储管理的目的 93
5.1.3 存储管理的任务 93
5.1.4 程序的链接与装入 94
5.1.5 存储管理方式的分类 96
5.2 连续分配存储管理方式 97
5.2.1 单一连续分配 97
5.2.2 分区分配 97
5.3 覆盖技术与交换技术 102
5.3.1 覆盖技术 103
5.3.2 交换技术 103
5.4 分页存储管理方式 104
5.4.1 工作原理和页表 104
5.4.2 动态地址变换 105
5.4.3 快表 106
5.4.4 两级与多级页表 107
5.5 分段存储管理方式 109
5.5.1 工作原理和段表 110
5.5.2 动态地址变换 110
5.5.3 存储保护 111
5.5.4 分页与分段的主要区别 112
5.6 段页式存储管理方式 112
5.6.1 工作原理 112
5.6.2 地址变换 113
5.7 虚拟存储器 113
5.7.1 概述 114
5.7.2 分页虚拟存储管理 115
5.7.3 页面置换算法 118
5.7.4 分段虚拟存储管理 123
5.8 Linux的内存管理 125
5.8.1 Linux内存管理概述 125
5.8.2 Linux地址空间及映射实现 125
5.8.3 Linux虚拟内存管理 126
5.8.4 Linux物理内存管理 128
5.8.5 Linux缓存管理 129
习题5 129
第6章 文件管理 139
6.1 概述 139
6.1.1 文件与文件系统 139
6.1.2 文件的分类 141
6.2 文件的存取方式和结构 142
6.2.1 文件的存取方式 143
6.2.2 文件的逻辑结构 143
6.2.3 存储介质和块 144
6.2.4 文件的物理结构 145
6.3 文件目录 149
6.3.1 文件控制块 150
6.3.2 文件目录结构 150
6.3.3 目录的查找和改进 153
6.4 文件系统的实现 154
6.4.1 打开文件表 154
6.4.2 外存空间管理 155
6.5 文件的使用 158
6.5.1 文件的基本操作 158
6.5.2 文件共享 160
6.6 文件系统的安全性和数据的一致性 162
6.6.1 防止人为因素造成文件的不安全性 163
6.6.2 防止系统、自然因素造成文件的不安全性 164
6.6.3 文件系统的数据一致性 167
6.7 磁盘调度 168
6.7.1 磁盘I/O时间 169
6.7.2 磁盘的移臂调度 170
6.8 Linux文件系统 173
6.8.1 超级块、dentry和节点结构 173
6.8.2 超级块、dentry和节点操作 174
6.8.3 目录缓存器 176
6.8.4 文件的操作 177
6.8.5 EX2文件系统 177
习题6 179
第7章 设备管理 182
7.1 概述 182
7.1.1 设备的分类 182
7.1.2 设备管理的目标和功能 184
7.2 I/O系统 184
7.2.1 I/O系统结构 185
7.2.2 设备接口 185
7.2.3 设备控制器 185
7.2.4 通道 187
7.2.5 I/O控制方式 189
7.2.6 缓冲技术 192
7.3 设备分配 195
7.3.1 设备分配中的数据结构 195
7.3.2 设备独立性 196
7.3.3 设备分配策略 197
7.4 虚拟设备 199
7.4.1 SPOOLing技术 199
7.4.2 共享打印机 200
7.4.3 SPOOLing系统的特点 200
习题7 201
参考文献 204