第1章 绪论 1
目录 2
序 2
1.1 操作系统概述 2
1.1.1 操作系统的目标和作用 2
1.1.2 操作系统作为用户与计算机的接口 3
前言 4
1.1.3 操作系统作为计算机系统的资源管理器 4
1.2 操作系统的发展和类型 6
1.2.1 单道批处理系统 7
1.2.2 多道批处理系统 8
1.2.3 分时系统 9
1.2.4 实时系统 11
1.2.5 网络操作系统 12
1.2.6 分布式操作系统 12
1.3 微机操作系统 13
1.3.1 MS-DOS操作系统 13
1.3.2 Windows操作系统 14
1.3.3 Linux操作系统 15
1.4 Linux的使用常识 15
1.5 本章小结 15
1.6 习题 16
第2章 操作系统接口 18
2.1 联机命令接口 18
2.1.1 联机命令格式及其类型 18
2.1.2 终端处理程序 19
2.1.3 命令解释程序 20
2.2 程序接口 21
2.2.1 系统调用与函数调用 21
2.2.2 系统调用的类型 22
2.2.3 系统调用的实现 23
2.3 图形用户接口 23
2.4 Linux用户接口 24
2.4.1 Linux的命令行接口 24
2.4.2 Linux命令行中的通配符 24
2.4.3 Linux常用命令 25
第3章 处理机管理 31
2.4.4 Linux的图形接口 34
2.5 本章小结 38
2.7 实验:Linux常用命令和权限的使用 39
2.6 习题 39
3.1 进程的概念 41
3.1.1 程序的并发执行 42
3.1.2 进程的定义和特征 44
3.1.3 进程的状态及其转换 46
3.1.4 进程控制块PCB 48
3.2 进程控制 51
3.2.1 进程创建 51
3.2.2 撤消进程 52
3.2.3 进程阻塞 52
3.2.4 进程唤醒 52
3.2.5 进程切换 53
3.3 进程的同步与互斥 53
3.3.1 同步与互斥的概念 54
3.3.2 临界区与临界资源 55
3.3.3 软件方法解决进程之间的互斥 57
3.3.4 硬件方法解决互斥 61
3.3.5 信号量机制 63
3.3.6 经典同步问题 66
3.3.7 管程(Monitor) 70
3.4 处理机调度 72
3.4.1 调度的类型 72
3.4.2 调度准则 73
3.4.3 调度算法 74
3.4.4 多处理机调度 79
3.5.1 进程通信的类型 80
3.5 进程通信 80
3.5.2 直接通信 81
3.5.3 间接通信 83
3.6 死锁 84
3.6.1 死锁的概念 84
3.6.2 死锁产生的原因和条件 86
3.6.3 死锁的预防(Deadlock Prevention) 87
3.6.4 死锁的避免(Deadlock Avoidance) 88
3.6.5 死锁的检测与恢复 91
3.7 线程 92
3.7.1 线程的概念 92
3.7.2 线程实现的机制 93
3.8 Linux的进程管理 94
3.8.1 Linux的进程控制块 94
3.7.3 线程的状态 94
3.8.2 Linux进程状态 96
3.8.3 Linux的进程调度 97
3.8.4 Linux的进程控制 99
3.9 本章小结 99
3.10 习题 100
3.11 实验:进程间通信 102
第4章 存储器管理 104
4.1 概述 104
4.1.1 存储器管理的功能 104
4.1.2 用户程序的主要处理过程 106
4.1.3 存储器的层次 109
4.2 存储器的分区管理 109
4.2.2 固定分区管理 110
4.2.1 单一连续分区 110
4.2.3 动态分区管理 111
4.2.4 动态重定位分区管理 115
4.3 分页存储管理 115
4.3.1 分页存储管理的基本原理 115
4.3.2 分页存储管理系统中的地址转换 117
4.3.3 分页存储管理的优缺点 119
4.4 分段存储管理 120
4.4.1 分段存储管理的基本原理 120
4.4.2 地址转换机构 121
4.4.3 段的共享和保护 122
4.4.4 分段存储管理的优缺点 123
4.5 段页式存储管理 123
4.5.1 段页式存储管理的基本思想 123
4.5.2 段页式存储管理中的地址转换 124
4.5.3 段页式存储管理的优缺点 125
4.6 覆盖技术与交换技术 125
4.6.1 覆盖技术 125
4.6.2 交换技术 127
4.7 虚拟存储器管理 127
4.7.1 请求分页存储管理 129
4.7.2 请求分段存储管理 140
4.7.3 请求段页式管理 141
4.7.4 虚拟存储管理的优缺点 142
4.8 Linux的内存管理 142
4.8.1 地址映射 142
4.8.2 Linux的高速缓存机制 143
4.8.3 页面置换 145
4.8.4 内存空间的分配与回收 146
4.9 本章小结 148
4.10 习题 148
4.11 实验 150
第5章 文件系统 152
5.1 文件系统概述 152
5.1.1 文件及其分类 152
5.1.2 文件命名 153
5.1.3 文件系统的功能 153
5.2 文件结构和存取方法 154
5.2.1 文件的存取方法 154
5.2.2 文件的逻辑结构 155
5.2.3 文件的物理结构 155
5.3.1 文件目录及主要操作 159
5.3 文件目录 159
5.3.2 目录结构 160
5.3.3 文件目录的检索和改进 163
5.4 文件存储空间的管理 164
5.4.1 文件存储空间的管理方法 164
5.4.2 文件存储空间的分配 165
5.5 对文件的主要操作 166
5.6 文件的保护与文件系统的可靠性 168
5.6.1 文件的共享 168
5.6.2 文件的保护 170
5.6.3 文件系统的可靠性 172
5.7 Linux的文件系统 175
5.7.1 VFS文件系统 176
5.7.2 Linux EXT2文件系统 183
5.7.3 日志文件系统 186
5.8 本章小结 187
5.9 习题 188
5.10 实验 189
第6章 设备管理 191
6.1 设备管理概述 191
6.1.1 设备的类型 191
6.1.2 设备管理的目标和功能 192
6.1.3 I/O子系统的组成 193
6.1.4 设备驱动程序 194
6.2 I/O控制方式 195
6.2.1 程序(Programmed)I/O方式 195
6.2.2 中断驱动(Interrupt-Driven)I/O方式 196
6.2.3 接内存存取(DMA)方式 197
6.2.4 通道控制方式 199
6.3 缓冲技术 200
6.3.1 单缓冲(Single Buffer) 201
6.3.2 双缓冲(Double Buffer) 201
6.3.3 缓冲池 202
6.4 设备分配 203
6.4.1 设备分配策略 203
6.4.2 设备分配中的数据结构 204
6.4.3 设备分配过程 205
6.4.4 SPOOLing系统 206
6.5 磁盘管理与调度 207
6.6.1 Linux设备管理的实现层次 211
6.6 Linux设备管理 211
6.6.2 设备文件 212
6.6.3 输入/输出空间管理 213
6.6.4 设备驱动程序 215
6.7 本章小结 215
6.8 习题 216
第7章 操作系统的结构与设计 217
7.1 操作系统的设计目标 217
7.2 操作系统的结构 218
7.2.1 操作系统结构分类 218
7.2.2 操作系统的逻辑结构 220
7.2.3 微内核 220
7.3.2 层次结构法 222
7.3.1 模块接口法 222
7.3 操作系统的设计 222
7.3.3 核扩充法 223
7.4 Linux操作系统的结构 223
7.4.1 Linux内核 223
7.4.2 Linux shell 224
7.4.3 Linux文件结构 224
7.4.4 Linux实用工具 225
7.5 本章小结 225
7.5 习题 225
第8章 分布式操作系统 226
8.1 分布式操作系统概述 226
8.1.1 分布式操作系统特点 226
8.1.3 资源管理 227
8.1.2 进程通信 227
8.1.4 系统结构 228
8.2 分布式系统的进程管理 228
8.2.1 进程迁移 228
8.2.2 同步与互斥 230
8.2.3 进程间的通信 231
8.2.4 死锁问题 232
8.3 分布式文件系统 235
8.3.1 概述 235
8.3.2 分布式文件系统的文件服务 235
8.3.3 分布式文件系统的目录服务 236
8.4 本章小结 236
8.5 习题 237
参考文献 238