第1章 概述 1
1.1 操作系统的定义 3
1.1.1 面向用户的操作系统 3
1.1.2 面向系统资源的操作系统 4
1.1.3 操作系统的定义 4
1.2 操作系统的发展简史 5
1.2.1 手工操作阶段 5
1.2.2 监督程序阶段 5
1.2.3 执行系统阶段 5
1.2.4 多道程序系统阶段 6
1.2.5 操作系统的形成 7
1.3 操作系统的分类 7
1.4 计算机系统硬件简介 11
1.4.1 中央处理器 11
1.4.2 存储器 11
1.4.3 磁盘 12
1.4.4 I/O设备 12
1.4.5 总线 13
1.4.6 操作系统的工作过程 13
1.5 系统调用 15
1.5.1 系统调用的基本类型 16
1.5.2 系统调用的实现 16
1.6 现代操作系统的特征 17
1.7 操作系统的发展趋势 19
1.8 Linux操作系统简介 20
1.8.1 Linux的产生 20
1.8.2 Linux的特性 20
1.8.3 Linux与Windows操作系统之间的差别 21
1.8.4 Linux的用户界面 22
本章小结 23
习题 24
第2章 进程控制 25
2.1 进程的概念 27
2.1.1 程序的顺序执行 27
2.1.2 程序的并发执行 28
2.1.3 进程的引入原因 31
2.2 进程控制 38
2.2.1 进程创建 38
2.2.2 进程撤销 40
2.2.3 进程阻塞 41
2.2.4 进程唤醒 42
2.2.5 Linux进程创建及执行实例 43
2.3 进程间通信 45
2.3.1 临界区与临界资源 46
2.3.2 忙等的互斥 46
2.3.3 用信号量机制实现互斥与同步 50
2.3.4 进程通信 56
2.3.5 Linux IPC概述 57
2.3.6 Linux管道通信 58
2.3.7 Linux软中断通信 60
2.4 经典的IPC问题 63
2.4.1 生产者与消费者问题 63
2.4.2 哲学家进餐问题 63
2.4.3 读者—写者问题 65
2.5 线程 66
2.5.1 线程的引入及定义 66
2.5.2 线程与进程的关系 67
2.5.3 线程的实现方法 68
2.5.4 Linux的线程管理 68
2.5.5 Linux线程管理相关函数 69
2.5.6 Linux线程管理举例 70
2.6 管程 71
2.6.1 管程的提出 71
2.6.2 管程概念 71
2.6.3 管程的组成 71
2.6.4 管程的形式 72
2.6.5 管程的三个主要特性 73
2.7 死锁 73
2.7.1 死锁的定义和起因 73
2.7.2 规避死锁的方法 74
2.8 小型案例实训 77
本章小结 78
习题 78
第3章 处理机调度 81
3.1 作业的概念 82
3.2 作业与进程的关系 83
3.3 多级调度的概念 84
3.3.1 高级调度 84
3.3.2 中级调度 85
3.3.3 低级调度 85
3.3.4 线程调度 85
3.4 调度算法 85
3.4.1 作业调度算法 86
3.4.2 进程调度算法 87
3.5 进程调度的时机 91
3.6 Linux进程调度 91
3.6.1 Linux进程调度的目标 91
3.6.2 Linux进程分类 92
3.6.3 Linux进程优先级 92
3.6.4 Linux进程调度程序 93
3.6.5 进程调度策略 94
3.6.6 可变优先级 94
3.6.7 可变时间片 94
3.6.8 Linux进程调度实现 95
3.7 小型案例实训 95
本章小结 103
习题 103
第4章 存储管理 106
4.1 存储管理概述 107
4.1.1 计算机系统的存储体系 108
4.1.2 存储器的组织方式 109
4.2 单一连续存储管理 112
4.3 分区存储管理 112
4.3.1 固定分区方式 112
4.3.2 可变分区方式 114
4.3.3 分区式存储管理的特点 116
4.3.4 分区式存储管理的内存扩充技术 117
4.4 分页存储管理 119
4.4.1 分页存储管理的基本原理 119
4.4.2 分页存储管理的数据结构 120
4.4.3 页式地址结构及转换 122
4.4.4 相联存储器和快表 124
4.4.5 分页存储管理的内存分配与回收 125
4.4.6 分页存储管理的内存共享与保护 126
4.4.7 分页存储管理的特点 127
4.5 分段存储管理 127
4.5.1 分段存储管理的基本原理 127
4.5.2 分段存储管理的数据结构 128
4.5.3 分段存储管理的地址结构及转换 128
4.5.4 内存分配与回收 129
4.5.5 段共享与保护 130
4.5.6 分段存储管理的特点 131
4.5.7 分页存储管理和分段存储管理的区别 131
4.6 段分页存储管理 131
4.7 虚拟存储管理系统 131
4.7.1 虚拟存储概述 131
4.7.2 请求分页虚拟存储管理 133
4.7.3 请求分段虚拟存储管理 138
4.7.4 段页式虚拟存储管理 138
4.8 Linux的存储管理 139
4.8.1 Intel 80386体系结构下的内存管理机制 139
4.8.2 Linux地址转换机制 142
4.8.3 Linux内存分配和释放 143
4.8.4 Linux进程虚拟内存地址 145
4.8.5 Linux页面操作 147
4.9 小型案例实训 149
本章小结 153
习题 153
第5章 设备管理 155
5.1 概述 156
5.1.1 设备的分类 156
5.1.2 设备管理的功能 157
5.2 设备控制器 158
5.2.1 设备控制器的基本功能 158
5.2.2 设备控制器的组成 159
5.3 数据传送控制方式 159
5.3.1 程序直接控制方式 160
5.3.2 中断控制方式 160
5.3.3 DMA方式 161
5.3.4 通道控制方式 163
5.4 中断技术 164
5.4.1 中断的基本概念 164
5.4.2 中断类型 166
5.4.3 中断的优先级 167
5.4.4 软件中断 168
5.5 缓冲技术 168
5.5.1 缓冲技术的引入 168
5.5.2 缓冲的分类与管理 169
5.6 设备独立性 169
5.7 设备分配 170
5.7.1 设备分配中的数据结构 170
5.7.2 设备分配时应考虑的因素 171
5.8 SPOOLing系统 172
5.9 Linux设备管理 173
5.9.1 设备管理概述 173
5.9.2 Linux的I/O控制 175
5.9.3 字符设备与块设备管理 177
5.10 小型案例实训 178
本章小结 182
习题 183
第6章 文件系统 184
6.1 文件 186
6.1.1 文件管理的几个基本概念 186
6.1.2 文件分类 187
6.2 文件组织形式 187
6.2.1 文件的逻辑结构 187
6.2.2 文件的物理结构 188
6.3 文件存储空间的管理 191
6.3.1 空闲文件目录法 191
6.3.2 空闲块链法 191
6.4 文件目录管理 192
6.4.1 文件目录管理的基本要求 192
6.4.2 文件控制块和索引节点 193
6.4.3 文件目录结构 193
6.4.4 文件共享 194
6.4.5 文件保护 195
6.5 文件操作 196
6.6 文件系统的层次模型 196
6.7 Linux文件系统概述 198
6.7.1 Linux文件系统特点 198
6.7.2 Linux的文件类型 198
6.7.3 Linux的虚拟文件系统 199
6.7.4 挂载、卸载文件系统 201
6.7.5 ext2文件系统 201
6.8 小型案例实训 202
本章小结 208
习题 209
第7章 Linux网络及服务器配置实例 211
7.1 Linux网络基础 212
7.1.1 Linux网络的相关概念 212
7.1.2 Linux的网络端口 212
7.1.3 Linux网络的相关配置文件 213
7.2 配置网卡 216
7.2.1 配置TCP/IP网络 216
7.2.2 网络相关命令 217
7.2.3 桌面环境下配置网卡 218
7.2.4 配置网络的shell命令 221
7.3 Linux网络服务 223
7.3.1 服务器软件与网络服务 223
7.3.2 管理服务 224
7.4 samba服务器 224
7.4.1 samba概述 224
7.4.2 samba的安装 227
7.4.3 samba的配置文件 227
7.4.4 samba的文件共享 227
7.4.5 samba的打印共享 229
7.4.6 启动和停止samba服务 230
7.4.7 编辑文件配置samba服务器实例 230
7.5 DNS服务器 232
7.5.1 配置主DNS服务器 232
7.5.2 配置辅助DNS服务器 234
7.5.3 测试DNS服务器 234
7.6 FTP服务器 236
7.6.1 FTP服务器简介 236
7.6.2 vsftpd服务器配置基础 237
7.6.3 配置vsftpd服务器 239
本章小结 240
习题 241
附录 242
参考文献 257