第1章 操作系统概述 1
1.1 操作系统概念 1
1.2 操作系统的功能 2
1.2.1 处理机管理 2
1.2.2 存储管理 3
1.2.3 设备管理 3
1.2.4 文件管理 4
1.2.5 作业管理 4
1.3 操作系统的发展 5
1.3.1 无操作系统的计算机系统 5
1.3.2 期简单批处理操作系统 6
1.3.3 多道批处理操作系统 6
1.4 操作系统的类型 7
1.4.1 单用户操作系统 8
1.4.2 批处理操作系统 8
1.4.3 分时操作系统 9
1.4.4 实时操作系统 10
1.4.5 通用操作系统 11
1.4.6 网络操作系统 12
1.4.7 分布式操作系统 12
1.5 操作系统的特征 13
1.6 Linux概述 14
1.6.1 Linux的优越性能 15
1.6.2 Linux内核的组成及功能 16
习题一 17
第2章 进程管理 18
2.1 进程的概念 18
2.1.1 程序的顺序执行及其特性 18
2.1.2 程序的并发执行及其特性 19
2.1.3 并行与并发的概念差别 21
2.1.4 进程的概念及其特性 22
2.1.5 进程的组成 23
2.1.6 PCB的组织方式 24
2.1.7 进程的状态及其转换 26
2.2 进程控制 28
2.2.1 原语 28
2.2.2 进程控制原语 28
2.3 进程调度 30
2.3.1 进程调度的功能 31
2.3.2 进程调度方式 31
2.3.3 进程调度的原则 32
2.3.4 进程调度算法 32
2.4 进程的同步与互斥 36
2.4.1 监界资源和临界区 36
2.4.2 进程的同步 36
2.4.3 进程的互斥 37
2.4.4 用锁操作原语实现进程的互斥 37
2.4.5 信号量及P、V操作原语 38
2.4.6 利用信号量及P、V操作原语实现进程的同步与互斥 39
2.4.7 经典的进程同步互斥问题 42
2.5 进程通信 46
2.5.1 进程通信机制 46
2.5.2 直接通信——消息缓冲通信 47
2.5.3 间接通信——信箱通信 49
2.6 线程 50
2.6.1 线程引入的目的 50
2.6.2 线程的概念 50
2.6.3 线程属性 50
2.6.4 线程和进程的关系 51
2.6.5 线程的功能特征 52
2.6.6 线程的分类及比较 52
2.7 Linux进程管理 53
2.7.1 Linux进程的组成 53
2.7.2 Linux进程的状态及转换 54
2.7.3 进程在处理机上执行的核心态和用户态 56
2.7.4 进程空间和系统空间 56
2.7.5 Linux的进程调度 57
2.7.6 Linux进程控制 65
习题二 67
第3章 作业管理及用户接口 69
3.1 操作系统的用户接口 69
3.1.1 程序级接口 69
3.1.2 作业控制级接口 71
3.2 作业管理 72
3.2.1 作业与作业步 72
3.2.2 作业控制方式 73
3.3 批处理作业的管理 74
3.3.1 批处理作业的组织 74
3.3.2 批处理作业的输入 75
3.3.3 作业控制块 75
3.3.4 作业状态 76
3.4 处理机调度级别 76
3.4.1 作业调度 77
3.4.2 进程调度 83
3.5 Linux系统调用的实现 85
3.5.1 系统调用 85
3.5.2 系统调用的实现 85
3.5.3 system_call的执行过程 87
习题三 88
第4章 存储管理 90
4.1 存储管理的功能 90
4.1.1 内存分配与回收 90
4.1.2 地址转换 91
4.1.3 存储保护 94
4.1.4 存储扩充 95
4.2 分区存储管理 95
4.2.1 单一连续区分配方案 95
4.2.2 固定分区管理 96
4.2.3 可变分区管理 97
4.3 页式存储管理 104
4.3.1 页的划分技术 104
4.3.2 逻辑地址的形式 105
4.3.3 相关数据结构 106
4.3.4 页式地址转换 106
4.3.5 快表 107
4.3.6 页的共享和保护 108
4.4 段式存储管理 110
4.4.1 段的划分技术 111
4.4.2 逻辑地址形式 111
4.4.3 内存分配 112
4.4.4 段表和段表控制寄存器 112
4.4.5 地址转换 113
4.4.6 段的共享与保护 113
4.5 虚拟存储技术 114
4.5.1 虚拟存储的基本思想 115
4.5.2 页式虚拟存储管理 117
4.5.3 段式虚拟存储管理 122
4.5.4 段页式存储管理 123
4.5.5 页式管理与段式管理的比较 125
4.6 Linux内存管理 127
4.6.1 进程的地址空间 127
4.6.2 Linux的分段和分页机制 128
4.6.3 Linux虚存管理的数据结构模型 130
4.6.4 物理内存空间的管理 132
习题四 134
第5章 文件管理 136
5.1 文件与文件系统 136
5.1.1 文件 136
5.1.2 文件的分类 137
5.1.3 文件系统及其功能 138
5.2 文件的组织结构 139
5.2.1 文件的逻辑结构 139
5.2.2 文件的物理结构 140
5.2.3 记录的成组与分解 144
5.3 文件的存取方法 144
5.3.1 顺序存取 144
5.3.2 随机存取 145
5.4 文件目录管理 145
5.4.1 文件的组成 145
5.4.2 文件控制块和文件目录 146
5.4.3 文件目录的结构 147
5.5 文件存储空间的管理 149
5.5.1 空闲区表法 149
5.5.2 空闲块链法 150
5.5.3 位示图法 152
5.6 文件的共享与保护 152
5.6.1 文件的共享 152
5.6.2 文件的保护 154
5.7 文件操作 156
5.7.1 建立文件 157
5.7.2 打开文件 157
5.7.3 读文件 158
5.7.4 写文件 158
5.7.5 关闭文件 158
5.7.6 删除文件 159
5.8 Linux文件系统 159
5.8.1 虚拟文件系统 160
5.8.2 文件系统的安装与卸载 168
5.8.3 VFS的系统调用 172
5.8.4 跨文件系统的文件操作的基本原理 172
5.8.5 ext2文件系统 172
习题五 178
第6章 设备管理 179
6.1 设备及设备管理的功能 179
6.1.1 设备的分类 179
6.1.2 设备管理的设计目标 180
6.1.3 设备管理的功能 180
6.2 I/O控制方式 181
6.2.1 查询等待方式 181
6.2.2 中断方式 181
6.2.3 DMA方式 182
6.2.4 通道方式 183
6.3 缓冲技术 188
6.3.1 缓冲技术的引入 188
6.3.2 缓冲的种类 188
6.4 中断技术 189
6.4.1 中断的有关概念 190
6.4.2 中断的类型 191
6.4.3 中断处理 192
6.4.4 中断返回 192
6.4.5 中断的处理全过程 192
6.4.6 多中断的处理 192
6.5 设备分配 193
6.5.1 设备分配的数据结构 193
6.5.2 设备分配技术 195
6.5.3 假脱机技术(SpooLing) 196
6.5.4 设备独立性 197
6.5.5 设备分配算法 198
6.6 I/O软件 199
6.6.1 I/O软件的目标 199
6.6.2 I/O软件的组成 199
6.6.3 I/O系统各层的主要功能 200
6.7 设备驱动程序 201
6.7.1 设备驱动程序的功能 201
6.7.2 设备驱动程序的特点 201
6.8 磁盘存储管理 202
6.8.1 磁盘结构 202
6.8.2 磁盘系统与磁盘分类 203
6.8.3 磁盘调度 203
6.9 Linux设备管理 207
6.9.1 Linux设备分类 207
6.9.2 设备的识别 209
6.9.3 设备文件 209
6.9.4 Linux设备驱动程序 210
6.9.5 Linux逻辑I/O与设备驱动程序的接口 211
6.9.6 Linux系统调用与设备驱动程序接口 214
6.9.7 Linux 对中断的处理 215
6.9.8 Linux设备I/O操作 216
习题六 220
第7章 死锁 222
7.1 死锁的概念 222
7.2 死锁产生的原因 223
7.3 死锁的特征 224
7.3.1 死锁产生的必要条件 224
7.3.2 资源分配图 225
7.4 处理死锁的基本方法 226
7.4.1 死锁的预防 227
7.4.2 死锁的避免 228
7.4.3 死锁的检测和解除 233
习题七 236
第8章 操作系统的安全性 238
8.1 安全操作系统的必要性 238
8.1.1 针对操作系统的典型威胁 238
8.1.2 现有防护方法及其不足 239
8.2 我国安全操作系统所面临的问题 240
8.2.1 目前常见的攻击者 240
8.2.2 病毒常见的攻击目标及对象 241
8.2.3 计算机网络攻击的常见手法 243
8.3 恶意程序防御机制 244
8.3.1 病毒防御机制 244
8.3.2 病毒检测与消除 245
8.4 安全操作系统设计 246
8.4.1 建立安全模型 246
8.4.2 安全操作系统设计 247
8.4.3 安全操作系统的可信度验证 248
8.5 安全操作系统的关键问题 249
8.6 安全发展对策 250
8.7 Linux系统下安全机制的管理 251
8.7.1 PAM机制 251
8.7.2 入侵检测系统 251
8.7.3 加密文件系统 252
8.7.4 安全审计 252
8.7.5 强制访问控制 253
8.7.6 防火墙 253
习题八 254
第9章 嵌入式操作系统 255
9.1 嵌入式系统及嵌入式操作系统的概念 255
9.1.1 嵌入式系统 255
9.1.2 嵌入式操作系统 256
9.2 嵌入式操作系统的发展历程 256
9.2.1 嵌入式技术的发展 256
9.2.2 嵌入式操作系统的发展 257
9.3 嵌入式操作系统的特点 257
9.3.1 实时性 257
9.3.2 可剪裁性 258
9.3.3 可靠性 258
9.4 嵌入式操作系统的种类 259
9.4.1 非实时操作系统 259
9.4.2 实时操作系统 259
9.5 几种代表性嵌入式操作系统 260
9.5.1 VxWorks 260
9.5.2 Windows CE 260
9.5.3 嵌入式Linux 261
9.5.4 µC/OS-Ⅱ 261
9.6 嵌入式操作系统的发展趋势 262
习题九 262
附录A 实验 263
实验一 作业管理实例:UNIX/Linux shell 263
实验二 Linux内核添加新的系统调用 264
实验三 文件权限管理设置实验 267
附录B Linux常用命令 270
B.1 文件操作命令 270
B.2 Linux目录的创建与删除命令 272
B.3 备份与压缩命令 273
B.4 在Linux环境下运行DOS命令 274
B.5 系统管理命令 274
参考文献 278