读书人

操作系统:并发与分布式软件设计

发布时间: 2010-03-20 07:17:02 作者:

 操作系统:并发与分布式软件设计


基本信息出版社:电子工业出版社
页码:577 页
出版日期:2005年05月
ISBN:712100772X
条形码:9787121007729
版本:第1版
装帧:平装
开本:16开 Pages Per Sheet
丛书名:国外计算机科学教材系列

内容简介 本书是一本用新的观念讲述操作系统原理和设计的高级教程。 全书围绕着并发和分布式概念组织章节,避免仅仅将注意力置于传统的集中式系统,反映了分布式系统在当代已被广泛应用的现实,从而更能为读者所接受。全书共有30章,分为四个部分,第一部分和第二部分主要阐述了操作系统核心概念和基本功能,并介绍了操作系统理论和实践的最新进展。第三部分和第四部分将操作系统和数据库,以及分布式系统的设计结合起来,对UNIX,Linux,Windows 2000/NT和JVM等典型现代操作系统进行了具体分析,并讨论了Web服务、中间件和事务处理等应用。对于操作系统安全这样一个重要课题,书中还专门安排了一章进行论述。本书的另一个特点是,所有的代码示例均结合Java语言进行,并采用Java描述面向对象的概念、并发算法和分布式程序设计等。
本书适合作为研究生的操作系统课程教材,也适合程序员、软件工程师,以及系统设计者作为学习和了解系统软件和操作系统的参考书。
作者简介 Jean Bacon,英国剑桥大学教授,耶酥学院高级会员。讲授操作系统、分布式系统及计算机体系结构课程,她在分布式系统领域从事的研究在剑桥大学首屈一指。
Tim harris,英国剑桥大学计算机科学系讲师,邱吉尔学院高级会员。可扩异操作系统领域博士,除讲授操作系统课程以外,他还讲授Java并发程序设计课程。
媒体推荐 书评
译者序
目前,在国内计算机专业类的教材市场上,美国各出版社近年出版的各种操作系统教材几乎都可以找到,但是源自英国的教材却很少见。之所以这样也很正常,因为在计算机科学和工程领域中,美国科学家和工程师们做出的贡献是公认的。
不过,从计算机发展的历史过程来看,英国学术界和工业界对计算机科学与工程的贡献也是很出色的,请看历史的部分片段记录:
1943年 在美国费城的电子工程Moore学院,开始建造ENIAC计算机。世界第一台全电子管运算装置——Colossus,由Turing等人在英国Bletchley Park开始研发。
1946年 ENIAC计算机在美国宾夕法尼亚大学揭幕。而Turing也发表有关于ACE(自动计算引擎)的设计报告,计划在英国国家物理实验室建造。
1948年 MarkⅠ计算机在英国曼彻斯特大学投入运行。EDSAC计算机在英国剑桥大学投入运行。
1953年 在英国Lyons公司,LEO计算机的商业版EDSAC系统投入运行,为Lyons 自助餐厅提供服务。IBM650(磁鼓计算机)成为第一台大量生产的计算机。英国剑桥大学颁发世界第一份计算机科学的研究生学位证书。
1961年 美国MIT的Fernando Carbaro研制完成了CTSS上的分时/多访问系统。IBM的Stretch(7030)计算机完成。
1962年 英国Atlas计算机首次采用分页虚拟存储以及管道操作。美国斯坦福大学和普度大学建立计算机科学系。
……
从上面这份简短的计算机发展历史片段中,我们可以看到,英国科学家和工程师们对计算机科学与工程发展的贡献一点也不比美国科学家和工程师逊色。我们几乎无法判别出,究竟谁是早期计算机领域的领先者,是美国的科学家和工程师,还是英国的科学家和工程师?
可以相信,有着这样背景的英国计算机学术界,在教材写作与出版方面,也必然会折射出其辉煌历史的光芒。而英国剑桥大学Jean Bacon与Tim Harris两位教师所著的本书则是这样一本值得推荐的好教材。
在英国,有不少大学选择本书作为计算机科学专业操作系统课程的首选教材。而由于该书内容和编排上的特点,本书还适合作为通信和数据库专业的相关教材使用。对于各类需要了解操作系统知识的本科专业的学生而言,本书也是很有价值的。本书的另一个特点是其实践性,所以也适合有关设计开发人员作为参考书使用。
北京大学信息科学技术学院操作系统实验室的师生参加了本书的翻译和校对工作,他们是陈向群、朱伟、高志、钟诚、滕启明、赵霞、胡建钧、余啸海、王俊、徐冬、陈国辉、欧阳图、黄亚峰、王会娣、胡新婕、戴蓉、李健、张晓薇、王华、李永峰、王悦、徐兆伟;本书在翻译出版过程中,得到了出版社编辑的大力支持;在此一并表示由衷的感谢。
前言
前言
本书源于Jean Bacon的《并发系统》(Concurrent Systems)第一版和第二版。专门为英国Open大学改写的第三版也刚刚出版,该校从1999年起就将这本书用做 “软件系统及其开发”课程的教科书(课程编号M301)。这门课程并不涉及操作系统设计的具体细节,因此在第三版里删去了书中的这些细节。
本书扩充了《并发系统》中关于操作系统的内容,使之更适合作为一门标准的操作系统课程的教材。《并发系统》第一版和第二版建立了理解软件系统的最基本的原则。本书有如下特点:
●全书通过Java语言提供面向对象概念、并发算法和分布式编程的范例
●对操作系统设计和实例分析等内容进行了更新和扩充
●安排专门一章讲述安全性问题,并补充了涉及分布式系统的内容
●第四部分的实例分析将经典版本的UNIX系统与当前版本分别讨论,并引进了新的一章讲解可扩展操作系统。“万维网”与重新写作的“中间件”部分,展示了分布式系统近年来的新发展
本书仍然沿用强调系统分析的思路和讲述方式。自1993年以来,这种思路在这个不断发展的领域中得到了广泛应用。
本书的目的在于让学生获得对现代软件系统的整体认识。模块化、并发与分布式是全书的主题,这既表现在操作系统的设计中,也表现在操作系统所支持的系统中。本书不是从编程的角度,而是从系统的角度来讲解的,因为并发和分布式编程是紧密嵌入在系统设计中的。编程语言是系统设计人员的实现工具,本书从这个角度处理编程语言。
本书的结构如下:
●系统设计需求 介绍真实世界中各种系统的类型和建立基于计算机的系统的基本要求。
●第一部分 探索技术与系统设计之间的关系。详细讲解操作系统的基本功能,建立作为并发进程的共同体系的抽象和实现。介绍分布式系统的基本属性和这类系统中的安全性问题。
●第二部分 着重讲述操作系统和应用层系统中的并发控制,以及在系统设计语境下的进程间通信(IPC)。为了便于分别讲解,这部分的主题专注于在主存内怎样实现对象调用方法的原子操作。我们通过对被调用对象是永久对象或远程对象案例的讨论,得到了结论;也仔细讨论了分布式IPC。
●第三部分 这一部分的主题是并发复合操作或事务处理。这些观点的传统应用领域是数据库系统,但是这里叙述了这些系统概念的一般应用能力。
●第四部分 用本书中所建立的视角进行一些案例研究。
计算机系统课程
分布式系统近年来得到非常广泛的应用,大学本科的最后一年或研究生课程中经常包含这部分内容。分布式系统现在是很常见的,比起集中式的分时系统,学生更倾向于使用分布式系统。在一门入门课程中想要覆盖共享、集中式操作系统中大多数细节似乎不太现实,特别是技术的快速发展使得我们必须对传统的处理和算法进行持续不断地评估。
总之,专才培养与通才培养之间似乎有一种越来越紧密的联系,甚至在本科阶段也是如此。尽早对系统的各个部分及其之间关系有一个概要性地了解是可取的:
●操作系统包含通信处理
●语言运行时系统与操作系统紧密联系,又被后者所约束
●实时系统要求专门设计的操作系统
●专用的通信处理计算机需要专门设计的操作系统
●数据库管理系统需要运行在操作系统上,并且需要并发性和文件管理方面的特殊保证
●并发程序需要运行在操作系统上
●操作系统(及其部件)本身就是并发程序
●视窗系统需要并发进程
●许多系统部件都要使用数据库
●分布式系统要使用分布式数据库
●分布式数据库需要通信
●分布式操作系统需要“事务处理”
本书采用模块化结构(全书使用一个简单的对象模型),并发控制和分布式建立起一个通用的框架来整合上面的要求。
作者自从1988年起就在剑桥大学计算机系的一个三年制本科计划的课程里使用了这套讲解方式。在该三年制计划中的第二年,并发系统课程是分布式操作系统、通信与网络、并发理论和许多实例研究与工程的先修课程。图P.1给出了系统知识的关系。实时和嵌入式控制系统的一般课程也自然成为这门课的后继课程。
图P.1 课程中的分布式和并发软件中的操作系统
在IEEE的计算机分会和ACM出版的《计算课程体系91》(Curriculum 91 Computing)—enning等,1989; Tucker 1991)中,“操作系统”的范畴包括了分布式操作系统和通信。《计算课程体系91》规定了计算这个领域的三大主要部分:植根于数学理论;植根于实验科学方法的抽象(建模);植根于工程学的设计。理论讨论计算领域背后潜在的数学原理。 抽象使我们可以对大的复杂系统进行建模从而能认识它们的结构和行为,并且对之进行实验。设计是针对某个具体问题实现一个系统的过程。这里所采用的处理方法涵盖了抽象和设计,并建立了理论基础。
2001年12月,IEEE-CS/ACM出版了用于计算机科学的计算课程体系2001。用于计算机工程、软件工程和信息系统的《课程体系》也随后出版。该学会指出,由于这个领域在过去十年中有了长足的进展,应该规定一个最小的核心课程体系列表,然后在这个基础上进行多种扩展。操作系统课程的18个最小课时核心主题(和所占课时)是:操作系统概论(2课时);操作系统原理(2课时);并发(6课时);调度和分派(3课时);内存管理(5课时)。在网络为中心计算课程的15个最小课时里,核心的主题是:概论(2课时);网络和通信(7课时);网络安全(3课时);网络作为客户-服务器模式的实例(3课时)。在信息管理课程的10个最小课时里,核心的主题则把事务处理作为一个简单的扩展。“对象先导”(Object First)是三个所建议编程入门的模式之一[另外两个是“要事先导”(Imperative First)和“功能先导”(Functional First)]。这里表达的整体观点包含了对系统主题核心内容的整合和扩展。
关于本书的读者
本书的读者应该至少具有一些系统和编程语言的知识和经验。计算机系本科生第一年的编程和系统软件课程就是比较合适的先修课程。同时它也可以作为通信和数据库专业的教材使用。本书也是系统研究方向研究生的合适入门课程,为当前多种多样本科专业的学生提供了综合的、概要性的学习机会。在系统设计(包括系统程序设计)领域中的从业者会在本书中找到有关课题的基本原理。研究并行理论的研究生也可以在本书中得到其课题的实践基础。
内容概要
第1章叙述了多种系统类型,指出了支持它们所需的条件。软件系统可以利用硬件的各种拓扑和体系结构。虽然本书不会详细讨论这个课题,但会引用这些系统的特征。
第一部分包括第2章至第8章。系统设计和实现需要软件的工程化。有很多著作专门讨论软件工程;软件工程涵盖了软件系统的规格说明、设计、实现、维护以及演化。在此简要地叙述了模块化软件结构的背景知识,并建立了本书中所使用的对象模型。
第2章叙述模块化系统结构,建立起操作系统的模块化结构。并引入下面的观点:最小化的内核,也称“微内核”,能为高性能的专门化服务提供一个合适的基础。本章也叙述用于实现软件动态执行的进程和协议的概念。
第3章讨论设备和通信的处理。之所以把这些课题放在一起讨论,是为了突出它们的共性(通信和其他设备之间)和差异(通信软件比设备支持软件更大,而且更复杂)。在操作系统中,通信处理子系统本身就是一个并发(子)系统,在给定时间内,该系统可能需要处理跨网络的、不同来源的多个输入流,以及来自本地的客户端的网络通信请求。
第4章详细给出了操作系统“进程”这个抽象概念的具体基础。一旦进程抽象作为操作系统功能被创建之后,就可以展示如何利用进程来实现系统其余部分的动态执行。进程可用于操作系统自身的模块,而用户进程则用于应用程序模块。本书讨论了若干种可选的设计方案。本书后半部分涉及语言系统,特别是对并发执行支持的讨论。有关操作系统和语言系统之间的关系也会详细讨论。
第5章讲述内存管理。进程的地址空间是一个重要的概念,有关地址空间共享部分的机制也同样重要。
第6章给出了文件系统的基本概念。文件系统的实现涉及到内存和磁盘上持久存储器的数据结构。操作系统的内存管理和文件管理子系统需要同时处理不同软件的I/O请求,以及不同硬件的服务请求,所以它们也是并发系统。
第7章介绍分布式软件系统。首先着重讨论它们的基本性质,然后较为具体地讨论了时间和命名处理。后续章节可以看成在前面所叙述的各项功能的具体讨论。
第8章讨论了集中式和分布式系统的安全问题。
第一部分所涉及的是技术以及它们对系统设计的影响。这里所介绍的知识,对于深入理解软件系统是必需的。当在语言和理论模型层次考虑问题时必须小心,要确保所做的假设对实现系统所用的操作系统和硬件来说是合理的。
第二部分讨论系统设计的一个主要需求:并发控制。在此阐明了保证一个进程在执行时不受任何其他进程干扰的机制。需要注意的是,一个进程可能需要与别的进程协作(并需要与它们同步),或者与别的进程竞争某些资源。
第二部分包括第9章至第16章。在这一部分,有时候会暂时忽略复合操作和某些任务需要同时访问多个资源等问题,而把讨论集中于内存中某个对象的单个方法调用上。“单一抽象操作”是一种非正式的提法,与系统的模块化结构密切相关。一般说来,一个进程可以读写内存中的一个字而无需担心其他进程的干扰。这样的读或写是不可分的。在实际中,编程语言层次的变量或者像数组、列表和记录这样的数据抽象并不支持这样原子化的读写操作。本书第二部分关注的是在并发进程中对这种共享数据抽象的访问。第9章到第14章主要关注运行在单一或者分布式内存中的即时执行系统。第15章和第16章开始考虑系统构件错误的影响,以及涉及持久存储器的进程交互。
第9章讨论了共享内存,以及运行于公共地址空间的进程与非共享内存进程之间的主要区别。这里所给出的例子说明了这两种方式都是必需的。
第10章考虑了支持进程交互所需最底层的机制。这涉及到计算机和系统自身的体系结构。我们必须了解计算机是否提供某些“读-改-写”的复合指令,也必须掌握系统采用的是共享内存多处理器还是单处理器体系结构。本章讨论了无硬件支持的并发控制,并引入了信号量。
第11章在底层支持的基础之上构造了解决经典系统问题的算法。在编程中正确地使用信号量并不容易。对该难点的讨论引出了下一章中有关支持并发高级语言的讨论。
第12章考察了高级并发程序设计语言引入的原语。一个潜在的假设是进程在共享的地址空间中执行。本章还叙述了Java语言对并发程序设计的支持。
第13章对比了在提供共享地址空间与不提供共享地址空间的两种系统中进程间通信(IPC)的机制。这两种情况中,进程都需要访问公共信息并且同步它们的活动。
第14章讨论在不同地址空间中的进程间通信。讨论了管道和消息传递机制。本章的内容与分布式IPC高度相关,但是把IPC与通信服务的集成安排在第16章中讨论。
第15章叙述了系统随时崩溃的可能性,并且概要讲述了恢复机制。在这一章中对涉及持久数据的操作进行初步讨论。
第16章中集中讨论IPC和分布式系统,同时讨论在第7章中引入的那些基本特征。读者将看到,在分布式系统中如何通过远程过程调用协议在某一节点上调用另一个节点上的功能。有关节点崩溃与重启,以及网络故障等已经有所考虑。虽然分布式IPC是本章的重点,但本章也包含了关于分布式系统中的命名、定位以及将命名绑定至定位的一般性讨论。作为实际的例子,本章给出了Java中的套接字编程以及远程方法调用(RMI)。
第三部分包括第17章到第23章,这里把所讨论的内容推广到复合操作(事务处理),以及构成它们的子操作的并发执行。相关的对象可能存在于内存、持久存储器或分布式系统中。
第17章引入了事务并发这个问题并且说明了相关研究的背景。复合操作可以跨越分布式系统并且涉及到持久存储器。
第18章讨论动态资源分配的需求,以及由此引发的系统死锁的可能。初步探讨了资源的分配与管理,包括检测与避免死锁的算法。
第19章讨论了在存在并发与崩溃环境下复合操作的执行,并且确立了事务基本属性的概念。这里采用了一个基于抽象数据对象的模型。
第20章讨论了事务处理的并发控制。阐述了二阶段锁、时间戳排序以及乐观并发控制等,并对它们进行比较。
第21章主要考虑崩溃的恢复,同时,并发控制所需的中止事务的能力也是一个相关的问题。本章给出了一个具体的实现。
第22章把用于事务的对象模型推广到了分布式系统中,并且重新考虑了实现并发控制的方法。讨论了分布式原子操作提交的问题。作为一个例子,给出了一个两阶段提交协议,也给出了一个用于乐观并发控制的验证协议。
第23章包含了分布式计算可能用到的算法。
第四部分包括第24章到第30章,进行实例分析。相比之前给出的例子而言,这里可以进行更加深入的讨论。其目的是要说明,在本书中给出的各种方法会对读者理解大型的复杂系统有所帮助。
第24章叙述了基本UNIX第7版的设计,即“经典UNIX”。评价了其设计,特别指出了其进程管理和进程间通信方面的问题。
第25章说明了Linux,Solaris和现代UNIX如何解决有关经典UNIX的这些问题。
第26章是关于可扩展操作系统的内容,考察了更多基本的操作系统结构,包括微内核结构。
第27章探讨了采用面向对象方法设计的Windows 2000。目前个人计算机的硬件已经能够提供支持多应用、多用户所需的保护机制,并且足以支持大规模的应用。
第28章讨论了Web编程,这个课题是近几年来才出现的,并得到了广泛的发展。这种编程模式主导了相当部分的分布式系统设计与开发。
第29章讨论了多种类型的中间件,并对基于同步对象调用和基于异步消息传递的中间件技术进行了对比。前者包括Java,OMG的OMA和CORBA;后者包括IBM的MQseries和TIBCO TIB/Rendezvous。另外,本章也概述了微软的DCOM和 .NET技术。
第30章首次从进程、IPC和通信的角度讨论了事务处理监控程序的实现。本章给出了用于电子资金转移的几个事务处理系统的例子,例如国际自动柜员机(ATM)网络。
本书的附录A叙述了在技术和商业背景下软件系统的历史和功能上的发展。 也包含了在没有任何硬件支持的情况下如何实现并发控制的技术以及习题。
讲授顺序
图P.2展示了各部分内容之间的依赖关系,并且说明了如何选用本书中的章节用于操作系统和分布式系统的课程,以及作为并发编程、系统编程或数据库课程的补充资料。
第二部分的内容可以按照不同的顺序讲授。虽然在本书写作中,这些章节就存在目前这样的顺序,但事实上并没有内在的理由要求共享内存IPC必须在无共享内存IPC之前讲授,尽管分布式系统自然遵从后者。
对于并发编程的课程,可以在第一部分和第二部分的基础上补充用于课程设计的编程语言的详细知识,选择Java是很自然的。也应该把第三部分的第17章和第18章包含在讲授范围内。
关于数据库系统中并发控制的课程,可以使用第三部分的内容,而涉及操作系统的前面一些章节为数据库提供了很好的背景知识。
图P.2 本书的讲授顺序
进一步学习
本书很自然地把读者引导至更高级的课程:专用操作系统、嵌入式实时控制系统、大规模分布式系统、分布式数据库等。本书建立了并发控制、分布式、命名、定位、部署、保护、认证、加密等的概念框架,为进一步研究系统设计做好了准备。
本书的目标
本书主要强调系统设计(其中操作系统占主要部分),如何理解现有的系统以及设计新的系统。在特定的操作系统上,用特定的语言是无法完成某些任务的。本书解释了这种情况背后的原理。计算机已经商业化了。因而像“实时操作系统”这样的名字与其实际含义已经几乎没有关系了。为了在遇到销售人员时能够保持清醒,读者必须知道自己需要什么,并且必须注意到所提供的系统有哪些缺陷。作者希望本书能够帮助系统设计人员选择适合自己需要的硬件和软件。
教师指南
本书配有《习题解答手册》。解答中还包含各种不同设计在实际应用中的范例(关于《习题解答手册》的获取,请参见书后所附的“教学支持说明”)。
Jean Bacon与Tim Harris
2002年7月
Jean.Bacon@cl.cam.ac.uk
Tim.Harris@cl.cam.ac.uk
本书是一本用新的观念讲述操作系统原理和设计的高级教程。 全书围绕着并发和分布式概念组织章节,避免仅仅将注意力置于传统的集中式系统,反映了分布式系统在当代已被广泛应用的现实,从而更能为读者所接受。
本书特点:
解释了核心操作系统的原理及功能;
涉及了操作系统理论与实践的最新进展;
研究了UNIX,Linux,Windows 2000/NT及JVM中的操作系统案例;
集中探讨了对象、并发与事务;
所有代码示例无结合Java语言进行,并采用Java描述面向对象的概念、并发算法和分布式程序设计;
对于操作系统安全这样一个重要课题,书中专门安排了一章进行论述;
将数据库和分布式系统的设计结合起来;
进一步分析了Web服务、中间件及事务处理的案例。

目录
第1章 系统设计需求
 1.1 内在的并发系统
 1.2 支持潜在的并发应用
 1.3 软件系统的体系结构
 1.4 定义并发系统
 1.5 系统实现需求
 1.6 系统设计中的安全,保护与容错
 习题
第一部分 系统设计:技术与原理
 第2章 系统结构与动态执行
  2.1 系统结构:概念视图
  2.2 系统结构:实现视图
  2.3 进程概念
  2.4 操作系统功能
  2.5 操作系统调用和保护
  2.6 操作系统结构
  2.7 操作系统内的对象结构及操作系统支持下的对象结构
  2.8 分布式对象系统,平台和中间件
  2.9 安全与保护
  2.10 小结
  思考题
  习题
 第3章 硬件接口,I/O和通信
  3.1 概述
  3.2 与设备的接口
  3.3 异常处理
  3.4 多处理器
  3.5 用户级的输入和输出
  3.6 通信管理
  3.7 通信网络,接口和驱动
  3.8 通信协议
  3.9 操作系统之中和操作系统之上对通信的处理
  3.10 小结
  习题
 第4章 进程支持
  4.1 系统中进程的使用
  4.2 进程和处理器
  4.3 进程状态
  4.4 与硬件同步:事件与WAIT操作
  4.5 进程数据结构
  4.6 调度:通用方案
  4.7 共享内存多处理器系统的调度
  4.8 满足实时需求的进程调度
  4.9 进程抽象和实现
  4.10 操作系统结构和进程的实现
  4.11 多线程进程的实现
  4.12 语言系统,运行时系统和操作系统中的进程
  4.13 语言系统和操作系统中的进程状态
  4.14 使用系统调用的顺序程序
  4.15 编程语言并行性的发展
  4.16 编程语言中的进程创建
  4.17 线程体系结构
  4.18 Java的线程和异常
  4.19 小结
  思考题
  习题
 第5章 存储管理
  5.1 存储管理简介
  5.2 存储层次结构
  5.3 进程的地址空间
  5.4 段式虚拟存储
  5.5 页式虚拟存储
  5.6 分段和分页结合
  5.7 操作系统数据结构
  5.8 内存管理单元的示例
  5.9 系统设计中的内存管理
  5.10 小结
  习题
 第6章 文件管理
  6.1 文件管理
  6.2 文件系统功能综述
  6.3 文件和目录结构
  6.4 文件系统接口
  6.5 文件系统的实现
  6.6 现代文件系统设计
  6.7 基于网络的文件服务
  6.8 虚拟内存和存储的集成
  6.9 小结
  习题
 第7章 分布式系统基础
  7.1 简介
  7.2 一般分布式系统的演化
  7.3 个人计算
  7.4 模型和软件架构
  7.5 分布式系统的独有特点
  7.6 分布式系统中的时间
  7.7 命名
  7.8 移动用户,计算机和对象
  7.9 小结
  习题
 第8章 安全
  8.1 场景和安全需求
  8.2 威胁及风险分析
  8.3 加密方法
  8.4 算法
  8.5 协议
  8.6 实例
  8.7 小结
  习题
第二部分 主存中的并发控制
 第9章 系统结构
  9.1 共享地址空间中的进程
  9.2 独立地址空间中的进程
  9.3 共享操作系统
  9.4 对两种模型中进程设置方式的小结
  9.5 进程间交互的要求
  9.6 进程交互的种类
  9.7 进程交互
  9.8 单一并发动作的定义
  思考题
  习题
 第10章 底层同步:实现
  10.1 进程同步和事件通知与等待之间的比较
  10.2 互斥
  10.3 互斥的硬件支持
  10.4 信号量
  10.5 使用信号量的风格
  10.6 信号量操作的实现
  10.7 小结
  思考题
  习题
 第11章 底层同步:算法
  11.1 简介
  11.2 系统设计中信号量的例子:THE系统
  11.3 生产者-消费者,有界缓冲区问题
  11.4 安全性和活跃性属性
  11.5 多读者,单写者问题
  11.6 信号量的局限性
  11.7 eventcount(事件计数)与sequencer(序列器)
  11.8 POSIX线程
  11.9 小结
  实例研究及练习:磁盘高速缓存的管理
  思考题
  习题
 第12章 用共享内存实现IPC
  12.1 编程语言中的临界区
  12.2 管程
  12.3 在操作粒度上的同步
  12.4 小结
  思考题
  习题
 第13章 IPC和系统结构
  13.1 进程间通信的风格
  13.2 系统结构和用共享内存实现的IPC
  13.3 系统结构和非共享内存的IPC
  13.4 适合共享内存通信的系统
  13.5 不适合共享内存通信的系统
  13.6 经典UNIX中的例子
  13.7 进程间通信概述
  13.8 系统结构的对偶性
  13.9 命名
  13.10 小结
  思考题
  习题
 第14章 非共享内存的IPC
  14.1 简介
  14.2 共享文件
  14.3 UNIX管道
  14.4 异步消息传递
  14.5 基本消息传递机制的几种变体
  14.6 异步消息传递的实现
  14.7 同步消息传递
  14.8 编程语言中的消息传递
  14.9 服务器和客户端的多线程模型
  14.10 小结
  思考题
  习题
 第15章 灾难恢复和永久数据存储
  15.1 故障简述
  15.2 灾难模型
  15.3 灾难恢复和透明性
  15.4 幂等(可重复)操作
  15.5 永久对象的原子操作
  15.6 原子操作的实现
  15.7 非易失内存
  15.8 永久存储的操作
  15.9 操作系统中DBMS的需求
  15.10 小结
  思考题
  习题
 第16章 分布式IPC
  16.1 简介
  16.2 分布式系统的特征
  16.3 分布式IPC:消息传递
  16.4 IPC和通信的集成
  16.5 Java的套接字和流
  16.6 分布式程序设计范型
  16.7 远程过程调用
  16.8 RPC语言集成
  16.9 Java的RMI:一般对象模型中的RPC
  16.10 对同步调用的评述
  16.11 命名,定位和绑定
  16.12 小结
  思考题
  习题
第三部分 事 务
 第17章 组合操作
  17.1 组合操作
  17.2 主存中的组合操作
  17.3 涉及主存和持久性存储的组合操作
  17.4 组合操作的并发执行
  17.5 潜在的问题
  17.6 系统崩溃
  17.7 小结
  思考题
  习题
 第18章 资源分配和死锁
  18.1 动态分配需求
  18.2 死锁
  18.3 活锁和饥饿
  18.4 死锁存在的必要条件
  18.5 哲学家就餐问题
  18.6 对象分配图
  18.7 死锁检测的数据结构及算法
  18.8 死锁避免
  18.9 关于多进程释放对象
  18.10 分布式死锁
  18.11 小结
  思考题
  习题
 第19章 事务处理
  19.1 简介
  19.2 事务的规约与编程
  19.3 串行化和一致性的定义
  19.4 事务的ACID属性
  19.5 给出事务的特定次序
  19.6 事务处理的一个系统模型
  19.7 事务的依赖图
  19.8 历史记录及串行图
  19.9 处理中止操作:更多关于隔离性
  19.10 小结
  思考题
  习题
 第20章 并发控制
  20.1 简介
  20.2 主存中的并发组合操作
  20.3 事务管理系统的结构
  20.4 通过锁机制控制并发
  20.5 时间戳顺序(TSO)
  20.6 乐观并发控制(OCC)
  20.7 小结
  思考题
  习题
 第21章 系统恢复
  21.1 系统恢复需求
  21.2 对象模型,对象状态与恢复
  21.3 并发,系统崩溃和事务特性
  21.4 为系统崩溃恢复提供日志和影子对象
  21.5 恢复日志的使用
  21.6 撤销和重做操作
  21.7 系统失效时的事务状态
  21.8 事务恢复的算法
  21.9 移动对象的位置数据库
  21.10 小结
  习题
 第22章 分布式事务
  22.1 分布式系统的一个对象模型
  22.2 分布式事务处理
  22.3 通信
  22.4 并发控制:两阶段锁
  22.5 并发控制:时间戳顺序
  22.6 乐观并发控制
  22.7 分布式系统的提交和终止
  22.8 原子性提交:两阶段提交协议
  22.9 对OCC的两阶段确认
  22.10 小结
  思考题
  习题
 第23章 分布式计算
  23.1 简介
  23.2 进程组
  23.3 数据副本的一致性
  23.4 消息传递的排序
  23.5 分布式的n进程互斥
  23.6 小结
  习题
第四部分 实例研究
 第24章 经典UNIX
  24.1 简介
  24.2 UNIX的发展历史
  24.3 系统结构和UNIX内核
  24.4 文件系统接口
  24.5 文件系统的实现
  24.6 进程创建,终止和调度
  24.7 IPC:管道和信号
  24.8 小结
  习题
 第25章 Linux,Solaris和现代UNIX
  25.1 简介
  25.2 内核结构
  25.3 SVr4 IPC
  25.4 套接字和集成了IPC的文件子系统
  25.5 内存管理
  25.6 多处理器调度
  25.7 小结
  习题
 第26章 可扩展系统
  26.1 可扩展性机制
  26.2 编译时配置
  26.3 微内核操作系统
  26.4 可下载代码
  26.5 exokernel和垂直结构
  26.6 嵌套虚拟机
  26.7 可扩展虚拟机
  26.8 小结
  习题
 第27章 Windows 2000
  27.1 Windows 2000简介
  27.2 系统结构
  27.3 对象模型和对象管理
  27.4 内核
  27.5 进程,线程,纤程和并发控制
  27.6 I/O子系统
  27.7 NT文件系统(NTFS)
  27.8 网络
  27.9 小结
  习题
 第28章 万维网
  28.1 Web客户端与Web服务器的简单交互
  28.2 Web页面的命名
  28.3 使用HTTP通信
  28.4 文档表示
  28.5 在客户端和服务器上执行程序
  28.6 安全
  28.7 并发控制
  28.8 可伸缩性问题
  28.9 基于Web的中间件:XML和SOAP
  28.10 小结
  习题
 第29章 中间件
  29.1 中间件范型
  29.2 Java中间件
  29.3 OMG和OMA
  29.4 CORBA
  29.5 ODMG
  29.6 COM,DCOM 和 .NET
  29.7 面向消息的中间件(MOM)
  29.8 小结
  习题
 第30章 事务处理监视器和系统
  30.1 事务处理监视器
  30.2 电子货币转账(EFT)应用程序简介
  30.3 国际银行支付:SWIFT
  30.4 使用PIN码验证身份
  30.5 国际自动柜员机(ATM)网络服务
  30.6 TP系统中的负载和通信
  30.7 小结和趋势
  习题
附录A 计算机系统的演变
参考文献
术语表
……
读书人网 >操作系统

热点推荐