基本信息
- 原书名:Modern Operating Systems (3rd Edition)
- 原出版社: Prentice Hall

编辑推荐
《现代操作系统(原书第3版)》特色:涉及Windows Vista以及最新的Linux/UNIX操作系统。用一整章(第12章)的篇幅对用于移动设备的Symbian操作系统进行分析。涵盖更多、更新的安全方面的内容。重新组织内容,尽早论述关键抽象概念。
给出与未来操作系统发展有关的新研究成果。
更新和增加了编程练习。
在线操作系统练习采用主流Windows操作系统以及开源工具。
包括操作系统模拟练习。
Tanenbaum教授作为三个操作系统的设计师或联合设计师,具有长期设计开发操作系统的经验,从而把其对理论的深入理解和具体实践融入书中,使《现代操作系统(原书第3版)》成为操作系统领域的经典之作。
在《现代操作系统(原书第3版)》第3版中,作者深入讨论了许多主题,包括:进程、线程、存储管理、文件系统、I/O、死锁、接口设计、多媒体、性能权衡,以及有关操作系统设计的最新趋势。书中不仅涵盖了现代操作系统的原理和实践,而且特别关注了Linux操作系统、Windows Vista操作系统、嵌入式操作系统、实时操作系统以及多媒体操作系统。
内容简介
计算机书籍
本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux、Windows Vista和Symbian操作系统的详细介绍。书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理机上的虚拟机以及操作系统设计等方面的内容。此外,还在第2版的基础上对部分习题进行了增删,更有助于读者学习和对知识的理解及掌握。.
本书适合作为高等院校计算机专业操作系统课程教材,也是设计、开发操作系统的重要参考书。
Tanenbaum教授作为三个操作系统的设计师或联合设计师,具有长期设计开发操作系统的经验,从而把其对理论的深入理解和具体实践融入书中,使本书成为操作系统领域的经典之作。
在本书第3版中,作者深入讨论了许多主题,包括:进程、线程、存储管理、文件系统、I/O、死锁、接口设计、多媒体、性能权衡,以及有关操作系统设计的最新趋势。书中不仅涵盖了现代操作系统的原理和实践,而且特别关注了Linux操作系统、Windows Vista操作系统、嵌入式操作系统、实时操作系统以及多媒体操作系统。
本书特色
涉及Windows Vista以及最新的Linux/UNIX操作系统。..
用一整章(第12章)的篇幅对用于移动设备的Symbian操作系统进行分析。
涵盖更多、更新的安全方面的内容。
重新组织内容,尽早论述关键抽象概念。
给出与未来操作系统发展有关的新研究成果。
作译者
Andrew
S.Tanenbaum拥有美国麻省理工学院的理学学士学位和加州大学伯克利分校的哲学博士学位,目前是荷兰阿姆斯特丹Vrije大学的计算机科学系教授多年来,他在编译技术、操作系统、网络及局域分布式系统方面进行了大量的研究工作。目前。他专注于系统和安全方面的高级研究他已
目录
译者序
前言
第1章 引论1
1.1 什么是操作系统2
1.1.1 作为扩展机器的操作系统2
1.1.2 作为资源管理者的操作系统3
1.2 操作系统的历史4
1.2.1 第一代(1945~1955):真空管和穿孔卡片4
1.2.2 第二代(1955~1965):晶体管和批处理系统4
1.2.3 第三代(1965~1980):集成电路芯片和多道程序设计6
1.2.4 第四代(1980年至今):个人计算机8
1.3 计算机硬件介绍10
1.3.1 处理器11
1.3.2 存储器12
1.3.3 磁盘14
1.3.4 磁带15
1.3.5 I/O设备15
1.3.6 总线17
1.3.7 启动计算机18
译者序
第3版的一个很大变化是,大大加强了对操作系统中许多抽象概念的叙述,包括CPU到进程的抽象、物理内存到地址空间(虚拟内存)的抽象以及磁盘到文件的抽象等。Tanenbaum教授在《现代操作系统》前两版中,在这一方面确实着墨不多。译者在翻译该书前两版的内容时,就对此有些疑问,似乎Tanenbaum教授的讲授方法与众不同。这是因为,在国内许多院校的操作系统教学过程中,授课教师非常重视对这些抽象概念的讲解和分析。而且据译者所知,在美国不少大学的操作系统教学过程中,也很重视对这些抽象概念的引入。译者认为,Tanenbaum教授在第3版中对有关操作系统基本抽象概念叙述方式的重大修改,是对《现代操作系统》内在质量的提升,将使第3版受到更多中国教师和读者的欢迎。
第3版的另外一个重大变化是,第10章、第11章和第12章是由另外三位作者贡献的,他们分别是美国佐治亚理工学院的Ada Gavrilovska博士、Microsoft公司的Dave Probert博士以及Hope学院的Mike Jipping教授。
第10章的贡献者Ada Gavrilovska博士在美国佐治亚理工学院的计算学院从事教学和科研工作,她具有多年讲授高级操作系统等有关课程的经验,是一位造诣很高的研究科学家。
第11章的贡献者—Microsoft公司的Dave Probert博士是译者的老朋友了。我们在编写机械工业出版社出版的《Windows操作系统原理》以及《Windows内核实验教程》等书籍的过程中,有过密切的合作。Dave Probert博士是Microsoft公司Windows操作系统内核的主要设计人员之一,他对操作系统的把握以及以设计师身份对Windows操作系统内核深入和广泛的认识,几乎无人可以比拟。Dave Probert博士写作了第11章,并指出哪些地方Microsoft做对了,哪些地方Microsoft做错了。正如Tanenbaum教授在前言中指出的:“由于Dave的工作,本书的质量有了很大提高”。..
Mike Jipping教授是Hope学院计算机系的主任,具有长期的教学与科研经验。他早在2002年就出版了专著《Symbian OS Communications Programming》,对用于智能手机的Symbian 操作系统有着深刻的理解,由他来写作有关Symbian OS的第12章,当然是再合适不过了。
本书还增加了许多新的习题,有助于读者深入理解操作系统的精髓。
本书的出版得到了机械工业出版社华章分社的大力支持,在此表示由衷感谢。
参加本书翻译、审阅和校对的还有桂尼克、古亮、孔俊俊、孙剑、畅明、白光冬、刘晗、冯涛、张旦峰、陈子文、王刚、张琳、赵敬峰、张顺廷、张毅然、荀娜、张晓薇、周晓云、李昌术等。此外,赵霞博士对一些名词术语的翻译提出了宝贵意见。在此对他(她)们的贡献表示诚挚的感谢。
由于译者水平有限,本书的译文必定会存在一些不足或错误之处,欢迎各位专家和广大读者批评指正。...
译者
2009年5月
前言
第1章在很多地方都进行了大量的修改和更新。例如,为那些只熟悉Java语言的读者安排了对C程序设计语言和C运行时模式的介绍。
在第2章里,更新和扩充了有关线程的讨论,以反映它们的重要性。另外,还安排了一节关于IEEE标准Pthread的讨论。
第3章讨论存储管理,已经重新进行了组织,用以强调操作系统的这一项关键功能,即为每个进程提供虚拟地址空间的抽象。有关批处理系统存储管理的陈旧材料已经删去,对有关分页实现的部分进行了更新,以便能够满足对已经很常见的大地址空间和速度方面管理的需要。
对第4章到第7章进行了更新,删去了陈旧材料,添加了一些新的材料。这些章中有关当前研究的小节是全部重新写作的。此外,还增加了许多新的习题和程序练习。
更新了包括多核系统的第8章,增加了关于虚拟技术、虚拟机管理程序和虚拟机一节,并以VMware为例。
对第9章进行了很大的修改和重新组织,纳入关于利用代码错误、恶意软件和对抗它们的大量新材料。
第10章介绍Linux,这是原先第10章(UNIX和Linux)的修改版。显然,本章重点是Linux,增加了大量的新材料。
涉及Windows Vista的第11章对原有的内容(关于Windows 2000)做了很大的修改,有关Windows的内容用最新的材料进行了更新。
第12章是全新的。作者认为,尽管嵌入式操作系统远比用于PC和笔记本电脑中的操作系统要多,但是,对于用于手机和PDA中的嵌入式操作系统,在很多教科书中还是被忽略了。本版弥补了这个缺憾,对普遍用于智能手机的Symbian OS进行了广泛的讨论。
第13章是关于操作系统设计的,第2版的内容多数都保留了。
本书为教师提供了大量的教学辅助材料,可以在如下网站得到:www.prenhall.com/tanenbaum。网站中包括PPT、学习操作系统的软件工具、学生实验、模拟程序,以及许多关于操作系统课程的材料。采用本书的教师有必要访问该网站。
这一版得到了许多人的帮助。首先最重要的是编辑Tracy Dunkelberger。Tracy对本书不仅尽责而且超出了其本职范围,如安排大量的评阅,协助处理所有的补充材料,处理合约,与出版社接洽,协调大量的并发事务,设法使工作按时完成等。她还使我遵守一个严格的时间表,以保证本书按时出版。谢谢Tracy。..
佐治亚理工学院的Ada Gavrilovska是Linux内核技术专家,他更新了第10章,从UNIX(重点在FreeBSD) 转向了Linux,当然该章的许多内容对所有的UNIX系统也适用。在学生中Linux比FreeBSD更普及,所以这是一个有意义的转变。
Microsoft公司的Dave Probert更新了第11章,从Windows 2000转向了Windows Vista,尽管两者存在着相似之处,但它们之间还是有很大差别的。Dave对Windows技术有深刻的认识,并足以指出哪些地方Microsoft做对了,哪些地方Microsoft做错了。由于Dave的工作,本书的质量有了很大提高。
Hope学院的Mike Jipping写作了有关Symbian OS 这一章。如果缺乏关于嵌入式实时系统的内容,则会使本书存在重大缺憾,感谢Mike使本书免除了这个问题。在现实世界中,嵌入式实时系统变得越来越重要,本章对这方面的内容提供了出色的论述。
与Ada、Dave和Mike都各自专注一章不同,科罗拉多大学Boulder分校的Shivakant Mishra更像是一个分布式系统,他阅读和评述了许多章节,并为本书提供了大量的新习题和编程问题。
还值得提出的是Hugh Lauer。在我们询问他有关修改第2版的建议时,不曾想得到一份23页的报告。本书的许多修改,包括对进程、地址空间和文件等抽象的着重强调,都是源于他的意见。
对那些以各种方式(从新论题建议到封面,细心阅读文稿,提供补充材料,贡献新习题等)给予支持的其他人士,作者也不胜感激。这些人士是Steve Armstrong、Jeffrey Chastine、John Connelly、Mischa Geldermans、Paul Gray、James Griffioen、Jorrit Herder、Michael Howard、Suraj Kothari、Roger Kraft、Trudy Levine、John Masiyowski、Shivakant Mishra、Rudy Pait、Xiao Qin、Mark Russinovich、Krishna Sivalingam、Leendert van Doorn和Ken Wong。
Prentice Hall的员工总是友好和乐于助人的,特别是负责生产的Irwin Zucker和Scott Disanno,以及负责编辑的David Alick、ReeAnne Davies和Melinda Haggerty。
媒体评论
从本章开始我们将深入考察操作系统是如何设计和构造的。操作系统中最核心的概念是进程:这是对正在运行程序的一个抽象。操作系统的其他所有内容都是围绕着进程的概念展开的,所以,让操作系统的设计者(及学生)尽早并透彻地理解进程是非常重要的。
进程是操作系统提供的最古老的也是最重要的抽象概念之一。即使可以利用的CPU只有一个,但它们也支持(伪)并发操作的能力。它们将一个单独的CPU变换成多个虚拟的CPU。没有进程的抽象,现代计算将不复存在。在本章里我们会通过大量的细节去探究进程,以及它们的第一个亲戚——线程。
2.1 进程
所有现代的计算机经常会在同一时间做许多件事。习惯于在个人计算机上工作的人们也许不会十分注意这个事实,因此列举一些例子可以更清楚地说明这一问题。先考虑一个网络服务器。从各处进入一些网页请求。当一个请求进入时,服务器检查是否其需要的网页在缓存中。如果是,则把网页发送回去;如果不是,则启动一个磁盘请求以获取网页。然而,从CPU的角度来看,磁盘请求需要漫长的时间。当等待磁盘请求完成时,其他更多的请求将会进入。如果有多个磁盘存在,会在满足第一个请求之前就接二连三地对其他的磁盘发出一些或所有的请求。很明显,需要一些方法去模拟并控制这种并发。进程(特别是线程)在这里就可以产生作用。
现在考虑只有一个用户的PC。一般用户不知道,当启动系统时,会秘密启动许多进程。例如,启动一个进程用来等待进入的电子邮件;或者启动另一个防病毒进程周期性地检查是否有新的有效的病毒定义。另外,某个用户进程也许会在所有用户上网的时候打印文件以及烧录CD-ROM。所有的这些活动需要管理,于是一个支持多进程的多道程序系统在这里就显得很有用了。
在任何多道程序设计系统中,CPU由一个进程快速切换至另一个进程,使每个进程各运行几十或几百个毫秒。严格地说,在某一个瞬间,CPU只能运行一个进程。但在1秒钟期间,它可能运行多个进程,这样就产生并行的错觉。有时人们所说的伪并行就是指这种情形,以此来区分多处理器系统(该系统有两个或多个CPU共享同一个物理内存)的真正硬件并行。人们很难对多个并行活动进行跟踪。因此,经过多年的努力,操作系统的设计者发展了用于描述并行的一种概念模型(顺序进程),使得并行更容易处理。有关该模型、它的使用以及它的影响正是本章的主题。 ······
书摘
第2章 进程与线程
从本章开始我们将深入考察操作系统是如何设计和构造的。操作系统中最核心的概念是进程:这是对正在运行程序的一个抽象。操作系统的其他所有内容都是围绕着进程的概念展开的,所以,让操作系统的设计者(及学生)尽早并透彻地理解进程是非常重要的。
进程是操作系统提供的最古老的也是最重要的抽象概念之一。即使可以利用的CPU只有一个,但它们也支持(伪)并发操作的能力。它们将一个单独的CPU变换成多个虚拟的CPU。没有进程的抽象,现代计算将不复存在。在本章里我们会通过大量的细节去探究进程,以及它们的第一个亲戚——线程。
2.1 进程
所有现代的计算机经常会在同一时间做许多件事。习惯于在个人计算机上工作的人们也许不会十分注意这个事实,因此列举一些例子可以更清楚地说明这一问题。先考虑一个网络服务器。从各处进入一些网页请求。当一个请求进入时,服务器检查是否其需要的网页在缓存中。如果是,则把网页发送回去;如果不是,则启动一个磁盘请求以获取网页。然而,从CPU的角度来看,磁盘请求需要漫长的时间。当等待磁盘请求完成时,其他更多的请求将会进入。如果有多个磁盘存在,会在满足第一个请求之前就接二连三地对其他的磁盘发出一些或所有的请求。很明显,需要一些方法去模拟并控制这种并发。进程(特别是线程)在这里就可以产生作用。
现在考虑只有一个用户的PC。一般用户不知道,当启动系统时,会秘密启动许多进程。例如,启动一个进程用来等待进入的电子邮件;或者启动另一个防病毒进程周期性地检查是否有新的有效的病毒定义。另外,某个用户进程也许会在所有用户上网的时候打印文件以及烧录CD-ROM。所有的这些活动需要管理,于是一个支持多进程的多道程序系统在这里就显得很有用了。
在任何多道程序设计系统中,CPU由一个进程快速切换至另一个进程,使每个进程各运行几十或几百个毫秒。严格地说,在某一个瞬间,CPU只能运行一个进程。但在1秒钟期间,它可能运行多个进程,这样就产生并行的错觉。有时人们所说的伪并行就是指这种情形,以此来区分多处理器系统(该系统有两个或多个CPU共享同一个物理内存)的真正硬件并行。人们很难对多个并行活动进行跟踪。因此,经过多年的努力,操作系统的设计者发展了用于描述并行的一种概念模型(顺序进程),使得并行更容易处理。有关该模型、它的使用以及它的影响正是本章的主题。