本书在修改之前,课程组征询和归纳了使用本教材的部分院校师生的反馈意见,参考硕士研究生入学考试大纲,并结合实际教学中的体会,研讨了操作系统理论、技术和应用的最新发展。在本次修订中,我们力求能够突出理论基本点,讲清技术发展脉络,导人最新知识应用,并专门增加了有关Linux的设计实现技术的内容。近来,“勒索”病毒在网上肆虐,运行Windows系统的机器纷纷中招,在全球造成了重大损失和严重恐慌,然而,在运行Linux系统的机器上并未出现这种灾难。可见,推广、使用和开发Linux系统是正确的选择。
与第1版相比,本次修订进行了一系列重要修改,主要包括以下几个方面:
1)在第1章中,1.1.1节增加了“看待操作系统的进程管理观点”的内容,对操作系统的运行环境做了补充,详细讨论了系统程序和系统调用之间的关系,借助图例进一步阐述了命令行接口和图形用户接口,详细讨论了微内核结构。
2)在第2章中,采用了较规范化的进程定义,详细讨论了进程挂起状态,给出Linux中task_ struct结构的简要定义;详细讨论了Linux有关进程操作的命令和系统调用使用示例;更严谨地描述了同步和互斥的含义,对信号量的类型做了界定,改写了“哲学家进餐问题”的算法;增加了“使用信号量的几点提示”内容,以答复实际授课中学生对信号量和P、V操作解决进程同步等问题时的疑惑,这仅是粗浅体会,希望起到“抛砖引玉”的效果;增加了2.8节;修订了对活锁概念的介绍。
3)在第3章中,增加了3.4节,增加了关于“高响应比优先法”的例题。
4)在第4章中,4.1节增加了“用户程序的主要处理过程”方面的内容,将动态重定位的实现过程并入“动态重定位”,补充了“覆盖技术”的相关介绍,添加了空闲分区链的图示;将原4.9节调整为4.5节;增加了4个页面置换算法,即“第二次机会置换法”“时钟置换法”“最少使用置换法”和“页面缓冲算法”;删除了4.9节中有关“链接中断处理”的内容;增加了4.10.3节。
5)在第5章中,补充了关于“UNIX文件系统的i节点”的内容,增加了5.7.3节。
6)在第6章中,增加了6.1.3节、6.5.2节、6.5.3节,以及补充了6.5.4等的内容。
7)在第7章中,扩充了“嵌入式系统”和“分布式系统”方面的内容;增加了7.2.7节,以适应当前信息技术最热门应用的潮流。
8)各章后面增加了有代表性的习题,附录A中增加了一个实验指导。另外,对书后给出习题参考答案的做法一直存在争议,褒贬不一。此次修订时我们取消了原书附录中的参考答案,意图是提升学生自主思考、分析、解决问题的能力,培养勤信作风,帮助教师了解学生对相关知识的真实掌握情况。为辅助教师备课,我们将另外提供这部分资料。
9)最后,对原书中不妥、不确切、不明了的表述做了修订。
全书共分7章:
第1章是操作系统概述,主要介绍操作系统的概念、基本功能、主要特征、在计算机系统中的地位,以及操作系统的基本类型及主要结构、UNIx和Linux系统的核心结构。
第2章是进程管理,主要介绍进程的概念、进程的状态和组成、进程管理、进程同步与互斥、进程通信、线程和管程、死锁的定义及各种对策。
第3章是处理机调度,主要介绍调度的级别、各级调度的功能和模型、调度性能评价标准及常用调度算法、中断处理和系统调用、shell基本工作原理。
第4章是存储管理,主要介绍与地址空间有关的基本概念、分区管理、基本的分页技术和分段技术、虚拟存储器、请求分页和请求分段技术、Linux中的存储管理技术。
第5章是文件系统,主要介绍文件分类、文件系统的功能、文件的逻辑组织和物理组织、文件的目录结构、文件的存储空间管理、文件的可靠性、文件共享和保护、Linux文件系统。
第6章是设备管理,主要介绍设备管理的有关概念和功能、设备分配技术、I/O软件构造原则、磁盘调度和管理、Linux系统设备管理。
第7章是操作系统的发展和安全性,主要介绍操作系统发展的动力、现代操作系统的发展、系统的安全性、系统性能评价。
书后三个附录分别给出了实验指导、Linux常用系统调用和库函数、Linux常用命令。
由于各学校课程设置、学时安排及学生程度等方面存在差异,在应用本书授课时,可以对内容进行适当取舍。下面列出的理论课学时安排建议是我们多年授课的体会,仅供参考。
本次修订工作主要由孟庆昌、张志华完成,参与编写、整理、录人工作的还有刘振英、牛欣源、路旭强、孟欣、马鸣远等。
由于编者水平有限,时间仓促,对广大读者的需求尚缺乏广泛深入的了解,书中难免存在不妥甚至错误之处,恳切期望广大读者给予批评指正,并及时反馈用书信息。
作者2017年7月于北京信息科技大学