第1部分 原理篇 3
第1章 操作系统概论 3
1.1 什么是操作系统 3
1.2 操作系统的发展历史 4
1.3 现代操作系统类型 7
1.4 操作系统的概念、特征和功能 11
1.5 UNIX操作系统概述 14
习题1 16
第2章 存储管理 18
2.1 存储管理基础 18
2.2 基本存储管理方法 20
2.3 可变分区存储管理 21
2.4 内存扩充技术 25
2.5 纯分页的存储管理 27
2.6 请求分页系统 30
2.7 段式存储管理 33
2.8 段页式存储管理 34
2.9 Linux存储管理 35
习题2 43
第3章 进程管理 44
3.1 进程概述 44
3.2 进程控制块 46
3.3 调度 50
3.3.1 调度概述 50
3.3.2 进程调度策略 50
3.3.3 进程调度算法 51
3.4 UNIX系统的进程调度 54
3.5 进程的控制 57
3.6 进程的创建和映像改换 60
3.7 线程 62
3.7.1 多线程 62
3.7.2 线程的状态与功能 64
3.7.3 用户级和核心级线程 64
3.7.4 线程应用示例 66
3.8 Linux进程管理 66
3.8.1 Linux进程控制块 67
3.8.2 进程调度 70
3.8.3 进程创建 74
3.8.4 Linux的线程 82
习题3 83
第4章 进程通信 84
4.1 进程的同步与互斥 84
4.2 进程间互斥控制方法 85
4.3 信号量和semWait、semSignal操作 88
4.4 信号量的应用 89
4.5 进程间的数据通信 93
4.6 软中断和信号机构 95
4.7 死锁 97
4.8 Linux的IPC机制 102
4.8.1 Linux IPC概述 102
4.8.2 消息队列 104
4.8.3 共享内存 110
4.8.4 信号量 113
习题4 118
第5章 设备管理 120
5.1 概述 120
5.2 操作系统与中断处理 122
5.3 操作系统与时钟系统 126
5.4 操作系统对I/O操作的控制 127
5.5 设备管理的数据结构 129
5.6 磁盘调度 130
5.7 UNIX系统V的设备管理 134
5.7.1 块设备管理的主要数据结构 134
5.7.2 缓冲区管理 136
5.7.3 块设备管理 139
5.7.4 字符设备管理 140
5.8 设备分配 142
5.9 Linux的设备管理 143
5.9.1 概述 143
5.9.2 Linux字符设备管理 144
5.9.3 Linux块设备管理 148
5.9.4 Linux块设备缓冲区的管理 151
5.9.5 网络设备的管理 154
习题5 154
第6章 文件系统 156
6.1 概述 156
6.2 文件目录 160
6.3 文件存储资源分配 162
6.4 文件的系统调用 164
6.4.1 文件的创建、打开、关闭和取消 164
6.4.2 文件的读写 166
6.4.3 调整文件读写位置lseek 166
6.4.4 创建任何类型文件mknod 167
6.4.5 其他文件系统调用 167
6.5 文件的标准子例程 168
6.6 UNIX文件系统的内部结构 173
6.6.1 索引节点 173
6.6.2 文件索引结构 173
6.6.3 目录结构 174
6.6.4 打开文件结构 176
6.6.5 文件系统存储资源管理 178
6.7 管道文件和管道通信 180
6.8 Linux虚拟文件系统 184
6.8.1 虚拟文件系统 184
6.8.2 VFS主要数据结构 188
6.8.3 VFS文件的打开 193
6.8.4 VFS文件的读写 197
6.9 Ext文件系统 199
6.9.1 Ext2文件系统 199
6.9.2 Ext2的主要数据结构 202
6.9.3 Ext2文件的操作 207
6.9.4 Ext3文件系统 212
6.9.5 Ext4文件系统 213
习题6 214
第7章 Windows操作系统 216
7.1 Windows操作系统发展历程 216
7.2 Windows 7 219
7.2.1 系统体系结构 219
7.2.2 存储系统 222
7.2.3 进程、线程及处理器管理 228
7.2.4 I/O系统 232
7.2.5 文件系统 235
7.2.6 网络系统 238
7.3 Windows Server 2012 246
7.4 Windows 8 247
7.5 操作系统虚拟化及云计算 249
习题7 257
第8章 操作系统安全 259
8.1 操作系统的安全性 259
8.1.1 操作系统的安全需求 259
8.1.2 系统安全的评估与标准 260
8.1.3 Linux操作系统安全 262
8.1.4 Windows 2000操作系统安全 263
8.2 操作系统安全机制 265
8.2.1 标识与鉴别 265
8.2.2 可信路径 266
8.2.3 最小特权管理 267
8.2.4 访问控制 268
8.2.5 隐蔽通道检测与控制 270
8.2.6 安全审计 271
8.3 安全操作系统设计与实现 273
8.3.1 操作系统安全设计原理 273
8.3.2 安全策略 273
8.3.3 安全模型 274
8.3.4 安全体系结构 276
8.3.5 典型安全操作系统 278
习题8 280
第2部分 应用和开发篇 283
第9章 UNIX使用基础 283
9.1 登录和退出系统 283
9.2 Shell基础 284
9.3 文件系统基本知识 287
9.4 UNIX文件系统结构 289
习题9 290
第10章 UNIX实用程序 291
10.1 目录操作命令 291
10.2 文件操作命令 292
10.3 显示和打印命令 297
10.4 过滤器 299
10.5 设备操作 305
10.6 用户信息与进程控制 307
10.7 压缩和解压缩 309
10.8 其他命令 310
习题10 311
第11章 软件开发工具 313
11.1 文本编辑器vi 313
11.1.1 屏幕编辑命令 314
11.1.2 底行命令 317
11.1.3 在vi程序中执行Shell命令 319
11.2 C编译系统 320
11.3 库的维护 324
11.4 维护程序的程序(Make) 326
11.4.1 Make使用初步 327
11.4.2 Make的内部规则 328
11.4.3 Make中的宏 329
11.4.4 用Make维护库 330
11.4.5 一个综合例子 330
11.4.6 Make命令选项和参数 332
11.5 调试程序 333
11.6 源代码控制系统(SCCS) 334
11.7 其他软件开发工具 337
习题11 338
第12章 UNIX网络通信 339
12.1 检查计算机的连接情况 339
12.2 获取远程用户信息 339
12.3 用户间通话 340
12.4 远程登录和执行 341
12.5 远程文件复制和传输 342
12.6 网络服务命令 344
习题12 347
第13章 UNIX系统和网络程序设计 348
13.1 文件系统程序设计 348
13.2 用文件的系统调用实现进程通信 351
13.3 高级进程间通信 354
13.4 远程进程间通信Socket 360
13.5 UDP套接字编程 364
习题13 367
第14章 Shell程序设计 368
14.1 Shell程序和参数 368
14.2 Shell变量 369
14.2.1 用户定义变量 369
14.2.2 系统定义变量 370
14.2.3 Shell定义变量 371
14.2.4 参数替换 372
14.2.5 引号机制 372
14.3 测试和求值 373
14.4 控制结构 374
14.4.1 顺序控制结构 374
14.4.2 if语句 375
14.4.3 case语句 377
14.4.4 for语句 377
14.4.5 while和until语句 378
14.4.6 break、continue、exit和return语句 379
14.5 递归和Shell函数 379
14.6 Shell内部命令 380
14.7 Shell环境 382
14.8 Linux的BASH Shell 383
习题14 385
第3部分 系统和网络管理篇 389
第15章 UNIX系统管理 389
15.1 系统的启动和关闭 389
15.2 用户管理 392
15.3 刷新系统缓冲区 394
15.4 检查和修复文件系统 394
15.5 构造、安装和拆卸文件系统 396
15.6 定时运行程序 398
习题15 399
第16章 UNIX网络管理 400
16.1 配置TCP/IP 400
16.2 网络服务监控进程 402
16.3 域名服务系统 403
16.4 网络文件系统NFS 407
16.5 电子邮政系统 409
16.6 WWW服务器的配置 412
习题16 417
参考文献 418