第1章 操作系统概述 1
1.1 操作系统的概念 1
1.1.1 计算机系统 1
1.1.2 操作系统的定义 4
1.2 操作系统的发展 5
1.2.1 操作系统的形成阶段 6
1.2.2 操作系统的作用 14
1.2.3 操作系统的类型 15
1.3 操作系统的功能 17
1.3.1 进程管理 17
1.3.2 存储管理 17
1.3.3 设备管理 17
1.3.4 文件管理 18
1.3.5 作业管理 18
1.4 操作系统的特征 18
1.5 操作系统的逻辑结构 19
1.5.1 操作系统对象 20
1.5.2 操作系统对象操纵和管理的软件集合 20
1.5.3 用户接口 21
1.6 常用操作系统介绍 21
1.6.1 Linux操作系统介绍 21
1.6.2 UNIX操作系统介绍 24
1.6.3 Windows操作系统介绍 25
1.7 操作系统的几种观点 25
1.7.1 资源管理观点 26
1.7.2 进程观点 26
1.7.3 虚拟机器的观点 27
本章小结 27
习题 27
第2章 作业管理 29
2.1 操作系统与用户的接口 29
2.1.1 程序级接口 30
2.1.2 命令接口 31
2.2 作业管理概述 32
2.2.1 作业、作业步、作业流 32
2.2.2 作业管理的任务 34
2.3 批处理方式下的作业管理 34
2.3.1 作业的构成 35
2.3.2 作业控制块 35
2.3.3 作业进入系统和作业建立 36
2.3.4 作业状态的变迁 36
2.3.5 作业调度 37
2.3.6 作业控制 42
2.3.7 作业完成 44
本章小结 44
习题 45
第3章 进程管理 46
3.1 进程的引入和定义 46
3.1.1 程序的顺序执行与特点 46
3.1.2 程序的并发执行及其特点 47
3.1.3 进程的定义与特征 49
3.2 进程的状态与转换 51
3.2.1 进程的状态 51
3.2.2 进程状态的转换 51
3.3 进程的描述 53
3.3.1 进程的组成 53
3.3.2 进程控制块 53
3.4 进程的调度 55
3.4.1 进程控制原语 55
3.4.2 进程调度 58
3.4.3 进程调度算法 60
3.5 进程间的通信 62
3.5.1 进程通信的概念 62
3.5.2 进程的互斥与同步 63
3.5.3 进程互斥与同步的实现 68
3.6 死锁 72
3.6.1 死锁产生的原因和必要条件 72
3.6.2 死锁的预防与避免 74
3.6.3 死锁的解除 76
3.7 线程 77
3.7.1 线程的概念 77
3.7.2 线程和进程的关系 77
3.7.3 线程的状态及转换 77
3.7.4 引入线程的好处 78
3.8 综合应用 78
本章小结 81
习题 81
第4章 存储管理 83
4.1 存储管理概述 83
4.2 重定位 84
4.3 分区存储管理 86
4.3.1 单一连续存储管理分配 86
4.3.2 固定分区分配 86
4.3.3 可变式动态分区分配 87
4.3.4 可重定位分区分配 89
4.3.5 多重分区分配 89
4.4 分页存储管理方式 90
4.4.1 分页和分块 90
4.4.2 逻辑地址表示 90
4.4.3 页表 91
4.4.4 地址转换与存储保护 91
4.4.5 页面置换算法 92
4.4.6 页式存储管理的优缺点 96
4.5 段式存储管理 96
4.5.1 基本原理 96
4.5.2 主存空间的分配与回收 98
4.5.3 地址转换与存储保护 98
4.5.4 段的共享与保护 100
4.5.5 段式存储管理的优缺点 100
4.5.6 段式存储管理和页式存储管理的主要区别 101
4.5.7 可分页的段式存储管理 101
本章小结 102
习题 103
第5章 设备管理 104
5.1 设备管理概述 104
5.1.1 设备管理的重要性 104
5.1.2 设备的分类 106
5.1.3 设备管理的功能 108
5.1.4 I/O设备控制模式 111
5.1.5 设备管理功能的实现方式 111
5.2 I/O设备硬件的特点 112
5.2.1 I/O设备的组成 113
5.2.2 I/O设备接口 115
5.3 I/O软件的组成 118
5.3.1 I/O软件的目标 118
5.3.2 中断处理程序 119
5.3.3 设备驱动程序 120
5.3.4 与设备无关的软件 122
5.3.5 用户空间的I/O软件 124
5.4 I/O设备分配 125
5.4.1 设备分配用数据结构 125
5.4.2 设备分配的原则 126
5.4.3 设备分配与回收算法 128
5.5 I/O设备有关技术 129
5.5.1 Spooling技术 129
5.5.2 输入/输出通道 130
5.5.3 DMA技术 133
5.5.4 缓冲技术 135
5.6 存储设备 139
5.6.1 常见存储外设 139
5.6.2 磁盘调度 143
5.6.3 磁盘阵列 146
本章小结 152
习题 153
第6章 文件管理 156
6.1 文件管理概述 156
6.1.1 文件系统的引入 156
6.1.2 文件与文件系统 157
6.1.3 文件的分类 159
6.2 文件的逻辑结构与存取方式 160
6.2.1 文件的逻辑结构 160
6.2.2 文件存取方式 161
6.3 文件的物理结构与存储介质 163
6.3.1 文件的物理结构 163
6.3.2 存储设备 168
6.3.3 典型存储设备——磁盘 171
6.3.4 文件物理结构与文件存取方式 173
6.4 文件目录 173
6.4.1 文件目录的组成 173
6.4.2 文件目录结构 174
6.4.3 文件目录检索 177
6.5 文件系统的实现 179
6.5.1 文件记录块 179
6.5.2 文件寻址 180
6.5.3 实现文件的表目 181
6.5.4 磁盘空间的管理 182
6.6 文件系统的使用 186
6.6.1 文件操作 186
6.6.2 目录操作 188
6.7 文件系统的安全 189
6.7.1 文件共享 189
6.7.2 文件的保护 190
6.7.3 文件的存取权限 191
6.7.4 UNIX中的文件存取权限 192
6.7.5 安全环境 194
6.7.6 安全性的设计原则 195
本章小结 195
习题 196
第7章 Linux操作系统 199
7.1 概述 199
7.1.1 什么是Linux 199
7.1.2 为什么使用Linux 200
7.1.3 Linux的特点 200
7.1.4 Linux系统的组成 201
7.1.5 Linux的主要版本 202
7.2 Linux的安装 204
7.2.1 Linux安装前的准备工作 204
7.2.2 Linux的安装 204
7.3 LILO的配置和使用 208
7.3.1 LILO简介 208
7.3.2 LILO配置 209
7.3.3 LILO提示信息 210
7.4 常用的Linux命令 211
7.4.1 文件和目录操作命令 211
7.4.2 显示命令 217
7.4.3 进程管理和作业控制 219
本章小结 227
习题 227
第8章 操作系统实验及课程设计 229
8.1 进程调度 229
8.1.1 实验目的和要求 229
8.1.2 实验内容 229
8.1.3 预备知识 230
8.1.4 实验指导 230
8.2 进程通信 244
8.2.1 实验目的和要求 244
8.2.2 实验内容 244
8.2.3 预备知识 245
8.2.4 实验指导 246
8.3 存储器管理 257
8.3.1 实验目的和要求 257
8.3.2 实验内容 257
8.3.3 预备知识 258
8.3.4 实验指导 258
8.4 磁盘调度 273
8.4.1 实验目的和要求 273
8.4.2 实验内容 273
8.4.3 预备知识 273
8.4.4 实验指导 273
8.5 文件管理 282
8.5.1 实验目的和要求 282
8.5.2 实验内容 282
8.5.3 预备知识 283
8.5.4 实验指导 283
8.6 进程同步之经典问题 297
8.6.1 实验目的和要求 297
8.6.2 实验内容 297
8.6.3 预备知识 297
8.6.4 实验指导 299
8.7 Linux操作系统的使用实验 305
8.8 课程设计1——生产者和消费者问题 309
8.8.1 课程设计的性质与任务 309
8.8.2 课程设计的内容及其要求 309
8.8.3 课程设计的时间安排 310
8.8.4 课程设计的实验环境 310
8.8.5 设计指导 310
8.9 课程设计2——银行家算法 317
8.9.1 课程设计的性质和任务 317
8.9.2 课程设计内容和要求 317
8.9.3 课程设计的时间安排 317
8.9.4 课程设计的实验环境 317
8.9.5 设计指导 318
8.9.6 部分源代码 322
参考文献 332