第1章 操作系统引论 1
1.1 引言 1
1.1.1 计算机和计算机系统 1
1.1.2 何谓操作系统 1
1.1.3 操作系统的地位、功能和构成 2
1.2 单机操作系统 3
1.2.1 批处理系统 4
1.2.2 分时系统 6
1.2.3 实时系统 6
1.2.4 基本操作系统的特征 7
1.3 微机操作系统 8
1.3.1 MS-DOS 8
1.3.3 UNIX操作系统 9
1.3.2 Windows操作系统 9
1.3.4 Linux操作系统 10
1.4 多机操作系统 10
1.4.1 多处理机操作系统 11
1.4.2 网络操作系统 11
1.4.3 分布式操作系统 12
1.5 Linux操作系统概述 13
1.5.1 Linux的起源和历史 13
1.5.2 Linux的特点 14
1.5.3 Linux的基本结构 15
1.6 本章小结 17
本章中的基本术语 18
习题与实验 19
2.1.1 操作系统与用户的接口形式 20
2.1 操作系统与用户的接口 20
第2章 操作系统接口 20
2.1.2 程序级接口 21
2.1.3 作业控制语言 23
2.1.4 操作系统与用户接口的发展和功能 23
2.2 联机控制 24
2.2.1 键盘命令 24
2.2.2 菜单命令 25
2.2.3 窗口命令 25
2.2.4 图形命令 26
2.2.5 对话框和对话窗口 27
2.3 作业控制 28
2.3.1 作业的输入方式 28
2.3.2 作业的状态和状态转换 29
2.3.3 作业的组织运行 30
2.3.4 作业调度 31
2.4 Linux的用户接口 34
2.4.1 Linux的外壳shell 34
2.4.2 X Window-Linux的图形窗口界面 36
2.5 Linux的使用操作简介 36
2.5.1 Linux的登录和退出 37
2.5.2 shell的常用命令 37
2.5.3 shell编程 39
2.6 本章小结 44
本章中的基本术语 45
习题与实验 46
第3章 进程管理 49
3.1 中断技术 49
3.1.1 中断概念 49
3.1.2 中断向量和优先级 50
3.1.3 中断类型 51
3.1.4 中断过程 51
3.1.5 UNIX的中断处理 52
3.1.6 中断处理程序的不同调用形式 53
3.2 程序的并发执行 54
3.2.1 资源与共享 54
3.2.2 程序的顺序执行 54
3.2.3 程序的并发执行 55
3.3 进程的概念 56
3.3.1 进程的定义和特征 56
3.3.2 进程状态及其转换 57
3.3.3 进程控制块 59
3.4.1 进程制约 60
3.4 进程同步与进程通信 60
3.4.2 临界区和临界资源 61
3.4.3 进程同步与互斥的概念 62
3.4.4 同步机构 62
3.4.5 进程互斥 64
3.4.6 进程同步 67
3.4.7 进程通信 70
3.5 进程控制 74
3.5.1 进程树和进程队列 74
3.5.2 进程控制原语 77
3.6 进程调度 80
3.6.1 进程调度综述 80
3.6.2 进程调度算法 81
3.7 死锁 82
3.7.1 死锁及产生的原因和必要条件 82
3.7.2 解决死锁的基本方法 84
3.8 线程 88
3.8.1 线程的概念 89
3.8.2 线程与进程的关系 89
3.8.3 线程的状态 90
3.8.4 线程类型 91
3.9 Linux的进程管理 93
3.9.1 Linux的进程 93
3.9.2 Linux的进程控制块 94
3.9.3 Linux的进程状态 103
3.9.4 Linux的进程调度 105
3.9.5 Linux的进程控制 108
3.9.6 Linux的进程通信 111
3.10 本章小结 116
习题与实验 117
第4章 存储管理 120
4.1 概述 120
4.1.1 存储管理的目的和功能 121
4.1.2 存储分配的方式和策略 121
4.1.3 虚拟存储器的概念 122
4.1.4 地址重定位技术 123
4.2 基本存储管理技术 125
4.2.1 单-连续区分配 125
4.2.2 固定分区管理 126
4.2.3 可变分区管理 127
4.2.4 可重定位分区和紧凑技术 132
4.2.5 存储保护 133
4.2.6 分区管理技术的优缺点分析 134
4.2.7 交换技术 135
4.3.1 分页存储管理的基本思想 136
4.3 分页存储管理 136
4.3.2 简单分页存储管理 137
4.3.3 简单分页存储管理的相关技术 138
4.3.4 请求分页存储管理 139
4.3.5 页面替换算法 140
4.3.6 优缺点分析 146
4.4 段式存储管理 146
4.4.1 基本原理 146
4.4.2 段式管理的存储保护措施 147
4.4.3 段式存储管理的优缺点分析 148
4.4.4 段页式存储管理 149
4.5 Linux的虚拟内存管理 151
4.5.1 Linux虚拟内存管理概述 151
4.5.2 Linux中的页目录和页面表 155
4.5.3 物理内存页面的分配和回收 158
4.5.4 内存映射 164
4.5.5 请页机制 171
4.5.6 缓冲机制 174
4.5.7 交换机制 176
4.6 本章小结 185
本章中的基本术语 187
习题与实验 188
第5章 设备管理 192
5.1 设备管理概述 192
5.1.1 计算机系统的设备 192
5.1.2 设备管理的基本功能 194
5.1.3 I/O设备的组成 195
5.2.1 循环I/O测试方式 196
5.2 I/O控制方式 196
5.2.2 程序中断控制方式 197
5.2.3 直接存储器存取(DMA)方式 197
5.2.4 通道的控制方式 199
5.3 缓冲技术和SPOOLing技术 202
5.3.1 缓冲技术(buffering)的引入 203
5.3.2 缓冲区的种类 203
5.3.3 SPOOLing技术 204
5.4 I/O软件 207
5.4.1 I/O软件的目标与层次结构 207
5.4.2 I/O中断的处理 209
5.4.3 设备驱动程序 210
5.4.4 与设备无关的I/O软件 211
5.4.5 用户空间的I/O软件 213
5.5.1 设备的分配的原则 214
5.5 设备的分配 214
5.5.2 逻辑设备名与物理设备名 217
5.5.3 独占设备的分配与释放 218
5.6 Linux设备管理 219
5.6.1 Linux设备管理概述 219
5.6.2 设备驱动程序基础 221
5.6.3 设备中断的处理 227
5.6.4 设备驱动程序框架 231
5.6.5 并口打印设备驱动程序 235
5.7 本章小结 238
习题与实验 240
第6章 文件系统 242
6.1 文件系统综述 242
6.1.1 文件类型 242
6.2.1 文件命名 244
6.1.2 文件系统 244
6.2 文件和存取方法 244
6.2.2 文件的逻辑结构 245
6.3 文件目录 245
6.3.1 文件控制块 246
6.3.2 文件目录结构 247
6.3.3 路径名 250
6.3.4 目录操作 250
6.4 文件的安全性和保护机制 251
6.4.1 安全性 251
6.4.2 安全性的设计原则 252
6.4.3 保护机制 252
6.4.4 存取权限的存取控制技术 254
6.5 文件的系统调用 255
6.5.1 文件的基本操作 256
6.5.2 文件的其他操作 257
6.6 文件存储器的管理 258
6.6.1 文件存储器简介 258
6.6.2 文件的物理组织和存储分配 258
6.6.3 文件存储器中空闲存储空间的管理 261
6.7 Linux文件系统概述 263
6.7.1 虚拟文件系统 263
6.7.2 文件的用户接口 264
6.8 Linux文件系统的实现 266
6.8.1 ext2文件系统的逻辑结构与物理结构 267
6.8.2 ext2文件系统存储空间管理 272
6.8.3 ext2文件系统目录文件的实现 278
6.9 Linux虚拟文件系统 280
6.9.1 虚拟文件系统的作用 280
6.9.2 VFS的超级块和索引节点 281
6.9.3 Linux文件系统调用 290
6.10 本章小结 301
本章中的基本术语 302
习题与实验 303
第7章 分布式操生系统 305
7.1 分布式系统简介 305
7.1.1 何谓分布式系统 305
7.1.2 分布式系统的分类 305
7.1.3 分布式操作系统 308
7.1.4 分布式系统的特点和设计目标 310
7.2 分布式系统中的通信和同步 311
7.2.1 分布式系统中的通信 312
7.2.2 客户/服务器模型 312
7.2.3 远程过程调用 314
7.3 分布式系统的同步问题 315
7.3.1 时钟同步 315
7.3.2 互斥问题 316
7.3.3 选举算法 316
7.3.4 死锁问题 317
7.4 分布式系统中的进程管理 317
7.4.1 线程 317
7.4.2 系统模型 318
7.4.3 处理器分配 319
7.5 分布式文件系统 319
7.5.1 分布式文件系统的设计 320
7.6 本章小结 321
习题答案 322
参考文献 343