第1章 绪 论(1)
1.1 操作系统的设置目的(1)
1.1.1 操作系统的定义和设计目标(1)
1.1.2 操作系统的作用(2)
1.2 操作系统的功能(3)
1.2.1 处理机管理(3)
1.2.2 存储管理(4)
1.2.3 设备管理(5)
1.2.4 信息管理(6)
1.2.5 用户接口(7)
1.3 操作系统的基本类型(8)
1.3.1 批处理操作系统(9)
1.3.2 分时操作系统(12)
1.3.3 实时操作系统(13)
1.3.4 其他操作系统(14)
1.4 操作系统的特征与性能(15)
1.4.1 操作系统的特征(15)
1.4.2 操作系统的性能(17)
1.5 UNIX 操作系统特征(18)
第2章 进 程(21)
2.1 进程概念(21)
2.1.1 进程的引入(21)
2.1.2 进程的定义与特征(23)
2.1.3 进程描述(25)
2.2 进程状态及转换(28)
2.2.1 三态模型(28)
2.2.2 五态模型(29)
2.2.3 具有挂起功能的进程状态及其转换(30)
2.3 进程控制(30)
2.3.2 进程的撤销(31)
2.3.3 进程的阻塞与唤醒(32)
1目 录 2.3.4 进程的挂起与激活(34)
2.4 进程切换与模式切换(34)
2.4.1 执行模式(34)
2.4.2 模式切换(35)
2.4.3 进程切换(35)
2.5 线 程(36)
2.5.1 线程的概念(36)
2.5.2 线程与进程的比较(37)
2.5.3 线程的实现(38)
2.6 UNIX 进程结构(39)
2.6.1 UNIX 系统的进程映像(39)
2.6.2 UNIX 系统的进程状态及变迁(44)
第3章 调 度(47)
3.1 调度策略(47)
3.2 作业调度(49)
3.3 进程调度(50)
3.4 调度算法(52)
3.5 调度算法评价(57)
3.5.1 客观型调度算法(57)
3.5.2 主观型调度算法(59)
3.6 UNIX 进程调度与换进换出(60)
3.6.1 进程调度(60)
3.6.2 进程的换进换出(61)
第4章 进程同步与通信(66)
4.1 临界区(66)
4.1.1 互斥与同步(66)
4.1.2 临界资源(67)
4.1.3 临界区(68)
4.1.4 同步机构的设计原则(68)
4.1.5 解决互斥问题的软件方法(69)
4.1.6 利用硬件方法解决进程互斥问题(70)
4.2 信号量(72)
4.2.1 信号量概念(72)
4.2.2 信号量的应用(73)
4.2.3 信号量集机制(77)
4.3 经典进程同步问题(79)
4.3.1 生产者—消费者问题(79)
2计算机操作系统 4.3.2 读者—写者问题(82)
4.3.3 哲学家进餐问题(84)
4.4 管 程(86)
4.4.1 信号量机制存在的问题(86)
4.4.2 管程概念(86)
4.4.3 管程的实现(88)
4.5 进程通信(89)
4.5.1 进程通信的类型(90)
4.5.2 共享存储器系统(90)
4.5.3 管道通信系统(90)
4.5.4 消息传递系统(90)
4.6 UNIX 信号量机构分析(93)
4.7 UNIX 进程通信机构pipe(95)
第5章 死 锁(99)
5.1 死锁的概念(99)
5.1.1 死锁的定义(99)
5.1.2 产生死锁的原因(99)
5.1.3 死锁举例(100)
5.2 资源分配模型(103)
5.3 死锁条件(103)
5.4 死锁预防(104)
5.4.1 破坏互斥条件(105)
5.4.2 破坏占有等待条件(105)
5.4.3 破坏非剥夺条件(105)
5.4.4 破坏循环等待条件(105)
5.5 死锁避免(106)
5.5.1 系统的安全状态(106)
5.5.2 银行家算法(107)
5.6 死锁检测(110)
5.7 死锁恢复(111)
第6章 存储管理(116)
6.1 存储管理功能(116)
6.1.1 主存空间分配和管理(116)
6.1.2 地址转换和重定位(117)
6.1.3 存储保护和共享(119)
6.1.4 存储扩充(119)
6.2 分区存储管理(120)
6.2.1 固定分区管理(120)
6.2.2 动态分区管理(121)
6.2.3 动态重定位分区管理(123)
6.3 覆盖与交换技术(125)
6.3.1 覆 盖(125)
6.3.2 交换技术(125)
6.4 分页存储管理(127)
6.4.1 基本原理(127)
6.4.2 数据结构(127)
6.4.3 地址转换机制(129)
6.4.4 页面分配策略(130)
6.4.5 分页存储管理的共享与保护(130)
6.5 分段存储管理(131)
6.5.1 基本原理(131)
6.5.2 数据结构和地址转换机制(132)
6.5.3 段的共享与保护(132)
6.5.4 分页存储管理和分段存储管理的区别(134)
6.6 段页式存储管理(134)
第7章 虚存管理(137)
7.1 基本概念(137)
7.1.1 程序访问局部性原理(137)
7.1.2 虚存的定义(138)
7.1.3 虚存的特征(138)
7.1.4 虚存的实现方法(138)
7.2 请求分页存储管理(139)
7.2.1 数据结构(139)
7.2.2 地址转换(139)
7.2.3 页面调度策略
7.2.5 请求分页管理的共享与保护(146)
7.3 请求分段存储管理(147)
7.3.1 段表机制(147)
7.3.2 地址转换和硬件支持(147)
7.4 UNIX 存储管理(148)
7.4.2 请求调页管理(150)
第8章 设备管理(157)
8.1 I/O 组织(157)
8.1.1 I/O 设备(157)
8.1.2 设备控制器(157)
8.1.3 I/O 系统结构(158)
8.2 数据传送控制方式(159)
8.2.1 程序直接控制方式(159)
8.2.2 程序中断控制方式(160)
8.2.3 DMA 控制方式(161)
8.2.4 I/O 通道控制方式(161)
8.3 中断技术(162)
8.3.1 中断的基本概念(162)
8.3.2 中断处理(163)
8.4 缓冲技术(164)
8.4.1 缓冲的引入(164)
8.4.2 缓冲区的种类(164)
8.4.3 缓冲池(166)
8.5 设备分配(166)
8.5.1 设备分配策略(167)
8.5.2 设备分配程序(169)
8.6 I/O 软件的层次结构(171)
8.6.1 用户层I/O 软件(171)
8.6.2 与设备无关的I/O 软件(171)
8.6.3 设备驱动程序(173)
8.6.4 中断处理程序(173)
8.7 磁盘管理(173)
8.7.2 磁盘调度策略(174)
8.7.3 廉价磁盘冗余阵列(177)
8.8 UNIX 块设备管理(178)
8.8.1 概述(178)
8.8.2 UNIX 块设备管理(179)
8.8.3 UNIX 块设备驱动程序(184)
8.8.4 UNIX 块设备读写技术(185)
8.8.5 UNIX 块设备的程序结构(185)
第9章 文件系统(187)
9.1 目录结构(187)
9.1.1 一级目录结构(187)
9.1.2 二级目录结构(188)
9.1.3 树形目录结构(189)
9.1.4 无环图目录结构(190)
9.1.5 通用图目录结构(191)
9.2 文件结构和存取方法(191)
9.2.1 文件结构(191)
9.2.2 存取方法(198)
9.3 文件存储空间管理(199)
9.3.1 文件存储空间分配(199)
9.3.2 存储空间的管理(200)
9.4 文件的共享和保护(202)
9.4.1 文件的共享(203)
9.4.2 文件的保护(205)
9.5 文件的系统调用(208)
9.6 文件系统的基本模型(210)
9.7 UNIX 文件系统(211)
9.7.1 UNIX 文件系统概述(211)
9.7.2 文件系统的物理结构(213)
9.7.3 UNIX 文件系统的数据结构及其关系(214)
9.7.4 空闲磁盘空间的管理(217)
9.7.5 UNIX 的文件操作(218)
第10章 安全和保护(223)
10.1 操作系统安全概述(223)
10.1.1 安全性概述(223)
10.1.2 操作系统安全的概念(224)
10.2 数据保密(225)
10.2.1 数据加密技术(225)
10.2.2 密码体制的分析(225)
10.3 保 护(227)
10.3.1 存储保护(228)
10.3.2 访问控制(228)
10.3.3 I/O 保护(229)
10.4 安全机制(229)
10.4.1 认证机制(229)
10.4.2 授权机制(230)
10.4.3 审计机制(230)
10.5 UNIX 的安全机制(231)
10.5.1 标识与口令安全(231)
10.5.2 存取控制(232)
10.5.3 鉴 别(233)
10.5.4 审 计(233)
10.5.4 网络安全性(234)
10.5.5 加 密(234)
第11章 操作系统结构与设计(236)
11.1 操作系统结构(236)
11.2 用户接口设计(239)
11.2.1 命令接口(239)
11.2.2 程序接口(240)
11.2.3 图形用户接口(242)
11.3 系统设计与实现(242)
11.4 操作系统性能(244)
附录 实验(246)
实验一 处理机调度(246)
实验二 主存储器空间的分配和回收(247)
实验三 中断处理(248)
实验四 资源分配(248)
参考文献(250)
操作系统是现代计算机系统的重要组成部分,它作为重要的系统软件,在整个计算机系统软件中占有中心地位。操作系统的主要作用就是控制和管理计算机硬件和软件资源、合理地组织计算机工作流程以及方便用户使用计算机系统。随着计算机的发展,计算机系统的硬件和软件资源也越来越丰富。为了提高这些资源的利用率,增强系统的处理能力和改善用户与计算机间的接口,需要功能更完善的操作系统,从而出现了满足不同要求的操作系统,操作系统的功能也越来越强。本教材以国际知名、使用广泛的UNIX 操作系统为线索,阐述了操作系统的基本概念、工作原理和实施技术。本书在编写过程中,注意到了理论和实践的结合以及培养学生分析和设计操作系统的能力。在讲述操作系统的一般概念和工作原理时,尽可能地通过图表进行说明,以方便教师讲解和学生理解。本书的内容安排如下:第1章介绍操作系统的功能、发展、分类等基本概念。第2章对操作系统中的一个重要概念———进程做了介绍,包括进程状态及转换、进程控制、进程通信、线程等。第3章对调度的基本原理、调度算法、算法性能的评估等作了详细的介绍,此外,还对UNIX 的调度算法进行了分析。第4章介绍了关于进程通信的知识,包括进程互斥与同步的概念、临界资源与临界区的概念、信号量机制、经典同步问题与管程的概念,最后对UNIX 系统的信号量机制进行了分析。第5章首先介绍了死锁的基本概念,然后分别对产生死锁的必要条件、避免和预防死锁的机制做了介绍。第6章和第7章介绍了操作系统的存储管理。其中第6章主要介绍了操作系统中有关存储管理的基本概念,几种常用存储管理技术的基本思想、实现算法及硬件支持。第7章主要是讨论了虚存管理技术和辅助存储器管理。第8章是关于设备管理的,主要介绍了I/O 设备、中断技术、缓存技术等。第9章对文件系统中的文件管理、文件的共享与保护做了介绍,此外,作为实例还对UNIX 文件系统的主要结构和算法作了说明。在本书的最后部分对另外两个与操作系统有关的知识做了介绍,即操作系统的安全和设计。第10章主要是在介绍计算机信息安全基础知识的基础上,分析了操作系统产生的原因,讨论了操作系统的保护和安全机制,并对UNIX 操作系统的安全做了简要的介绍。第11章在介绍计算机操作系统结构的基础上介绍了设计操作系统的原理及方法等。2计算机操作系统本书由胡志刚教授负责总体框架、制订写作大纲及最后定稿。其中第1,4章(4.1~4.4,4.6,4.8)由谭长庚编写,第2章及4.5,4.7由朱艳辉编写,第3章由陈强编写,第5章由阳慧编写,第6,7章由宋虹编写,第8章由左贵启编写,第9章由陈利平编写,第10章由王楚正编写,第11章由何啸峰编写,附录部分由李玺编写。本书可作为高等院校计算机科学与软件工程类专业的教材,也可作为对计算机有一定了解的科技工作者及计算机使用者自学的参考书。在此,向为本书编写给予指导、提出宝贵意见的老师和同行们表示衷心的感谢。书中难免有些疏漏谬误之处,恳请读者批评指正。
编 者
2005年6月