目录 1
第1章 操作系统概论 1
1.1 操作系统的形成与发展 1
1.1.1 手工操作(操作系统的史前时代) 1
1.1.2 监控程序(操作系统的萌芽) 1
1.1.3 多道批处理操作系统(现代意义上的操作系统) 2
1.1.4 分时操作系统 4
1.1.5 实时操作系统 4
1.1.6 个人操作系统(贴近大众的操作系统) 4
1.1.7 网络操作系统 5
1.1.8 分布式操作系统 6
1.1.9 嵌入式操作系统 6
1.2 操作系统的基本概念 7
1.2.1 定义 7
1.2.2 操作系统在计算机系统中的地位 7
1.2.3 操作系统的功能 8
1.2.4 现代操作系统的发展 9
1.3 操作系统的特性 11
1.3.1 操作系统的主要性能指标 11
1.3.2 操作系统的特性 11
1.4 几种流行的操作系统 12
1.4.1 UNIX 12
1.4.2 Linux 16
1.4.3 DOS和Windows 21
1.5 关键术语 22
1.6 本章附件:GNU通用公共许可证GPL(the GNU General Public License) 22
习题1 22
第2章 作业管理 23
2.1 基本概念 23
2.1.1 作业、作业步和作业流 23
2.1.2 作业类别 24
2.1.3 作业管理功能 24
2.1.4 作业的状态及其转换 25
2.2.1 操作系统接口 26
2.2 用户与操作系统的接口 26
2.2.2 程序接口(系统调用) 27
2.2.3 Linux操作系统中的系统调用 28
2.3 批量型作业的管理与调度 29
2.3.1 批量型作业的组织结构 29
2.3.2 作业控制语言 30
2.3.3 作业的输入与输出 31
2.3.4 作业调度 32
2.4.1 交互型作业的特点 36
2.4 交互型作业的管理 36
2.4.2 Linux系统中的联机命令 37
2.4.3 X Windows 37
习题2 39
第3章 进程 41
3.1 并发进程 41
3.1.1 程序的顺序执行及其特点 41
3.1.2 程序的并发执行及其特点 42
3.2.1 进程的引入 46
3.2 进程的描述 46
3.2.2 进程控制块 47
3.2.3 Linux的进程控制块 49
3.3 进程的状态及其转换 52
3.3.1 进程的不同状态 52
3.3.2 状态转换模型 52
3.3.3 Linux的进程状态 54
3.4 进程的控制 54
3.4.1 原语操作 55
3.4.2 Linux中的进程控制 59
3.5 线程 63
3.5.1 线程的引入 63
3.5.2 线程的概念 64
3.5.3 引入线程的优点 64
3.5.4 线程和进程的关系 65
3.5.5 线程的状态及其转换 65
3.5.6 用户级线程和内核级线程 66
3.6 关键术语 68
习题3 69
第4章 并发性:互斥、同步和死锁 71
4.1 进程间的相互作用 71
4.1.1 互斥 72
4.1.2 临界资源和临界区 72
4.1.3 互斥的解决方案 73
4.1.4 信号量和PV操作 73
4.1.5 用P、V操作实现互斥 74
4.1.6 同步 75
4.1.7 用信号量实现进程同步 76
4.1.8 经典的进程同步和互斥问题 76
4.2 管程 80
4.2.1 管程的引出 80
4.2.2 管程的概念 80
4.2.3 用管程实现同步 81
4.3.1 死锁的形成 83
4.3 死锁及饿死 83
4.3.2 死锁的必要条件 84
4.3.3 死锁的预防 85
4.3.4 死锁的避免 85
4.3.5 死锁的检测 90
4.3.6 饿死的问题 91
4.4 关键术语 91
习题4 91
5.1 概念 93
第5章 进程间通信 93
5.2 信号 94
5.2.1 信号的类型 94
5.2.2 信号的产生与发送 94
5.2.3 信号的处理 95
5.2.4 信号的屏蔽 95
5.2.5 相关的系统调用 95
5.3.3 无名管道 96
5.3.2 管道实现原理 96
5.3.1 管道工作原理 96
5.3 管道 96
5.3.4 命名管道 99
5.4 System V通信机制 101
5.4.1 消息队列 102
5.4.2 信号量 107
5.4.3 共享内存 113
习题5 118
第6章 处理机调度 119
6.1 概念 119
6.1.1 进程调度的概念 119
6.1.2 进程调度的功能 120
6.1.3 引起进程调度的原因 120
6.1.4 选择进程调度算法的因素 120
6.1.5 进程调度的性能评价 121
6.2.3 短程调度 122
6.2.2 中程调度 122
6.2.1 长程调度 122
6.2 处理机调度的类型 122
6.3 进程调度算法 123
6.3.1 先来先服务调度算法 123
6.3.2 优先级调度算法 123
6.3.3 时间片轮转调度算法 124
6.3.4 最短进程优先调度算法 125
6.3.5 多级反馈队列调度算法 125
6.4.1 多机系统简介 126
6.4 多处理机调度 126
6.4.2 多处理机操作系统的分类 129
6.4.3 多处理机调度 131
6.5 Linux的进程调度 134
6.5.1 Linux进程调度的时机 134
6.5.2 进程的权值 134
6.5.3 进程调度的实现 135
6.5.4 进程调度的策略 135
习题6 136
7.2 存储器的物理组织 138
7.1 主存储器在计算机系统中的地位 138
第7章 存储管理 138
7.3 存储管理的研究内容 139
7.4 存储组织、管理及策略 139
7.5 用户程序的主要处理阶段 140
7.6 地址重定位 140
7.7 分区存储管理 142
7.7.1 单一分区 142
7.7.2 固定分区 142
7.7.3 可变分区 143
7.7.4 空闲区的分配和回收 144
7.7.5 分区的保护 146
7.8 简单页式存储管理 146
7.8.1 解决的思路 146
7.8.2 分页的方法 147
7.8.3 页式存储组织的实现 147
7.9 简单分段式存储管理 149
7.10 覆盖技术 151
7.12 虚拟存储管理技术和局部性原理 152
7.11 交换技术 152
7.13 虚拟页式存储管理技术 153
7.14 虚拟分段式存储管理技术 156
7.15 段页式存储管理技术 156
7.16 关键术语 157
7.17 本章附件:网络化虚拟存储技术 157
习题7 158
8.2 Linux的内存管理实现机构 161
第8章 Linux的内存管理 161
8.1 概述 161
8.3 Linux的分页 162
8.4 Linux的地址映射机制 163
8.5 Linux的存储管理 163
8.6 交换机制 165
8.7 本章附件:i386的虚拟地址——内存物理地址转换机制 165
9.1.1 外设的分类 166
9.1 概述 166
第9章 设备管理 166
9.1.2 设备管理的目标和功能 167
9.2 Linux的设备管理方式 167
9.3 I/O控制方式 168
9.3.1 设备控制器 168
9.3.2 循环测试I/O方式(程序直接控制方式) 169
9.3.3 中断技术及Linux的中断管理 169
9.3.4 直接存储器存储 172
9.3.5 通道方式 173
9.4 缓冲技术 173
9.5 设备分配 174
9.5.1 设备分配用数据结构 174
9.5.2 设备分配策略 174
9.6 Linux设备管理 176
9.7 Linux设备驱动程序的框架 179
9.7.1 Linux的块设备驱动程序 180
9.7.2 Linux的字符设备驱动程序 181
9.8 本章附件:磁盘阵列 182
习题9 187
第10章 文件系统 188
10.1 概述 188
10.2 文件系统的引入 188
10.3 文件系统的有关概念 189
10.4 文件的逻辑结构与存取方法 190
10.5 文件的物理结构与存储设备的特点 191
10.6 文件存储空间管理 194
10.7 目录管理 196
10.7.1 文件目录的概念 196
10.7.2 文件目录结构 197
10.7.3 文件访问的实现 198
10.7.4 文件的连接 199
10.8 文件的保护和保密 200
10.8.1 文件的共享 200
10.8.2 文件的保护和保密 200
10.9 文件的使用 201
习题10 202
第11章 LinUx文件系统的实现 204
11.1 概述 204
11.1.1 Linux文件系统的特点 204
11.1.2 Linux支持多种文件系统 204
11.1.3 Linux文件系统的结构 205
11.1.4 文件系统的注册 205
11.1.5 树形目录结构 206
11.1.6 文件系统的安装、卸载 206
11.2 ext2文件系统 208
11.2.1 ext2的磁盘布局 208
11.2.2 ext2的索引节点 211
11.2.3 ext2目录 213
11.2.4 文件查找 214
11.3 虚拟文件系统 215
11.3.1 VFS的超级块 215
11.3.2 VFS的索引节点 217
习题11 219
第12章 网络 221
12.1 概述 221
12.2 网络协议简介 221
12.3 Linux网络的分层结构 222
12.4 Linux的套接字及其缓冲区 223
12.4.1 套接字在网络中的地位 223
12.4.4 数据结构 224
12.4.3 Linux套接字的层次 224
12.4.2 套接字的作用 224
12.5 Linux网络协议 225
12.5.1 建立连接 225
12.5.2 撤销连接 225
12.5.3 数据发送 225
12.6 Linux的网络设备接口 226
12.6.1 结构 226
12.6.2 设备注册 227
12.7 本章附件:一些重要的数据结构 228
第13章 分布式处理、客户机/服务器和集群 229
13.1 概述 229
13.2 分布式操作系统 229
13.3 客户机/服务器计算 229
13.3.1 分布式环境的客户机/服务器模式 230
13.3.2 三(多)层浏览器/服务器结构 232
13.3.3 中间件 233
13.4 分布式进程通信 233
13.4.1 分布式消息传递 233
13.4.2 远过程调用 234
13.5 进程迁移 235
13.5.1 概念 235
13.5.2 机制 236
13.6 分布式环境下的互斥及死锁 236
13.6.1 概念 236
13.6.2 逻辑钟 237
13.6.4 死锁 238
13.6.3 互斥算法 238
13.7 集群 239
13.7.1 概念 239
13.7.2 集群技术的分类 239
13.7.3 Beowulf和Linux集群 240
13.7.4 参考站点 241
第14章 上机实验 242
实验1 Linux操作入门 242
实验2 Linux文件与目录的基本使用 244
实验3 vi编辑器的使用和Linux下的编程 248
实验4 几个常用命令、重定向和管道 254
实验5 Linux的进程管理 261
实验6 Linux文件系统 267
实验7 文件系统的结构 270
实验8 文件的权限管理 283
实验9 用户与用户管理 289
实验10 RedHat Linux的安装和删除——以RedHat Linux9为例 295
附录A 参考书籍及参考网站 314