操作系统:精髓与设计原理(原书第6版)
作者 : (美)William Stallings 著
译者 : 陈向群 陈渝 等译
丛书名 : 计算机科学丛书
出版日期 : 2010-08-11
ISBN : 978-7-111-30426-5
定价 : 69.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 571
开本 : 16
原书名 : Operating Systems: Internals and Design Principles 6E
原出版社: Pearson Education Asia
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是一本关于操作系统的概念、结构和机制的教材,其目的是尽可能清楚和全面地展现当代操作系统的本质和特点。本书是为高等院校师生和专业人员编写的。作为教材,本书对应于计算机科学、计算机工程和电子工程专业一个学期的操作系统课程。书中的专题包括由IEEE和ACM计算机委员会的计算课程联合工作组,为计算机科学专业的本科生推荐的计算机课程(Computer Curricula2001),同时也包括由上述联合工作组推荐的计算机科学2002联合学位课程指南(Guidelines for Associate-Degree Curricula in Computer Science 2002)中的专题。本书还是一本基础参考书,同时也适于自学。

图书特色

操作系统精髓与设计原理(原书第6版) 
Operating Systems
Internals and Design Principles
Sixth Edition
(美) William Stallings 著 陈向群 陈渝 等译
本书是计算机界巨擘William Stallings的经典著作之一,其第4版曾获得美国计算机科学与工程类大奖,得到了全球计算机教育界和工程技术人员的好评。书中不仅全面地讲述了操作系统的基本概念、原理和方法,而且还以当代最流行的操作系统为例,全面清楚地展现了当代操作系统的本质和特点。作者针对近几年操作系统领域的最新变化,对操作系统的设计原理进行深入的阐述,同时将其对操作系统整个领域全面而深入的理解呈现给读者。
本书特色
选择Windows Vista、UNIX和Linux三个操作系统作为示例,以帮助读者熟悉当代操作系统的设计原理和实现问题。
新增嵌入式操作系统一章,讨论了嵌入式操作系统的基本特点,并给出了两个实例系统:TinyOS和eCos。
在第5版的基础上扩展了计算机安全的相关内容,包括计算机安全威胁和计算机安全技术。
扩展和更新了并发的相关内容,并增加了有关游戏软件中多处理器调度设计问题的实例。
补充动画演示、模拟项目和编程项目,便于培养学生的动手实践能力。
改进了插图,增加大量新的 “现场测试”(field-tested)型家庭作业。
调整和扩充了章末的练习题,有助于读者深入理解操作系统的精髓。
作者简介
William Stallings
拥有美国麻省理工学院计算机科学博士学位,现任教于澳大利亚新南威尔士大学国防学院(堪培拉)信息技术与电子工程系。他是世界知名的计算机学者和畅销教材作者,已经撰写了17部著作,出版了40多本书籍,内容涉及计算机安全、计算机网络和计算机体系结构等方面,堪称计算机界的全才。他曾九次荣获美国“教材和学术专著作者协会”颁发的“年度最佳计算机科学教材”奖。

图书前言

目标
  本书是一本关于操作系统的概念、结构和机制的教材,其目的是尽可能清楚和全面地展现当代操作系统的本质和特点。
  这是一项具有挑战性的任务。首先,需要为各种各样的计算机系统设计操作系统,包括单用户工作站和个人计算机、中等规模的共享系统、大型计算机和超级计算机以及诸如实时系统之类的专门机器。多样性不仅表现在机器的容量和速度上,而且表现在具体应用和系统支持的需求上。其次,计算机系统正以日新月异的速度发展变化,操作系统设计中的许多重要领域都是新近开始研究的,而关于这些领域以及其他新领域的研究工作仍然在继续着。
  尽管存在着多样性和变化快等问题,一些基本概念仍然贯穿始终。当然,这些概念的应用依赖于当前的技术状况和特定的应用需求。本书的目的是对操作系统设计的基本原理提供全面的讨论,并且与当代流行的设计问题以及当前操作系统的发展方向联系起来。
示例系统
  本书试图使读者熟悉当代操作系统的设计原理和实现问题,因此单纯讲述概念和理论是远远不够的。为了说明这些概念,同时将它们与真实世界中不得不做出的设计选择相联系,本书选择了三个操作系统作为示例:
  ● Windows Vista:用于个人计算机、工作站和服务器的多任务操作系统。它融合了很多操作系统发展的最新技术,此外,Windows是最早采用面向对象原理设计的重要的商业操作系统之一。本书涵盖了在Windows最新版本Vista中所采用的技术。
  ● UNIX:最初是为小型计算机而设计的多用户操作系统,但后来广泛用于从微机到超级计算机的各种机器中。本书包含若干版本的UNIX。FreeBSD结合了很多反映当代水平的功能,是一款得到广泛应用的操作系统。Solaris是一款应用广泛的商业版UNIX系统。
  ● Linux:一款目前非常普及且源码开放的UNIX版本。
  选择这些系统是由于它们的相关性和代表性。关于这些示例系统的讨论贯穿全书,而不是集中在某一章或附录部分。因此,在讨论并发性的过程中,将描述每个示例系统的并发机制,并探究各个设计选择的动机。通过这种方法,可以利用真实的例子立即加深对某一特定章节中设计概念的理解。
读者对象
  本书是为高等院校师生和专业人员编写的。作为教材,本书对应于计算机科学、计算机工程和电子工程专业本科一个学期的操作系统课程。书中的专题包括由IEEE和ACM计算机委员会的计算课程联合工作组为计算机科学专业的本科生推荐的计算机课程(Computer Curricula 2001),同时也包括由上述联合工作组推荐的计算机科学2002联合学位课程指南(Guidelines for Associate-Degree Curricula in Computer Science 2002)中推荐的专题。本书还是一本基础参考书,同时也适于自学。
本书结构
  本书分为八个部分(参见第0章的综述):背景、进程、内存、调度、输入/输出与文件、嵌入式系统、安全、分布式系统。
  本书具有许多适用于教学的特征,包括使用大量的动画和图表来阐明一些容易混淆的概念。每一章还包括一些关键术语列表、复习题、课外练习、进一步学习的建议和相关网站的链接。而且,还为指导教师提供了题库。
课程参考资料
  以下的教辅资料可以通过访问受密码保护的Pearson网站的教师资源区域获得 (www.prenhall.com/ stallings):
  ● 参考答案:章末复习题和习题的解决方案。
  ● 课件:所有章节的课件,可以用于课堂教学。
  ● PDF文件:本书中全部图和表的副本。
  ● 项目手册:下面列出的所有项目类型的推荐项目任务。
  为教师和学生提供的Internet服务
  本书的Web站点为教师和学生提供支持,该站点包括一些到其他相关站点和有用文档的链接。参见前面的“本书的Web站点”以获得更多的信息。网址是http://williamstalllings.com/ OS/OS6e.html。
  在这个网站上,这一版新添加了一些课后问题和解答。通过求解问题并核对答案,学生可以加强对教材内容的理解。
  我们还建立了邮件列表,使用本书的教师可以通过邮件列表来交换信息、建议和遇到的问题。一旦发现拼写或其他错误,本书的勘误表将可以在WilliamStallings.com上获得。最后,我还在WilliamStallings.com/StudentSupport.html上维护了计算机科学学生资源网。
操作系统项目和其他学生练习
  对许多教师而言,操作系统课程的一个重要内容是,通过一个项目或一组项目使得学生能够获得亲身体验,以加深对课本中概念的理解。本书为课程所包含的项目部分提供了非并行程度的支持,它定义了两个编程项目。Prentice Hall的网站为教师提供了一些在线参考资源,其中不仅包括有关项目分配和结构的指南,还包括各种项目类型的用户手册,以及专门为本书编写的特定任务。教师可以在以下方面布置任务:
  ● 动画任务:下详。
  ● 模拟项目:下详。
  ● 编程项目:下详。
  ● 研究项目:一系列研究项目可以指导学生研究某一个特定的专题,并且撰写报告。
  ● 阅读/报告练习:用于阅读和撰写报告的多篇论文,推荐了一些书面用语。
  ● 写作练习:关于一些容易理解的材料的一系列写作练习。
  ● 讨论专题:这些专题可以在课堂、聊天室和消息展板上应用,以更深入地扩展对于特定领域的理解,培养学生的合作能力。另外,作为项目实践的开发框架,我们提供了两个软件包:开发操作系统的构件可以使用Nachos,学习并发机制可以使用BACI。
  这些项目和课外练习使得教师既可以使用本书作为丰富教学内容的一部分,也可以根据教师和学生的特别需求进行裁剪。详见附录C。
动画和模拟
  新版结合使用了动画和模拟。动画部分用专门的图标标识出来。对于理解现代操作系统的一些复杂机制而言,动画是一种强大的工具。为了说明操作系统设计中的关键功能和算法,本书使用了一些动画。在书中对应的位置,一个特殊的图标表示这里有在线动画供学生使用。使用动画有两种方式。在被动模式中,学生点击相关动画,然后观看相关概念或原理的动画。由于这些动画提供了用户可设置的初始条件,所以还可以按照主动模式使用动画。这样,动画也可以作为学生作业。教辅中包括了每个动画的相关作业。
  IRC还提供了一些在7个模拟内容基础上的作业项目,这些模拟都与操作系统设计关键领域相关。学生可以使用这套模拟工具包,对操作系统设计特性进行分析。这些模拟工具用Java写成,既可以作为一个Java应用程序在本地运行,也可以通过浏览器在线运行。IRC中包括了学生使用的相关作业材料,让学生了解如何做以及结果会是怎样的。
编程项目
  新版提供更多的对编程项目的支持。有两个主要的编程项目,一个用于构造shell,即命令行解释器,而另一个项目用于构造教材中介绍的进程分派器(process dispatcher),它们分别位于第3章和第9章的后面。IRC提供了为开发程序所需要的深入资料,以及一步一步的练习。
  作为替代方案,指导教师可以安排强度更大的系列项目,这些系列项目涵盖了本书中的许多基本原理。为了进行这些项目,我们为学生提供了详细的指导材料。另外,还提供了一套课外练习,其中的问题与每个项目有关,供学生回答。
  最后,在IRC提供的项目手册中,包括了一套涉及广泛专题的系列编程项目,它们可以在任何平台上使用任何语言来进行开发。
第6版中的新内容
  自从第5版发行之后,这四年以来,操作系统领域始终在不断地变化。在新版中,作者试图抓住这些变化,同时保持对操作系统整个领域全面而深入的阐述。为了完善本书,作者将第5版交由一批从事相关教学和研究的教授们审阅。所以在新版许多地方的叙述更加清晰、紧凑,说明也得以改进。而且,增加了大量新的“现场测试”(field-tested)型的课外练习。
  除了这些教育学以及用户友善性方面的细化之外,为了反映这个令人兴奋的领域中的进展,我们对教材的技术内容也进行了整体更新。最主要的变化如下:
  ● 动画:动画为理解现代操作系统中的复杂机制提供了一种强大的工具。第6版中有16个动画,覆盖了调度、并发控制、缓存一致性以及进程生命周期等内容。在书中的相应位置,我们对动画进行了突出标记,使得学生在学习本书的过程中可以在恰当的时候使用动画。
  ● Windows Vista:Vista是微软公司为PC机、工作站和服务器提供的一种最新型的操作系统。第6版在介绍所有的关键技术领域时都提供了Vista 内部的有关细节,包括进程/线程管理、调度、内存管理、安全、文件系统以及I/O。
  ● Vista/Linux比较:纵观全书,始终将Vista和Linux作为OS 内部各个方面的实例使用。第6版的新特色是,涉及Vista和Linux的每一章都有一个专门的部分,对这两个操作系统的技术处理方式进行比较。
  ● 扩展的安全内容:本书的第七部分“安全”完全是重写的,并扩展为两章。包含了许多新的内容。另外,本书的重点几章里(第3、7和12章)都安排有涉及安全的论述。
  ● 嵌入式操作系统:第6版包括了嵌入式操作系统的新章节。嵌入式系统远多于通用计算系统,并构成了对操作系统的独特挑战。这一章包括有关基本原理的讨论,以及两个示例系统:TinyOS和eCos。
  ● 并发:为了叙述上的改善,对有关并发的内容进行了扩展和更新。
  ● 多处理器调度:增加了有关游戏软件中多处理器调度设计问题的实际示例。
  本书每一版在增加新的内容过程中,都要为保持合理的页码数量而奋斗。这个目标通过消除过时的材料和使叙述更紧凑来达到。  对于这一版,相对不太重要的章节和附录以PDF文件的形式转到了网上,从而不必增加篇幅和成本就能对本书的内容进行扩展。
致谢
  新版本得益于很多花费了大量的时间和精力进行审阅的专家和教授,包括Archana Chidanandan (Roe-Hulman)、Scott Stoller(SUNY-Stony Brook)、Ziya Arnavut(SUNy-Fredonia)、Sanjiv Bhatia(University of Missouri-St. Louis)、Jayson Rock(University of Wisconsin-Milwaukee)、Mark Mahoney(Carthage College, WI)、Richard Smith(University of St. Thomas)、Jeff Chastine (Clayton State University, GA)、Tom Easton(Thomas College, ME)、Che Dunren(Southern Illinois University)、Dean Mathias(Utah State University)、Shavakant Mishra(University of Colorado)和Richard Reese(Tarleton State University),他们审阅了本书的大部分或全部。
  还要感谢很多为本书的一章或多章进行了详尽审阅的人:Vijia Nyalpelli、John Traenky、James Hartley、Ajay Kumar(Symantec)、Juergen Gross、Maneesh Singhal(UNIX Kernel Professional in India)、Yao Qi、Xie Yubo、Victor Cionca、Nikhil Bhargava和Marcros Nagamura。
  我还要感谢Dave Probert,微软Windows内核与体系结构组的架构师,他审阅了Vista系统相关的资料,并提供了Linux系统与Vista系统的对比;Tiran Aviazian, Linux文档项目中内核文档的作者,他审阅了Linux 2.6的资料;eCosCentric的NickGarnett,他审阅了eCos的相关资料;Philip Levis,TinyOS系统的开发者之一,他审阅了TinyOS相关的资料。
  Brandon Ardiente和Tina Kouri(Colorado School of Mines)添加了与书中动画有关的练习题。Adam Critchley(University of Texas at San Antonia)添加了模拟练习题。Matt Sparks(University of Illinois at Urbana-Champaign)修改了本书的一些编程问题。
  Lawrie Brown(The Australian Defence Force Academy)提供了缓冲区溢出攻击的材料。Ching-Kuang Shene(Michigan Tech University)为竞争条件一节提供了示例,并审阅了此章节。Tracy Camp 和Keith Hellman(Colorado School of Mines)提供了一些新的课外练习。此外,Fernando Ariel Gont也提供了一些课外练习,同时他还详细地审阅了本书的全部章节。
  我还要感谢Bill Bynum(College of William and Mary)和Tracy Camp(Colorado School of Mines)对附录G的贡献;感谢Steve Taylor(Worcester Polytechnic Institute)对教师手册中程序设计项目和阅读/报告任务的贡献;感谢Tan N. Nguyen教授(George Mason University)对教学手册中研究项目的贡献;感谢Ian G. Granham(Griffith University)对本书中两个编程项目的贡献;感谢Oskars Rieksts(Kutztown University)慷慨地允许我使用他的讲稿、测验与项目。
  最后,我要感谢负责出版本书的人们,感谢他们出色的工作,这包括我的编辑Tracy Dunkelberger,他的助理Melinda Hagerty,产品经理Rose Kernan,补遗经理ReeAnne Davis。   此外,Jake Warde(Warde Publishers)负责审阅,Patricia M. Daly负责副本编辑,在此一并表示感谢。

上架指导

计算机\操作系统

封底文字

本书不仅全面地讲述了操作系统的基本概念、原理和方法,还清楚地展现了当代操作系统的本质和特点。作者针对近几年操作系统领域的最新变化,对操作系统的设计原理进行深入的阐述,同时将其对操作系统整个领域全面而深入的理解呈现给读者。
 
本书特色

·选择Windows Vista、UNIX和Linux三个操作系统作为示例,以帮助读者熟悉当代操作系统的设计原理和实现问题。
·新增嵌入式操作系统一章,讨论了嵌入式操作系统的基本特点,并给出了两个实例系统:TinyOS和eCos。
·在第5版的基础上扩展了计算机安全的相关内容,包括计算机安全威胁和计算机安全技术。
·扩展和更新了并发的相关内容,并增加了有关游戏软件中多处理器调度设计问题的实例。
·补充动画演示、模拟项目和编程项目,便于培养学生的动手实践能力。
·改进了插图,增加新的大量 “现场测试”(field-tested)型家庭作业。
·调整和扩充了章末的练习题,有助于读者深入理解操作系统的精髓。

作者简介

(美)William Stallings 著:William Stallings 拥有美国麻省理工学院计算机科学博士学位,现任教于澳大利亚新南威尔士大学国防学院(堪培拉)信息技术与电子工程系。他是世界知名计算机学者和畅销教材作者,已经撰写了17部著作,出版了40多本书籍,内容涉及计算机安全、计算机网络和计算机体系结构等方面,堪称计算机界的全才。他曾九次荣获美国“教材和学术专著作者协会”颁发的“年度最佳计算机科学教材”奖。

译者简介

陈向群 陈渝 等译:暂无简介

译者序

William Stallings博士是一位广受欢迎的、多产的教材作者,他所编写的教材曾多次获得美国教材和学术著作者协会(Text and Academic Authors Association)颁发的计算机科学与工程教材奖。本书的前几个版本被美国多所大学采用作为教材或参考书,中国的操作系统课程教师和学习操作系统课程的学生对本书的前几个版也非常熟悉。
  本书围绕操作系统的概念、结构和机制,进行了系统全面的阐述,尽可能清晰地展示当代操作系统的本质和特点。特别是新版的内容有了整体更新,以反映操作系统的进展变化。
  本书有如下特色:
  1)作者将第6版交给从事相关教学和研究的教授们审阅,使本书在教育学及用户友善性方面有了新的改进,叙述更加清晰、紧凑,改进了插图,增加大量“现场测试”(field-tested)型家庭作业。
  2)本书以Windows Vista为例介绍了Windows操作系统,有关材料由微软公司Windows内核与体系结构组的架构师Dave Probert博士提供。
  3)全书始终将Windows Vista和Linux作为操作系统实例使用,尤其是由Dave Probert博士补充的对这两个操作系统的技术处理方式的对比表格分布在相关章节,对读者有极大的帮助。
  4)本书新增了嵌入式操作系统的内容。尽管目前嵌入式操作系统远远多于通用计算机系统,但是很少有教材把这个主题安排成单独的一章。本书讨论了嵌入式操作系统的基本特点,并给出了两个实例系统:TinyOS和eCos。
  5)在第5版的基础上扩展了安全相关的内容,包括安全威胁和安全技术。同时,在本书的第3、7和12章也针对相关主题补充了涉及安全的讨论。
  6)本书第6版还增加了许多新的习题和练习,这些都有助于读者深入理解操作系统的精髓。
  作为教授操作系统课程的教师,译者认为要清楚理解操作系统概念,让学生动手参加实践项目或参与一些研究项目是十分重要的。本书补充了下列内容:
  1)动画为理解现代操作系统中的复杂机制提供了强大的工具。在动画展示方面,本书提供大量动画,涉及调度、并发控制、缓存命中以及进程生命周期等内容。在书中适当的对应之处,对动画展示进行了突出标记,可以使学生在学习本书的过程中,在恰当的位置使用动画。
  2)本书提供了由美国德州大学圣安东尼奥分校开发的7个模拟项目,这些模拟项目都是与操作系统设计中的关键领域密切相关的。在模拟项目基础上给学生布置了其他作业项目,例如,学生可以使用这套模拟工具包,对操作系统设计特性进行分析。这些模拟工具是用Java编写的,既可以作为一个Java应用在本地运行,也可以通过浏览器在线运行。
  3)本书还提供了三个系列的编程项目供学生参考和练习。
  参加本书翻译、审阅和校对的还有桂尼克、孙剑、张顺廷、王刚、刘晗、冯涛、白光冬、孔俊俊、古亮、畅明、张琳、赵敬峰、张旦峰、陈子文、雷吉科等,特别是桂尼克对安全部分的翻译校对工作贡献很大。在此对他们的贡献表示诚挚的感谢。
  由于译者水平有限,译文中必定会存在一些不足或错误,欢迎广大读者批评指正。

译者

图书目录

出版者的话
译者序
前言
第0章 读者指南 1
0.1 本书概述 1
0.2 读者和教师的学习路线图 1
0.3 Internet和Web资源 2
第一部分 背景
第1章 计算机系统概述 6
1.1 基本构成 6
1.2 处理器寄存器 6
1.2.1 用户可见寄存器 7
1.2.2 控制和状态寄存器 8
1.3 指令的执行 9
1.3.1 取指令和执行指令 9
1.3.2 I/O函数 11
1.4 中断 11
1.4.1 中断和指令周期 12
1.4.2 中断处理 14
1.4.3 多个中断 15
1.4.4 多道程序设计 17
1.5 存储器的层次结构 17
1.6 高速缓存 20
1.6.1 动机 20
1.6.2 高速缓存原理 20
1.6.3 高速缓存设计 21
1.7 I/O通信技术 22
1.7.1 可编程I/O 22
1.7.2 中断驱动I/O 22
1.7.3 直接内存存取 24
1.8 推荐读物和网站 24
1.9 关键术语、复习题和习题 25
附录1A 两级存储器的性能特征 27
附录1B 过程控制 30
第2章 操作系统概述 33
2.1 操作系统的目标和功能 33
2.1.1 作为用户/计算机接口的
2.1.1 操作系统 33
2.1.2 作为资源管理器的操作
2.1.1 系统 34
2.1.3 操作系统的易扩展性 35
2.2 操作系统的发展 35
2.2.1 串行处理 35
2.2.2 简单批处理系统 36
2.2.3 多道程序设计批处理系统 38
2.2.4 分时系统 40
2.3 主要的成就 42
2.3.1 进程 42
2.3.2 内存管理 44
2.3.3 信息保护和安全 46
2.3.4 调度和资源管理 46
2.3.5 系统结构 47
2.4 现代操作系统的特征 49
2.5 微软的Windows 概述 51
2.5.1 历史 51
2.5.2 单用户多任务 53
2.5.3 体系结构 53
2.5.4 客户/服务器模型 56
2.5.5 线程和SMP 57
2.5.6 Windows对象 57
2.6 传统的UNIX系统 58
2.6.1 历史 58
2.6.2 描述 59
2.7 现代UNIX系统 60
2.7.1 系统V版本4(SVR4) 60
2.7.2 BSD 61
2.7.3 Solaris 10 61
2.8 Linux操作系统 61
2.8.1 历史 62
2.8.2 模块结构 63
2.8.3 内核组件 64
2.9 推荐读物和网站 67
2.10 关键术语、复习题和习题 68
第二部分 进程
第3章 进程描述和控制 73
3.1 什么是进程 73
3.1.1 背景 73
3.1.2 进程和进程控制块 74
3.2 进程状态 75
3.2.1 两状态进程模型 76
3.2.2 进程的创建和终止 77
3.2.3 五状态模型 78
3.2.4 被挂起的进程 81
3.3 进程描述 84
3.3.1 操作系统的控制结构 85
3.3.2 进程控制结构 86
3.4 进程控制 90
3.4.1 执行模式 90
3.4.2 进程创建 91
3.4.3 进程切换 92
3.5 操作系统的执行 93
3.5.1 无进程的内核 94
3.5.2 在用户进程中执行 94
3.5.3 基于进程的操作系统 95
3.6 安全问题 95
3.6.1 系统访问威胁 96
3.6.2 对抗措施 96
3.7 UNIX SVR4进程管理 98
3.7.1 进程状态 98
3.7.2 进程描述 99
3.7.3 进程控制 101
3.8 小结 102
3.9 推荐读物 102
3.10 关键术语、复习题和习题 102
编程项目1:开发一个shell程序 105
第4章 线程、对称多处理(SMP)
第4章 和微内核 107
4.1 进程和线程 107
4.1.1 多线程 107
4.1.2 线程功能特性 109
4.1.3 例子:Adobe PageMaker 111
4.1.4 用户级和内核级线程 112
4.1.5 其他方案 115
4.2 对称多处理 116
4.2.1 SMP体系结构 116
4.2.2 SMP系统的组织结构 117
4.2.3 多处理器操作系统的
4.2.3 设计思考 118
4.3 微内核 119
4.3.1 微内核体系结构 119
4.3.2 微内核组织结构的优点 120
4.3.3 微内核性能 121
4.3.4 微内核设计 121
4.4 Windows线程和SMP管理 122
4.4.1 进程对象和线程对象 123
4.4.2 多线程 125
4.4.3 线程状态 125
4.4.4 对操作系统子系统的支持 126
4.4.5 对称多处理的支持 126
4.5 Solaris的线程和SMP管理 127
4.5.1 多线程体系结构 127
4.5.2 动机 127
4.5.3 进程结构 128
4.5.4 线程的执行 129
4.5.5 把中断当做线程 129
4.6 Linux的进程和线程管理 130
4.6.1 Linux任务 130
4.6.2 Linux线程 131
4.7 小结 132
4.8 推荐读物 133
4.9 关键术语、复习题和习题 133
第5章 并发性:互斥和同步 138
5.1 并发的原理 139
5.1.1 一个简单的例子 139
5.1.2 竞争条件 141
5.1.3 操作系统关注的问题 141
5.1.4 进程的交互 141
5.1.5 互斥的要求 144
5.2 互斥:硬件的支持 144
5.2.1 中断禁用 144
5.2.2 专用机器指令 145
5.3 信号量 147
5.3.1 互斥 150
5.3.2 生产者/消费者问题 151
5.3.3 信号量的实现 154
5.4 管程 155
5.4.1 使用信号的管程 155
5.4.2 使用通知和广播的管程 158
5.5 消息传递 159
5.5.1 同步 160
5.5.2 寻址 161
5.5.3 消息格式 162
5.5.4 排队原则 162
5.5.5 互斥 162
5.6 读者-写者问题 163
5.6.1 读者优先 164
5.6.2 写者优先 164
5.7 小结 166
5.8 推荐读物 167
5.9 关键术语、复习题和习题 167
第6章 并发:死锁和饥饿 178
6.1 死锁的原理 178
6.1.1 可重用资源 180
6.1.2 可消耗资源 181
6.1.3 资源分配图 182
6.1.4 死锁的条件 183
6.2 死锁预防 184
6.2.1 互斥 184
6.2.2 占有且等待 184
6.2.3 不可抢占 184
6.2.4 循环等待 184
6.3 死锁避免 185
6.3.1 进程启动拒绝 185
6.3.2 资源分配拒绝 186
6.4 死锁检测 189
6.4.1 死锁检测算法 189
6.4.2 恢复 190
6.5 一种综合的死锁策略 190
6.6 哲学家就餐问题 191
6.6.1 使用信号量解决方案 191
6.6.2 使用管程解决方案 192
6.7 UNIX的并发机制 192
6.7.1 管道 192
6.7.2 消息 193
6.7.3 共享内存 193
6.7.4 信号量 194
6.7.5 信号 194
6.8 Linux内核并发机制 195
6.8.1 原子操作 195
6.8.2 自旋锁 196
6.8.3 信号量 197
6.8.4 屏障 199
6.9 Solaris线程同步原语 199
6.9.1 互斥锁 200
6.9.2 信号量 200
6.9.3 多读者/单写者锁 201
6.9.4 条件变量 201
6.10 Windows并发机制 201
6.10.1 等待函数 201
6.10.2 分派器对象 202
6.10.3 临界区 203
6.10.4 轻量级读写锁和条件变量 203
6.11 小结 204
6.12 推荐读物 204
6.13 关键术语、复习题和习题 205
第三部分 内存
第7章 内存管理 210
7.1 内存管理的需求 210
7.1.1 重定位 210
7.1.2 保护 211
7.1.3 共享 211
7.1.4 逻辑组织 211
7.1.5 物理组织 211
7.2 内存分区 212
7.2.1 固定分区 212
7.2.2 动态分区 214
7.2.3 伙伴系统 216
7.2.4 重定位 218
7.3 分页 219
7.4 分段 222
7.5 安全问题 222
7.5.1 缓冲区溢出攻击 222
7.5.2 预防缓冲区溢出 225
7.6 小结 225
7.7 推荐读物 225
7.8 关键术语、复习题和习题 225
附录7A 加载和链接 228
第8章 虚拟内存 232
8.1 硬件和控制结构 232
8.1.1 局部性和虚拟内存 233
8.1.2 分页 235
8.1.3 分段 242
8.1.4 段页式 243
8.1.5 保护和共享 244
8.2 操作系统软件 244
8.2.1 读取策略 245
8.2.2 放置策略 246
8.2.3 置换策略 246
8.2.4 驻留集管理 251
8.2.5 清除策略 255
8.2.6 加载控制 255
8.3 UNIX和Solaris内存管理 257
8.3.1 分页系统 257
8.3.2 内核内存分配器 259
8.4 Linux内存管理 260
8.4.1 Linux虚拟内存 260
8.4.2 内核内存分配 261
8.5 Windows内存管理 262
8.5.1 Windows虚拟地址映射 263
8.5.2 Windows分页 263
8.6 小结 264
8.7 推荐读物和网站 264
8.8 关键术语、复习题和习题 265
附录8A 散列表 268
第四部分 调度
第9章 单处理器调度 272
9.1 处理器调度的类型 272
9.1.1 长程调度 273
9.1.2 中程调度 274
9.1.3 短程调度 274
9.2 调度算法 274
9.2.1 短程调度准则 274
9.2.2 优先级的使用 275
9.2.3 选择调度策略 276
9.2.4 性能比较 284
9.2.5 公平共享调度 287
9.3 传统的UNIX调度 289
9.4 小结 290
9.5 推荐读物 291
9.6 关键术语、复习题和习题 291
附录9A 响应时间 294
附录9B 排队系统 296
编程项目2:主机调度shell程序 299
第10章 多处理器和实时调度 304
10.1 多处理器调度 304
10.1.1 粒度 304
10.1.2 设计问题 307
10.1.3 进程调度 308
10.1.4 线程调度 309
10.2 实时调度 312
10.2.1 背景 312
10.2.2 实时操作系统的特点 313
10.2.3 实时调度 315
10.2.4 限期调度 316
10.2.5 速率单调调度 319
10.2.6 优先级反转 321
10.3 Linux调度 322
10.3.1 实时调度 322
10.3.2 非实时调度 323
10.4 UNIX SVR4调度 325
10.5 Windows调度 326
10.5.1 进程和线程优先级 326
10.5.2 多处理器调度 328
10.6 小结 328
10.7 推荐读物 328
10.8 关键术语、复习题和习题 329
第五部分 I/O和文件
第11章 I/O管理和磁盘调度 334
11.1 I/O设备 334
11.2 I/O功能的组织 335
11.2.1 I/O功能的发展 335
11.2.2 直接存储器访问 336
11.3 操作系统设计问题 337
11.3.1 设计目标 337
11.3.2 I/O功能的逻辑结构 338
11.4 I/O缓冲 339
11.4.1 单缓冲 340
11.4.2 双缓冲 341
11.4.3 循环缓冲 341
11.4.4 缓冲的作用 341
11.5 磁盘调度 342
11.5.1 磁盘性能参数 342
11.5.2 磁盘调度策略 344
11.6 RAID 347
11.6.1 RAID级别0 349
11.6.2 RAID级别1 350
11.6.3 RAID级别2 351
11.6.4 RAID级别3 351
11.6.5 RAID级别4 352
11.6.6 RAID级别5 353
11.6.7 RAID级别6 353
11.7 磁盘高速缓存 353
11.7.1 设计考虑 353
11.7.2 性能考虑 355
11.8 UNIX SVR4 I/O 355
11.8.1 缓冲区高速缓存 356
11.8.2 字符队列 356
11.8.3 无缓冲I/O 357
11.8.4 UNIX设备 357
11.9 Linux I/O 357
11.9.1 磁盘调度 358
11.9.2 Linux页面缓存 360
11.10 Windows I/O 360
11.10.1 基本I/O机制 360
11.10.2 异步I/O和同步I/O 361
11.10.3 软件RAID 361
11.10.4 卷影复制 361
11.10.5 卷加密 362
11.11 小结 362
11.12 推荐读物 362
11.13 关键术语、复习题和习题 363
附录11A 磁盘存储设备 365
第12章 文件管理 371
12.1 概述 371
12.1.1 文件和文件系统 371
12.1.2 文件结构 371
12.1.3 文件管理系统 373
12.2 文件组织和访问 375
12.2.1 堆 376
12.2.2 顺序文件 376
12.2.3 索引顺序文件 377
12.2.4 索引文件 377
12.2.5 直接文件或散列文件 378
12.3 文件目录 378
12.3.1 内容 378
12.3.2 结构 379
12.3.3 命名 380
12.4 文件共享 381
12.4.1 访问权限 381
12.4.2 同时访问 381
12.5 记录组块 382
12.6 二级存储管理 383
12.6.1 文件分配 383
12.6.2 空闲空间的管理 387
12.6.3 卷 388
12.6.4 可靠性 388
12.7 文件系统安全 389
12.8 UNIX文件管理 390
12.8.1 索引节点 391
12.8.2 文件分配 392
12.8.3 目录 393
12.8.4 卷结构 393
12.8.5 传统的UNIX文件访问
6.10.4 控制 393
12.8.6 UNIX中的访问控制列表 394
12.9 Linux虚拟文件系统 395
12.9.1 超级块对象 397
12.9.2 索引节点对象 397
12.9.3 目录项对象 398
12.9.4 文件对象 398
12.10 Windows文件系统 398
12.10.1 NTFS的重要特征 398
12.10.2 NTFS卷和文件结构 399
12.10.3 可恢复性 401
12.11 小结 402
12.12 推荐读物 402
12.13 关键术语、复习题和习题 403
第六部分 嵌入式系统
第13章 嵌入式操作系统 406
13.1 嵌入式系统 406
13.2 嵌入式操作系统的特点 407
13.2.1 移植现有的商业操作系统 408
13.2.2 为特定目的构建的嵌入式
6.10.4 操作系统 408
13.3 eCos 409
13.3.1 可配置性 409
13.3.2 eCos组件 411
13.3.3 eCos调度程序 414
13.3.4 eCos线程同步 415
13.4 TinyOS 419
13.4.1 无线传感器网络 420
13.4.2 TinyOS的目标 420
13.4.3 TinyOS的组件 421
13.4.4 TinyOS的调度程序 423
13.4.5 配置例子 423
13.4.6 TinyOS的资源接口 425
13.5 推荐读物和网站 426
13.6 关键术语、复习题和习题 426
第七部分 安全
第14章 计算机安全威胁 430
14.1 计算机安全的概念 430
14.2 威胁、攻击和资产 431
14.2.1 威胁和攻击 431
14.2.2 威胁和资产 432
14.3 入侵者 434
14.3.1 入侵者行为模式 435
14.3.2 入侵技术 437
14.4 恶意软件概述 437
14.4.1 后门 437
14.4.2 逻辑炸弹 438
14.4.3 特洛伊木马 438
14.4.4 移动代码 438
14.4.5 多威胁恶意软件 439
14.5 病毒、蠕虫与僵尸 440
14.5.1 病毒 440
14.5.2 蠕虫 443
14.5.3 僵尸 445
14.6 rootkits 447
14.6.1 rootkit安装 447
14.6.2 系统级调用攻击 447
14.7 推荐读物和网站 448
14.8 关键术语、复习题和习题 448
第15章 计算机安全技术 451
15.1 身份验证 451
15.1.1 身份验证方法 451
15.1.2 基于密码的身份验证 451
15.1.3 基于令牌的身份验证 453
15.1.4 生物特征识别认证 454
15.2 访问控制 455
15.2.1 自主访问控制 456
15.2.2 基于角色的访问控制 458
15.3 入侵检测 460
15.3.1 基本原则 460
15.3.2 基于主机的入侵检测技术 461
15.3.3 审计记录 462
15.4 恶意软件防御 463
15.4.1 反病毒方法 463
15.4.2 蠕虫对策 465
15.4.3 自动代理程序的对策 466
15.4.4 rootkit对策 466
15.5 处理缓冲区溢出攻击 467
15.5.1 编译时防御 467
15.5.2 运行时防御 469
15.6 Windows Vista安全性 470
15.6.1 访问控制方案 470
15.6.2 访问令牌 471
15.6.3 安全描述符 471
15.7 推荐读物和网站 474
15.8 关键术语、复习题和习题 475
第八部分 分布式系统
第16章 分布式处理、客户/服务器和
第16章 集群 481
16.1 客户/服务器计算模型 481
16.1.1 什么是客户/服务器
16.1.1 计算模型 481
16.1.2 客户/服务器模型的应用 482
16.1.3 中间件 486
16.2 分布式消息传递 487
16.2.1 可靠性与不可靠性 488
16.2.2 阻塞与无阻塞 488
16.3 远程过程调用 489
16.3.1 参数传递 490
16.3.2 参数表示 490
16.3.3 客户/服务器绑定 490
16.3.4 同步和异步 490
16.3.5 面向对象机制 491
16.4 集群 491
16.4.1 集群的配置 491
16.4.2 操作系统的设计问题 493
16.4.3 集群计算机的体系结构 494
16.4.4 集群与SMP的比较 495
16.5 Windows集群服务器 495
16.6 Sun集群 496
16.6.1 对象和通信支持 497
16.6.2 进程管理 497
16.6.3 网络连接 497
16.6.4 全局文件系统 498
16.7 Beowulf和Linux集群 498
16.7.1 Beowulf特征 498
16.7.2 Beowulf软件 499
16.8 小结 500
16.9 推荐读物和网站 500
16.10 关键术语、复习题和习题 501
附录A 并发主题 503
附录B 面向对象设计 516
附录C 编程和操作系统项目 523
术语表 528
参考文献 536

教学资源推荐
作者: 张清华 蒲兴成 尹邦勇 刘勇 编著
作者: [加]斯蒂芬·布朗(Stephen Brown) 斯万克·瓦拉纳西(Zvonko Vranesic) 著
作者: 吴国伟 徐子川 姚琳 编著 郭禾 主审
参考读物推荐
作者: 王汉华 刘兴亮 张小平 著
作者: (美)Joseph Mayo
作者: 蒋国强 岳元亚 等编著