操作系统实用教程:螺旋方法
作者 : [美]拉米兹·埃尔玛斯瑞(Ramez Elmasri) A. 吉尔·卡里克(A. Gil Carrick) 戴维·莱文(David Levine) 著
译者 : 翟高寿 译
丛书名 : 计算机科学丛书
出版日期 : 2018-01-08
ISBN : 978-7-111-58819-1
定价 : 99.00元
教辅资源
扩展信息
语种 : 简体中文
页数 : 476
开本 : 16
原书名 : Operating Systems: A Spiral Approach
原出版社: McGraw-Hill
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书通过螺旋方法来解释操作系统。在讲解各种进程及其他概念时,螺旋方法在开始的时候就帮助学生完全理解了一个简单、实用的完整操作系统,这样就使得教师不必不断地“跳转话题”。这是一种非常有效的教学方法,能够激励学生去探索更高级的概念。

图书特色

对于操作系统这门计算机专业必修课,大多数教材采用线性教学方法,以深度为导向孤立地介绍各个模块,最后整合起来理解真正的操作系统。而本书采用的螺旋方法则以广度为导向,首先给出一些基本概念,然后描述一个非常简单的操作系统,之后逐步将其演化为拥有更多功能的复杂系统。
相比之下,螺旋方法有利于学生在课程初期自然形成对操作系统各模块的认识与理解,同时不断积累信心来处理更为复杂的问题,循序渐进,从而更透彻地理解操作系统的本质。
本书特色
在讨论不同的操作系统时,会还原到其所在的历史背景中,介绍当时的行业状况、重要企业和个人,便于学生更好地理解操作系统的发展和演进。
涵盖各类便携式设备上的现代操作系统,而不限于计算机操作系统。
每章都配有习题,许多章节还配有实验,帮助学生巩固所学知识,在实践中强化理解。

作者简介
拉米兹·埃尔玛斯瑞(Ramez Elmasri) 知名计算机科学家,得克萨斯大学阿灵顿分校教授。他拥有斯坦福大学计算机科学硕士和博士学位。
A. 吉尔·卡里克(A. Gil Carrick) 曾任教于得克萨斯大学阿灵顿分校,现已退休。他是计算机科学荣誉协会Upsilon Pi Epsilon的成员。
戴维·莱文(David Levine) 长期讲授操作系统、软件工程、网络和计算机体系结构等课程,研究兴趣包括移动计算、移动对象和分布式计算。

译者简介
翟高寿 北京交通大学计算机学院副教授,计算机科学系副主任。现主要从事操作系统、系统安全、系统软件设计等相关方向的科研和教学工作。

图书前言

著书起因
长期以来,我们深刻领会到传统的操作系统课程教学方法并非最好的方法。本书将采用非传统教学方法来支持达成相关教学任务。当学习任何一门学问时,关于原理、规则、思想和概念的层级体系的学习次序,可能会让学习过程变得更加容易或者更为困难。最通用的做法是把课程划分为若干个主题,然后逐个具体展开和分别进行学习。就操作系统而言,传统做法就是首先概括介绍操作系统和简要解释一些术语,然后让学生就进程和进程管理、存储管理、文件系统等孤立主题分别进一步深入学习。我们称之为深度导向的教学方法或纵向型教学方法。学生在学习这些孤立主题领域大量不相关细节知识的基础上,针对具体实例和实际操作系统例子进行分析研究,最终实现不同主题的融会贯通,搞清楚如何把不同的功能模块整合到一起来形成一个实用的操作系统。
我们认为,儿童学习一门语言时可遵循的较好模型应当是:首先学习一些单词、一些语法、一些句型,然后(螺旋式)重复这一过程,即不断学习更多的单词、更多的语法、更多的句型。通过螺旋式重复相同的学习过程,最终精通语言和征服语言的复杂性。我们称之为广度导向的教学方法或螺旋式教学方法。
本教材把螺旋式教学方法运用到操作系统课程教学中。前面几章给出一些基本的背景知识和概念定义。在此基础上,开始描述面向一个简单系统(早期的个人计算机)的非常简单的操作系统,然后逐渐向拥有更多功能的复杂系统演化:从有限的后台任务(譬如并发打印)到多任务,等等。对于任何一个阶段和相应的系统,我们始终坚持建立逐渐增加的需求与系统设计之间的关联关系,并阐明二者间的关联效应。当然,此间论述并不一定完全对应操作系统发展的确切的历史次序。特别是,为了能够讲清楚不同的操作系统模块之间如何相互衔接和彼此影响,我们在每个复杂层级上还选择了一个代表性的系统展开详细说明。我们确信,这种方法将有利于学生更好地理解和掌握操作系统每一层级的诸多功能是如何被整合到一起的。
之所以采用这种方法,在一定程度上也和所有计算科学专业学生均无一例外地要求必修操作系统课程存在一定关系。诚然,这些学生中的大部分将来从事操作系统开发工作的可能性微乎其微,然而,除极个别学生的工作可能与没有操作系统的嵌入式系统打交道外,大多数学生所从事的工作依赖的系统将运行在操作系统平台之上。对于他们而言,操作系统位于应用程序和硬件之间,若不能清晰理解操作系统基本知识,将意味着相关应用程序最好不过是低效运行,最坏情况下甚至危险运行。我们相信,相对于传统方法来讲,我们的方法将有助于引导学生更好地理解和掌握现代操作系统的整体结构。
内容组织
在本书的第一部分,我们给出了一些通常的背景知识。它们涵盖操作系统的基本原理,并从不同角度诠释了操作系统。同时,还概括说明了操作系统所控制的典型计算机硬件。另外一章则阐述了进程、多道程序设计、分时、资源管理等概念及不同的操作系统体系结构和构建方法。
在本书的第二部分,我们采用螺旋式方法,按照复杂性逐渐递增的次序,依次介绍和说明了如下5种类型的操作系统:
1)简单的单进程操作系统(CP/M)。
2)允许简单系统多任务化的较为复杂的操作系统(Palm操作系统)。
3)针对单用户的完全多任务化的操作系统(苹果电脑Mac操作系统,OS X前身)。
4)多用户操作系统(Linux)。
5)分布式操作系统(主要是Globus集群)。
针对每一种操作系统,我们分别选择典型的操作系统展开讨论,使相关知识更加具体明了。典型操作系统的选择兼顾了实用性。我们首先从进程、内存、文件和输入/输出管理等方面讨论了简单的系统,然后通过逐渐引入多任务、分时、网络连接、安全和其他问题来(循序渐进地)讨论更为复杂的系统。有时候我们也会提到其他一些众所周知的操作系统作为特定类型的例子,譬如第3章的微软DOS操作系统(MS-DOS)和第4章的Symbian操作系统。
在本书的第三~五部分,我们转向深度导向的教学方法,针对各种操作系统主题(从进程到内存管理,再到文件系统)展开详细说明。我们还讨论了许多在操作系统领域最近才出现的热点问题,如线程化、面向对象、安全以及并行和分布式系统的相关方法。在相应章节中,我们将重温第二部分曾讨论过的实例系统,并进一步详细解释(尤其是现代操作系统的)相关机制。
在第六部分,我们将以所谓实例研究的方式,就一些操作系统进一步展开深入探讨。鉴于我们已经在前面章节介绍了许多细节内容,所以在此我们将立足于从更深层次审视相关系统,从而探析某些功能的内部实现机制。其中的两个实例研究将围绕第二部分涵盖的操作系统进行分析讨论。
附录部分罗列了基本的计算机硬件体系结构,以方便那些不要求把此类课程作为操作系统课程先修课程的教育机构在选用本教材时使用。它们也可为那些需要复习特定主题的学习者提供参考。
写作风格
我们倡导会话式写作风格,以避免过度的学究式说教风格让学生产生厌学情绪和影响课程学习效果。
我们避免使用过多的形式化描述,较为规范的描述仅用于必需的特定场合。这样做的理由在于,大多数学生将来并不会从事开发操作系统的工作,而往往是基于操作系统来支持应用程序的开发、运营或维护。
一般情况下,我们使用规范的、公认的术语。但是,当不存在公认的标准术语或着眼于说明特定历史时期采用的其他术语时,我们也会讨论其他说辞或用语。
通常,我们讨论算法解决方案而不列出实际代码,因为不同学校的学生往往接触和掌握的是不同的编程语言。
我们认为,如果把相关操作系统重新还原到当时具有实际时代意义的历史背景环境中,将有助于学生更好地理解操作系统的相关知识。因此,对于单独分析讨论的各操作系统,无论在螺旋式教学章节还是在实例研究部分,我们也会介绍当时工业发展的一些史实,有时甚至会提到主要的公司或个人。
考虑到学生天天都在使用按照惯例并不被视作计算机的各种装置,而且对它们的操作非常熟悉,所以本教材内容涵盖这些便携式装置上的现代操作系统。
我们在教材中使用了大量的图示,以帮助那些不喜欢啃读词句而更擅长形象思维的学习者更好地理解和掌握相关知识点和内容。
各章结束部分分别配备一套习题,方便学习者用于评估自己关于对应章节内容的理解和掌握情况。
许多章节还配备有实验课题,可方便教师布置实验设计作业并使学生在实践中强化理解。

上架指导

计算机\操作系统

封底文字

对于操作系统这门计算机专业必修课,大多数教材采用线性教学方法,以深度为导向孤立地介绍各个模块,最后整合起来理解真正的操作系统。而本书采用的螺旋方法则以广度为导向,首先给出一些基本概念,然后描述一个非常简单的操作系统,之后逐步将其演化为拥有更多功能的复杂系统。

相比之下,螺旋方法有利于学生在课程初期自然形成对操作系统各模块的认识与理解,同时不断积累信心来处理更为复杂的问题,循序渐进,从而更透彻地理解操作系统的本质。

本书特点:
·在讨论不同的操作系统时,会还原到其所在的历史背景中,介绍当时的行业状况、重要企业和个人,便于学生更好地理解操作系统的发展和演进。
·涵盖各类便携式设备上的现代操作系统,而不限于计算机操作系统。
·每章都配有习题,许多章节还配有实验,帮助学生巩固所学知识,在实践中强化理解。

作者简介

[美]拉米兹·埃尔玛斯瑞(Ramez Elmasri) A. 吉尔·卡里克(A. Gil Carrick) 戴维·莱文(David Levine) 著:拉米兹•埃尔玛斯瑞(Ramez Elmasri) 知名计算机科学家,得克萨斯大学阿灵顿分校教授。他拥有斯坦福大学计算机科学硕士和博士学位。
A. 吉尔•卡里克(A. Gil Carrick) 曾任教于得克萨斯大学阿灵顿分校,现已退休。他是计算机科学荣誉协会Upsilon Pi Epsilon的成员。
戴维•莱文(David Levine) 长期讲授操作系统、软件工程、网络和计算机体系结构等课程,研究兴趣包括移动计算、移动对象和分布式计算。

---译者简介---
翟高寿 北京交通大学计算机学院副教授,计算机系副主任。现主要从事操作系统、系统安全、系统软件设计等相关方向的科研和教学工作。

译者序

由拉米兹·埃尔玛斯瑞(Ramez Elmasri)、A.吉尔·卡里克(A. Gil Carrick)、戴维·莱文(David Levine)编写的这本书是一本以学生为中心的具有鲜明特色的操作系统教材,采用螺旋式方法由浅入深、循序渐进地阐述操作系统的相关概念和设计机理。相比于传统教材所采用的深度导向的阐释方法,本书的螺旋式方法更符合人们的学习规律,也更有利于读者在学习过程中不断积聚信心,并顺理成章地理解和掌握越来越复杂的操作系统概念及相关方法与技术,从而保证学习效果和质量。与此同时,作者写作经验丰富,任教阅历和操作系统相关领域的工作经验丰富,并乐于与学生们畅谈操作系统当前研究状况和研习操作系统最新进展,这为教材的高质量编写创造了条件和基础。我们翻译这本教材,目的是期望对国内大学的操作系统课程教学方法的改革和实践注入新鲜血液及提供适合的物质基础,改善学生对操作系统设计原理的理解和掌握力度,进而为计算机操作系统这一核心、基础系统软件的设计和开发培养高质量的人才贡献绵薄之力。
具体而言,这本教材具有如下几方面的特色和优势:
1)注重教材编写与学习规律的一致性,在介绍操作系统概念和设计机理的过程中,始终贯彻由浅入深、由易到难的编排次序,从而使复杂概念和问题的理解和掌握建立在相关基础性概念和问题均已理解和掌握的前提下,于是所谓的“复杂”已不再那么复杂,学习者自我学习信心和学习兴趣逐渐增强,学习效果和质量得到了保证。
2)教材编写图文并茂,大量的图示可以帮助那些更擅长形象思维的学习者更好地理解、掌握相关知识点和内容,同时文字编写常常采用设问、讨论等会话式写作风格,从而避免了过度学究式说教风格让学生产生厌学情绪和影响课程学习效果,而且通过多种学习模式的支持还可保证学习质量和提高学习效果。
3)把相关操作系统重新还原到当时具有实际时代意义的历史环境中,有助于学生更好地理解操作系统的相关知识。因此,对于单独分析讨论的各种操作系统,无论在螺旋式教学章节还是在实例研究部分,教材也会介绍当时工业发展的一些史实,有时甚至会提到主要的公司或个人,这对于学生全面理解操作系统概念和技术的起源及需求,甚至对于学生创新思维的培养将具有非常重要的推动作用。
4)教材资源丰富,为教学的顺利开展奠定了坚实的基础。每一章结尾部分均配有习题,可以帮助读者有针对性地加强对相应知识的理解和掌握。全书最后附有索引,可方便读者快速查阅相关概念和关键术语。服务于本教材的配套网站提供了课件,方便学生预习使用,也方便教师开展课堂教学时在此基础上加以裁剪和修正使用,同时提供给教师的习题答案还可方便教师批阅作业时参考。另外,配套网站为许多章节还配备有实验课题,可方便教师布置实验设计作业并使学生在实践中强化理解。
本书适合作为学时安排为一个学期且为大学二年级以上的学生开设的操作系统本科课程的教材。
本书的出版得到了机械工业出版社华章公司和北京交通大学的大力支持,在此表示最真诚的感谢!特别要感谢曲熠老师为本书的出版所做的辛苦工作和努力!同时非常感谢朱秀英编辑对译稿文字的精心校对和中肯建议!特别感谢唐晓琳编辑对译稿排版组织的精美设计和对译文质量的精雕细琢!
翟高寿对全书所有内容进行了翻译、审阅和校正。以下人员提供了部分章节的译文草稿:刘晨(第15章和第19章),任艳艳(第17章和第18章),孙浩林(第16章和第20章),贾靖仪(第8章和附录),朱雪燕(第6章和第11章),翟瑞霞(第7章、第10章和第13章),王佳(第5章和第9章),韩梦梦(第12章和第14章)。在此对他们的贡献表示诚挚的感谢。
尽管译者已经反复阅读和审校译文,并竭尽全力地以“信、达、雅”为标准来再现原作者的论述本意和写作水平,但鉴于译者水平有限,难免仍有疏漏或不当之处,欢迎各位专家和广大读者批评指正。

翟高寿
2017年10月于北京交通大学

图书目录

出版者的话
译者序
前言
教材使用说明
作者介绍
第一部分 操作系统概述
第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.5.1 操作系统的起源11
1.5.2 操作系统应当做什么12
1.6 小结13
习题13
第2章 操作系统概念、模块和体系结构14
2.1 操作系统做什么工作14
2.2 操作系统管理的资源及主要的操作系统模块16
2.2.1 操作系统管理的资源类型16
2.2.2 操作系统的主要模块18
2.3 进程概念和操作系统进程信息19
2.3.1 进程定义和进程状态19
2.3.2 操作系统维护的进程信息21
2.3.3 进程分类和执行模式21
2.4 面向功能的操作系统分类22
2.4.1 单用户单任务操作系统22
2.4.2 多任务操作系统22
2.4.3 分时操作系统和服务器23
2.4.4 网络和分布式操作系统24
2.4.5 实时操作系统25
2.5 操作系统构建方法25
2.5.1 整体式单内核操作系统方法25
2.5.2 分层式操作系统方法25
2.5.3 微内核操作系统方法26
2.6 操作系统实现中的一些问题和技术27
2.6.1 基于中断向量的中断处理27
2.6.2 系统调用28
2.6.3 队列和表28
2.6.4 面向对象的方法29
2.6.5 虚拟机29
2.7 操作系统功能及向后兼容的最小化方法和最大化方法31
2.7.1 向后兼容31
2.7.2 用户最优化与硬件最优化32
2.8 小结32
参考文献32
网上资源33
习题33
第二部分 渐进式构建操作系统:面向广度的螺旋式方法
第3章 简单的单进程操作系统37
3.1 监控程序和CP/M37
3.1.1 监控程序:简单操作系统的前身37
3.1.2 为什么创建CP/M?什么是软件危机38
3.1.3 CP/M的构成39
3.2 简单的个人计算机系统的特征39
3.3 输入/输出管理40
3.3.1 键盘输入—可移植性与灵活性41
3.3.2 视频监视器输出—可移植性及功能与性能41
3.4 磁盘管理和文件系统42
3.4.1 磁盘系统42
3.4.2 文件系统43
3.5 进程和内存管理46
3.5.1 应用程序的创建与执行46
3.5.2 基于CCP的命令处理47
3.5.3 内存管理48
3.5.4 覆盖49
3.5.5 进程及基本的多任务49
3.6 小结50
参考文献50
网上资源51
习题51
第4章 单用户多任务操作系统52
4.1 简单的多任务系统53
4.2 Palm操作系统运行环境及系统布局54
4.2.1 基本内存为易失性随机访问存储器55
4.2.2 没有辅助存储器55
4.2.3 小屏幕尺寸55
4.2.4 没有键盘56
4.3 进程调度56
4.3.1 处理涂鸦式输入—实时操作系统任务56
4.3.2 应用程序进程—任何时候只能有一道进程持有焦点57
4.3.3 典型的用户应用程序57
4.3.4 真正的调度程序开始成形58
4.4 内存管理58
4.4.1 内存基础知识58
4.4.2 内存分配59
4.4.3 不可移动的内存块61
4.4.4 空闲空间监测61
4.5 文件支持62
4.5.1 数据库和记录62
4.5.2 资源对象62
4.5.3 辅助存储器63
4.6 基本输入/输出63
4.7 显示管理64
4.7.1 相应硬件64
4.7.2 高级图形化用户界面元素64
4.7.3 特殊的窗体类型64
4.7.4 低级图形化用户界面控件65
4.8 事件驱动的程序66
4.9 小结67
参考文献67
网上资源67
习题68
第5章 单用户多任务/多线程操作系统69
5.1 引言69
5.2 Mac计算机的起源69
5.3 Mac操作系统—第1版系统70
5.3.1 图形化用户界面70
5.3.2 单任务71
5.3.3 辅助存储器72
5.3.4 内存管理72
5.3.5 只读存储器74
5.3.6 增量版本74
5.4 第2版系统74
5.4.1 图形化用户界面75
5.4.2 多任务75
5.5 第3版系统75
5.5.1 多级文件系统75
5.5.2 网络76
5.6 第4版系统76
5.6.1 多重查找器76
5.6.2 多重查找器与图形化用户界面77
5.6.3 内存管理与多重查找器77
5.7 第5版系统78
5.8 第6版系统78
5.9 第7版系统79
5.9.1 图形化用户界面79
5.9.2 虚拟内存79
5.9.3 新型处理器80
5.9.4 输入/输出增强81
5.10 第8版系统82
5.10.1 多级文件系统升级版82
5.10.2 其他的硬件变化83
5.10.3 统一字符编码标准支持83
5.11 第9版系统84
5.11.1 多用户84
5.11.2 网络85
5.11.3 应用程序接口85
5.11.4 视频86
5.12 X版Mac操作系统86
5.12.1 新功能87
5.12.2 又一款新处理器87
5.13 小结87
参考文献87
网上资源88
习题88
第6章 多用户操作系统90
6.1 引言90
6.1.1 多用户操作系统的历史90
6.1.2 Linux操作系统的基本结构93
6.1.3 动态可加载模块94
6.1.4 中断处理95
6.1.5 文件系统目录树96
6.2 多用户操作系统环境96
6.2.1 文件访问权限97
6.2.2 文件控制块98
6.3 进程和线程98
6.3.1 Linux任务98
6.3.2 抢占式多任务99
6.3.3 对称多处理99
6.4 小结101
参考文献101
网上资源101
习题101
第7章 并行分布式计算、集群和网格102
7.1 引言102
7.2 关键概念102
7.3 并行处理和分布式处理103
7.4 分布式系统体系结构105
7.4.1 执行环境概述105
7.4.2 对称多处理系统106
7.4.3 集群107
7.4.4 计算网格108
7.4.5 志愿计算109
7.5 操作系统相关概念在对称多处理、集群和网格中的解读111
7.5.1 进程同步和通信111
7.5.2 一个例子111
7.5.3 例子复杂化的一面112
7.5.4 对称多处理的解决方案112
7.5.5 集群的解决方案112
7.5.6 网格的解决方案112
7.5.7 文件共享技术113
7.5.8 远程服务的运用114
7.5.9 故障处理114
7.6 举例说明115
7.6.1 在集群和网格上的科学计算115
7.6.2 人类基因组脱氧核糖核酸组装115
7.6.3 IBM计算生物学中心和集群计算116
7.6.4 志愿计算集群116
7.6.5 一个典型的计算机集群117
7.6.6 Globus集群的使用117
7.6.7 门户和万维网界面118
7.7 小结119
参考文献119
网上资源119
习题119
第三部分 处理器管理及内存管理
第8章 进程管理:概念、线程和调度122
8.1 引言122
8.2 进程描述符—进程控制块123
8.3 进程状态和转换123
8.4 进程调度126
8.4.1 先来先服务调度126
8.4.2 优先级调度126
8.4.3 保证型调度127
8.4.4 最短运行时间优先调度127
8.4.5 高响应比优先调度128
8.4.6 抢占式调度128
8.4.7 多级队列调度129
8.4.8 最佳算法的选择130
8.4.9 长程调度器132
8.4.10 处理器亲和性133
8.5 进程创建133
8.6 线程135
8.6.1 什么是线程135
8.6.2 用户级线程与内核级线程136
8.6.3 线程支持模型137
8.6.4 同时多线程139
8.6.5 进程与线程139
8.7 实例研究139
8.7.1 POSIX线程140
8.7.2 Windows NT140
8.7.3 Solaris142
8.7.4 Linux142
8.7.5 Java143
8.8 小结144
参考文献144
网上资源144
习题144
第9章 进程管理进阶:进程间通信、同步和死锁146
9.1 为什么会有协作式进程146
9.2 进程间通信148
9.2.1 通信机制的特性149
9.2.2 进程间通信系统的例子152
9.2.3 共享内存系统的例子154
9.3 同步154
9.3.1 相关问题154
9.3.2 原子操作155
9.3.3 锁与临界区155
9.3.4 硬件锁指令156
9.3.5 信号量与等待157
9.3.6 计数型信号量157
9.3.7 同步与流水线体系结构158
9.3.8 对称多处理系统中的同步158
9.3.9 优先级倒置158
9.3.10 经典问题159
9.3.11 管程160
9.4 死锁161
9.4.1 什么是死锁161
9.4.2 可以对死锁采取哪些措施163
9.4.3 死锁预防163
9.4.4 死锁避免165
9.4.5 死锁检测167
9.4.6 抢占和其他实用的解决方案167
9.5 小结168
参考文献168
网上资源169
习题169
第10章 基本的内存管理171
10.1 为什么要管理主内存171
10.2 开发周期步骤与绑定模型171
10.3 单一进程172
10.3.1 编码时绑定172
10.3.2 链接时绑定173
10.3.3 单一进程174
10.3.4 动态重定位174
10.3.5 物理内存空间与逻辑内存空间175
10.3.6 程序比内存大175
10.3.7 覆盖175
10.3.8 对换176
10.4 固定进程数的多进程177
10.4.1 内部碎片178
10.4.2 分时共享178
10.5 可变进程数的多进程178
10.5.1 动态加载181
10.5.2 动态链接库181
10.6 小结182
参考文献183
习题183
第11章 高级的内存管理184
11.1 为什么需要硬件的辅助支持184
11.2 分页184
11.2.1 要求两次访问内存186
11.2.2 有效的内存访问时间186
11.2.3 内存访问控制188
11.2.4 大页表188
11.2.5 反置页表190
11.2.6 支持页面大小多样化的页表190
11.2.7 历史的注脚191
11.3 分段191
11.4 段页式193
11.5 请求分页194
11.5.1 请求分页方式下的有效内存访问时间195
11.5.2 工作集与页面置换196
11.5.3 脏页198
11.5.4 其他的页面淘汰算法199
11.5.5 每个进程应当拥有多少页面200
11.5.6 页面限值自动平衡200
11.5.7 抖动201
11.5.8 页面锁定201
11.5.9 页面清理机制202
11.5.10 程序设计与缺页率202
11.6 特殊的内存管理主题203
11.6.1 进程间内存共享203
11.6.2 内存映射文件204
11.6.3 Windows XP预提取文件205
11.6.4 Symbian内存管理206
11.7 小结207
参考文献207
网上资源207
习题207
第四部分 面向深度的操作系统概念
的展示:文件系统和输入/输出
第12章 文件系统基础210
12.1 引言210
12.2 目录211
12.2.1 逻辑结构211
12.2.2 物理结构214
12.2.3 目录操作214
12.2.4 文件系统元数据216
12.3 存取方法216
12.3.1 顺序存取216
12.3.2 随机存取217
12.3.3 更高级别的存取方法217
12.3.4 原始存取219
12.4 空闲空间管理219
12.4.1 链表式空闲空间监测219
12.4.2 改进的链表法220
12.4.3 位图式空闲空间监测221
12.5 文件分配223
12.5.1 连续分配223
12.5.2 链接分配225
12.5.3 索引分配227
12.6 小结229
参考文献229
网上资源230
习题230
第13章 文件系统实例及更多功能232
13.1 引言232
13.2 实例研究232
13.2.1 FAT文件系统232
13.2.2 NTFS文件系统234
13.2.3 UNIX和Linux的文件系统235
13.3 挂载236
13.3.1 本地文件系统挂载236
13.3.2 远程文件系统挂载237
13.4 多文件系统和重定向238
13.4.1 虚拟文件系统238
13.4.2 网络文件系统239
13.5 内存映射文件240
13.6 文件系统实用例程240
13.7 日志式文件系统242
13.8 小结243
参考文献243
网上资源243
习题243
第14章 磁盘调度和输入/输出管理244
14.1 引言244
14.2 设备特性244
14.2.1 随机存取与顺序存取244
14.2.2 设备分类245
14.3 输入/输出技术246
14.3.1 缓冲技术246
14.3.2 高速缓存技术247
14.3.3 针对短小记录的分块技术247
14.4 磁盘物理组织248
14.4.1 扇区、磁道、柱面及磁头248
14.4.2 扇区分组区和扇区编址249
14.4.3 低级格式化250
14.4.4 速度:寻道、传输及缓冲250
14.5 磁盘逻辑组织251
14.5.1 分区251
14.5.2 引导块252
14.5.3 错误检测与校正253
14.6 廉价磁盘冗余阵列254
14.6.1 廉价磁盘冗余阵列构型255
14.6.2 廉价磁盘冗余阵列故障257
14.7 磁盘操作调度259
14.7.1 先来先服务调度算法259
14.7.2 搭便车调度算法260
14.7.3 最短寻道时间优先调度算法260
14.7.4 向前看调度算法261
14.7.5 循环向前看调度算法263
14.7.6 先来先服务-向前看调度算法264
14.7.7 N轮向前看调度算法264
14.7.8 Linux调度程序265
14.7.9 向控制器发送命令265
14.7.10 哪种算法最好266
14.8 内存直接存取型控制器和磁盘硬件特征266
14.8.1 内存直接存取型控制器266
14.8.2 磁盘驱动器的其他特征267
14.8.3 扇区保留和扇区迁移267
14.8.4 自我监控报告技术268
14.8.5 展望未来268
14.9 小结269
参考文献269
网上资源269
习题270
第五部分 网络、分布式系统及安全
第15章 计算机网络272
15.1 为什么要把计算机通过网络连接起来272
15.2 基础知识274
15.2.1 相关模型274
15.2.2 局域网与广域网275
15.2.3 拓扑结构276
15.3 应用层协议278
15.3.1 应用层278
15.3.2 超文本传输协议279
15.3.3 文件传输协议280
15.3.4 简单邮件传输协议、邮局协议及互联网邮件访问协议280
15.4 传输控制协议和网际协议281
15.4.1 传输层281
15.4.2 网际协议寻址和路由281
15.4.3 名称解析283
15.4.4 第6版网际协议283
15.4.5 公共实用例程284
15.4.6 其他协议284
15.4.7 防火墙285
15.5 数据链路层285
15.5.1 以太网286
15.5.2 桥接与交换286
15.5.3 令牌环287
15.5.4 其他的数据链路方法288
15.5.5 网际协议地址到介质访问控制地址的映射288
15.5.6 面向硬件的功能迁移289
15.6 广域网289
15.6.1 帧中继290
15.6.2 其他广域网技术290
15.7 物理层291
15.7.1 铜线规格291
15.7.2 光纤规格292
15.7.3 无线网络292
15.7.4 关于网络故障排查的说明293
15.8 网络管理293
15.8.1 简单管理工具293
15.8.2 简单网络管理协议和网络设备管理293
15.8.3 数据包捕获294
15.8.4 远程监控294
15.9 小结295
参考文献295
网上资源295
习题296
第16章 保护和安全298
16.1 问题和威胁298
16.1.1 计算机病毒299
16.1.2 特洛伊木马300
16.1.3 蠕虫300
16.1.4 间谍软件300
16.1.5 拒绝服务攻击301
16.1.6 缓冲区溢出302
16.1.7 脚本和小应用程序303
16.2 操作系统保护304
16.2.1 保护304
16.2.2 认证304
16.2.3 授权305
16.3 策略、机制和技术308
16.3.1 安全与保护策略308
16.3.2 系统崩溃保护:备份308
16.3.3 并发性保护310
16.3.4 文件保护310
16.4 通信安全310
16.4.1 加密311
16.4.2 消息摘要312
16.4.3 消息签名与证书313
16.4.4 安全协议314
16.4.5 网络保护315
16.5 安全管理316
16.6 小结317
参考文献317
网上资源318
习题318
第17章 分布式操作系统320
17.1 引言320
17.2 分布式应用模型322
17.2.1 客户端-服务器模型322
17.2.2 三层模型322
17.2.3 N层应用程序323
17.2.4 水平分布324
17.3 抽象概念:进程、线程和机器325
17.3.1 线程325
17.3.2 虚拟机326
17.4 命名327
17.4.1 发现服务和Jini328
17.4.2 发现服务、X.500以及轻量级目录访问协议328
17.4.3 对移动式网际协议的实体的定位328
17.5 其他分布式模型329
17.5.1 远程过程调用329
17.5.2 分布式对象331
17.5.3 分布式文档331
17.5.4 分布式文件系统331
17.6 同步332
17.6.1 时钟332
17.6.2 互斥333
17.6.3 选举334
17.6.4 可靠的多播通信336
17.6.5 分布式事务337
17.7 容错338
17.7.1 概述338
17.7.2 进程韧性338
17.7.3 可靠的客户端-服务器通信339
17.7.4 分布式提交339
17.8 小结340
参考文献340
网上资源341
习题341
第六部分 实例研究
第18章 从Windows NT到Windows Vista344
18.1 Windows NT系列操作系统发展历程345
18.2 用户操作系统环境349
18.3 进程调度351
18.4 内存管理352
18.4.1 地址空间353
18.4.2 页面映射353
18.4.3 分页共享及写时复制354
18.4.4 页面置换354
18.4.5 预取配置355
18.5 文件支持355
18.5.1 NTFS356
18.5.2 NTFS高级功能特征360
18.6 基本输入/输出362
18.6.1 分区362
18.6.2 输入/输出系统分层363
18.6.3 即插即用363
18.6.4 设备驱动程序364
18.6.5 磁盘类、端口及微型端口的驱动程序365
18.7 图形化用户接口编程365
18.8 网络366
18.9 对称多处理367
18.10 XP操作系统启动速度提升措施367
18.11 小结368
参考文献368
网上资源368
习题369
第19章 Linux操作系统实例研究370
19.1 引言370
19.1.1 Linux发展简史370
19.1.2 内核体系结构371
19.2 进程调度372
19.2.1 实时进程373
19.2.2 普通进程373
19.2.3 nice命令及相关系统调用374
19.2.4 对称多处理负载均衡374
19.3 内存管理375
19.4 文件支持376
19.4.1 标准文件系统376
19.4.2 虚拟文件系统377
19.4.3 进程文件系统378
19.5 基本输入/输出378
19.5.1 设备表378
19.5.2 设备类型379
19.6 图形化用户接口编程382
19.7 网络384
19.7.1 网络分层384
19.7.2 监听连接的超级服务器384
19.7.3 Samba385
19.8 安全385
19.8.1 Linux安全模块385
19.8.2 网络安全386
19.9 对称多处理387
19.10 其他Linux操作系统变种387
19.10.1 实时Linux操作系统387
19.10.2 嵌入式Linux操作系统388
19.11 小结389
参考文献389
网上资源389
习题389
第20章 Palm操作系统实例研究391
20.1 概述391
20.2 多进程操作系统环境391
20.3 Palm进程调度392
20.3.1 实时任务392
20.3.2 其他任务392
20.4 Palm内存管理392
20.5 文件支持393
20.6 输入/输出子系统393
20.6.1 音频输入/输出393
20.6.2 流输入/输出393
20.6.3 内存型磁盘驱动程序394
20.6.4 照相机394
20.6.5 通信电路394
20.7 图形化用户接口编程394
20.8 网络编程394
20.8.1 个人数据同步394
20.8.2 其他数据同步395
20.8.3 互联网应用程序395
20.8.4 电话应用程序395
20.9 编程环境396
20.10 类似系统和当前发展状况397
20.10.1 新的功能模型397
20.10.2 高级通信模型398
20.10.3 线程调度398
20.10.4 用户界面参考设计399
20.10.5 位置感知类应用程序400
20.10.6 后来的Palm操作系统版本400
20.11 小结401
参考文献401
网上资源401
习题401
附录 计算机系统总览和体系结构概念403
索引425

教学资源推荐
作者: [荷]安德鲁 S. 塔嫩鲍姆(Andrew S. Tanenbaum) 赫伯特·博斯(Herbert Bos) 著
作者: Andrew S. Tanenbaum
作者: 陈向群 向勇 王雷 马洪兵 郑扣根 (美)Dave Probert 著
参考读物推荐
作者: 陈科 编著
作者: (美)Steve Shah
作者: [美]亚伦·纽科姆(Aaron Newcomb) 著