基本信息
- 原书名:Operating Systems: A Spiral Approach

内容简介
计算机书籍
本书是一本特色鲜明的操作系统教材,采用螺旋式方法由浅入深、循序渐进地阐述操作系统的相关概念和设计机理。全书共分六部分:第一部分阐释操作系统的概念、视图、起源、分类、构建方法及实现基础;第二部分则渐进地介绍单进程操作系统、单用户多任务操作系统、单用户多任务/多线程操作系统、多用户操作系统、分布式和集群及网格相关的操作系统;第三部分和第四部分则按照传统方式集中讨论进程管理、内存管理、文件系统、输入/输出管理;第五部分介绍计算机网络、保护和安全以及分布式操作系统;第六部分则分别就Windows NT操作系统、Linux操作系统、Palm操作系统进行实例研究。另外,附录部分还简要介绍了比较现代的硬件体系结构的相关知识。每一章结尾部分均配备有习题,可以帮助读者有针对性地加强相应知识的理解。
本书适合作为高等院校计算机及相关理工科专业的操作系统课程教材,同时也可作为业界人士设计和开发操作系统及相关系统软件的重要参考书。
作译者
拉米兹·埃尔玛斯瑞(Ramez Elmasri) 得克萨斯大学阿灵顿分校教授。1972年在埃及亚历山大大学电气工程专业获学士学位,1980年在斯坦福大学计算机科学专业获硕士学位和博士学位。他当前的研究兴趣包括传感器网络、射频识别、生物信息学数据介质、查询个性化以及系统集成。他是教材《Fundamentals of Database Systems》(数据库系统基础)的第一作者,该教材已发行至第5版。他以往的研究涵盖数据库、概念建模和分布式系统的各个方面。
A.吉尔·卡里克(A. Gil Carrick) 以前是得克萨斯大学阿灵顿分校讲师,现已从教师岗位退休。1970年在休斯敦大学电子技术专业获学士学位,2000年在得克萨斯大学阿灵顿分校计算机科学专业获硕士学位。他是计算机科学荣誉学会的成员。他的职业跨越整个信息技术产业,包括终端用户组织、硬件制造商、软件出版商、第三方维护机构、大学以及研发公司。他为专业期刊撰稿,并编辑信息技术书籍,相关选题主要集中在网络领域。在他的职业生涯中,这本教材中所讨论的所有操作系统他都使用过,他甚至还使用过许多其他的操作系统。
戴维·莱文(David Levine) 讲授操作系统、软件工程、网络和计算机体系结构课程。他的研究兴趣包括移动计算、移动对象和分布式计算,整理的相关研究成果发表在近几年的出版物和若干国际会议上。他喜欢讨论操作系统,与学生畅谈操作系统的当前研究,并研习操作系统的最新进展。
目录
译者序
前言
教材使用说明
作者介绍
第一部分 操作系统概述
第1章 入门2
1.1 引言2
1.2 什么是操作系统3
1.3 操作系统的用户视图和系统视图4
1.3.1 用户视图及用户分类4
1.3.2 系统视图5
1.3.3 一个例子:移动鼠标(和鼠标指针)6
1.3.4 另一个比较大的例子:文件7
1.4 操作系统的一些术语、基本概念和图解7
1.4.1 基本术语7
1.4.2 这些图片说明了什么8
1.4.3 走近真实:个人计算机操作系统9
1.4.4 为什么设立抽象层10
1.5 操作系统发展导论11
译者序
具体而言,这本教材具有如下几方面的特色和优势:
1)注重教材编写与学习规律的一致性,在介绍操作系统概念和设计机理的过程中,始终贯彻由浅入深、由易到难的编排次序,从而使复杂概念和问题的理解和掌握建立在相关基础性概念和问题均已理解和掌握的前提下,于是所谓的“复杂”已不再那么复杂,学习者自我学习信心和学习兴趣逐渐增强,学习效果和质量得到了保证。
2)教材编写图文并茂,大量的图示可以帮助那些更擅长形象思维的学习者更好地理解、掌握相关知识点和内容,同时文字编写常常采用设问、讨论等会话式写作风格,从而避免了过度学究式说教风格让学生产生厌学情绪和影响课程学习效果,而且通过多种学习模式的支持还可保证学习质量和提高学习效果。
3)把相关操作系统重新还原到当时具有实际时代意义的历史环境中,有助于学生更好地理解操作系统的相关知识。因此,对于单独分析讨论的各种操作系统,无论在螺旋式教学章节还是在实例研究部分,教材也会介绍当时工业发展的一些史实,有时甚至会提到主要的公司或个人,这对于学生全面理解操作系统概念和技术的起源及需求,甚至对于学生创新思维的培养将具有非常重要的推动作用。
4)教材资源丰富,为教学的顺利开展奠定了坚实的基础。每一章结尾部分均配有习题,可以帮助读者有针对性地加强对相应知识的理解和掌握。全书最后附有索引,可方便读者快速查阅相关概念和关键术语。服务于本教材的配套网站提供了课件,方便学生预习使用,也方便教师开展课堂教学时在此基础上加以裁剪和修正使用,同时提供给教师的习题答案还可方便教师批阅作业时参考。另外,配套网站为许多章节还配备有实验课题,可方便教师布置实验设计作业并使学生在实践中强化理解。
本书适合作为学时安排为一个学期且为大学二年级以上的学生开设的操作系统本科课程的教材。
本书的出版得到了机械工业出版社华章公司和北京交通大学的大力支持,在此表示最真诚的感谢!特别要感谢曲熠老师为本书的出版所做的辛苦工作和努力!同时非常感谢朱秀英编辑对译稿文字的精心校对和中肯建议!特别感谢唐晓琳编辑对译稿排版组织的精美设计和对译文质量的精雕细琢!
翟高寿对全书所有内容进行了翻译、审阅和校正。以下人员提供了部分章节的译文草稿:刘晨(第15章和第19章),任艳艳(第17章和第18章),孙浩林(第16章和第20章),贾靖仪(第8章和附录),朱雪燕(第6章和第11章),翟瑞霞(第7章、第10章和第13章),王佳(第5章和第9章),韩梦梦(第12章和第14章)。在此对他们的贡献表示诚挚的感谢。
尽管译者已经反复阅读和审校译文,并竭尽全力地以“信、达、雅”为标准来再现原作者的论述本意和写作水平,但鉴于译者水平有限,难免仍有疏漏或不当之处,欢迎各位专家和广大读者批评指正。
翟高寿
2017年10月于北京交通大学
前言
长期以来,我们深刻领会到传统的操作系统课程教学方法并非最好的方法。本书将采用非传统教学方法来支持达成相关教学任务。当学习任何一门学问时,关于原理、规则、思想和概念的层级体系的学习次序,可能会让学习过程变得更加容易或者更为困难。最通用的做法是把课程划分为若干个主题,然后逐个具体展开和分别进行学习。就操作系统而言,传统做法就是首先概括介绍操作系统和简要解释一些术语,然后让学生就进程和进程管理、存储管理、文件系统等孤立主题分别进一步深入学习。我们称之为深度导向的教学方法或纵向型教学方法。学生在学习这些孤立主题领域大量不相关细节知识的基础上,针对具体实例和实际操作系统例子进行分析研究,最终实现不同主题的融会贯通,搞清楚如何把不同的功能模块整合到一起来形成一个实用的操作系统。
我们认为,儿童学习一门语言时可遵循的较好模型应当是:首先学习一些单词、一些语法、一些句型,然后(螺旋式)重复这一过程,即不断学习更多的单词、更多的语法、更多的句型。通过螺旋式重复相同的学习过程,最终精通语言和征服语言的复杂性。我们称之为广度导向的教学方法或螺旋式教学方法。
本教材把螺旋式教学方法运用到操作系统课程教学中。前面几章给出一些基本的背景知识和概念定义。在此基础上,开始描述面向一个简单系统(早期的个人计算机)的非常简单的操作系统,然后逐渐向拥有更多功能的复杂系统演化:从有限的后台任务(譬如并发打印)到多任务,等等。对于任何一个阶段和相应的系统,我们始终坚持建立逐渐增加的需求与系统设计之间的关联关系,并阐明二者间的关联效应。当然,此间论述并不一定完全对应操作系统发展的确切的历史次序。特别是,为了能够讲清楚不同的操作系统模块之间如何相互衔接和彼此影响,我们在每个复杂层级上还选择了一个代表性的系统展开详细说明。我们确信,这种方法将有利于学生更好地理解和掌握操作系统每一层级的诸多功能是如何被整合到一起的。
之所以采用这种方法,在一定程度上也和所有计算科学专业学生均无一例外地要求必修操作系统课程存在一定关系。诚然,这些学生中的大部分将来从事操作系统开发工作的可能性微乎其微,然而,除极个别学生的工作可能与没有操作系统的嵌入式系统打交道外,大多数学生所从事的工作依赖的系统将运行在操作系统平台之上。对于他们而言,操作系统位于应用程序和硬件之间,若不能清晰理解操作系统基本知识,将意味着相关应用程序最好不过是低效运行,最坏情况下甚至危险运行。我们相信,相对于传统方法来讲,我们的方法将有助于引导学生更好地理解和掌握现代操作系统的整体结构。
内容组织
在本书的第一部分,我们给出了一些通常的背景知识。它们涵盖操作系统的基本原理,并从不同角度诠释了操作系统。同时,还概括说明了操作系统所控制的典型计算机硬件。另外一章则阐述了进程、多道程序设计、分时、资源管理等概念及不同的操作系统体系结构和构建方法。
在本书的第二部分,我们采用螺旋式方法,按照复杂性逐渐递增的次序,依次介绍和说明了如下5种类型的操作系统:
1)简单的单进程操作系统(CP/M)。
2)允许简单系统多任务化的较为复杂的操作系统(Palm操作系统)。
3)针对单用户的完全多任务化的操作系统(苹果电脑Mac操作系统,OS X前身)。
4)多用户操作系统(Linux)。
5)分布式操作系统(主要是Globus集群)。
针对每一种操作系统,我们分别选择典型的操作系统展开讨论,使相关知识更加具体明了。典型操作系统的选择兼顾了实用性。我们首先从进程、内存、文件和输入/输出管理等方面讨论了简单的系统,然后通过逐渐引入多任务、分时、网络连接、安全和其他问题来(循序渐进地)讨论更为复杂的系统。有时候我们也会提到其他一些众所周知的操作系统作为特定类型的例子,譬如第3章的微软DOS操作系统(MS-DOS)和第4章的Symbian操作系统。
在本书的第三~五部分,我们转向深度导向的教学方法,针对各种操作系统主题(从进程到内存管理,再到文件系统)展开详细说明。我们还讨论了许多在操作系统领域最近才出现的热点问题,如线程化、面向对象、安全以及并行和分布式系统的相关方法。在相应章节中,我们将重温第二部分曾讨论过的实例系统,并进一步详细解释(尤其是现代操作系统的)相关机制。
在第六部分,我们将以所谓实例研究的方式,就一些操作系统进一步展开深入探讨。鉴于我们已经在前面章节介绍了许多细节内容,所以在此我们将立足于从更深层次审视相关系统,从而探析某些功能的内部实现机制。其中的两个实例研究将围绕第二部分涵盖的操作系统进行分析讨论。
附录部分罗列了基本的计算机硬件体系结构,以方便那些不要求把此类课程作为操作系统课程先修课程的教育机构在选用本教材时使用。它们也可为那些需要复习特定主题的学习者提供参考。
写作风格
我们倡导会话式写作风格,以避免过度的学究式说教风格让学生产生厌学情绪和影响课程学习效果。
我们避免使用过多的形式化描述,较为规范的描述仅用于必需的特定场合。这样做的理由在于,大多数学生将来并不会从事开发操作系统的工作,而往往是基于操作系统来支持应用程序的开发、运营或维护。
书摘
操作系统可以拥有好多理由来选择中断一个正在运行的进程,但并非所有的操作系统都会这么做。第一种情况是一个分时系统,其中每个进程依次被赋予少量的时间来执行。如果其中的一个进程在分配给它的时间里,没有做过什么事情使其进入等待状态,但又没有结束,那么操作系统将使其退出运行状态,并将其置为就绪状态,进而允许另外一个进程去运行。第二种情况是,一个具有高优先级别的进程一直在等待某个事件,而这时其所等待的事件发生了。如果正在运行的进程的优先级别要低于正在等待的那个进程的优先级别,那么,操作系统可能会中断较低优先级别的进程,使其返回到就绪状态,并将较高优先级别的进程置为运行状态。不过,并不是所有的操作系统都会使用优先级调度。
终止状态是为由操作系统结束的进程而专门准备的。可能有很多原因会使一个进程到达这种状态,对应转换被标记为“6—完成或中止”。完成是显而易见的。而中止也是很清楚的,无论是进程还是操作系统检测到任何问题,相应进程都会在更多损坏发生之前被中止。但是,也有其他一些原因会使一个进程可能从运行状态转入终止状态。例如,某个进程的父进程可能判定该子进程不再需要,于是请求操作系统杀死该子进程。在大多数情况下,我们并不想弄乱这个模型,因此,我们在这张图里忽略了这些很罕见的转换。
……