描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787121261930丛书名: 国外计算机科学教材系列
1.1 什么是操作系统
1.2 操作系统的发展历史
1.3 操作系统概念
1.4 系统调用
1.5 操作系统结构
1.6 剩余各章内容简介
1.7 小结
习题
第2章 进程
2.1 进程介绍
2.2 进程间通信
2.3 经典IPC问题
2.4 进程调度
2.5 MINIX3进程概述
2.6 MINIX3中进程的实现
2.7 MINIX3的系统任务
2.8 MINIX3的时钟任务
2.9 小结
习题
第3章 输入/输出系统
3.1 I/O硬件原理
3.2 I/O软件原理
3.3 死锁
3.4 MINIX3中的I/O概述
3.5 MINIX3中的块设备
3.6 RAM盘
3.7 磁盘
3.8 终端
3.9 小结
习题
第4章 存储管理
4.1 基本的存储管理
4.2 交换技术
4.3 虚拟存储管理
4.4 页面置换算法
4.5 页式存储管理中的设计问题
4.6 段式存储管理
4.7 MINIX3进程管理器概述
4.8 MINIX3进程管理器的实现
4.9 小结
习题
第5章 文件系统
5.1 文件
5.2 目录
5.3 文件系统的实现
5.4 文件系统的安全性
5.5 保护机制
5.6 MINIX3文件系统概述
5.7 MINIX3文件系统的实现
5.8 小结
习题
第6章 阅读材料和参考文献
6.1 推荐的进一步阅读材料
6.2 按字母顺序排列的参考文献
索引
Andrew S. Tanenbaum是著名的计算机科学家、教育家,荷兰皇家科学艺术院院士,也是IEEE会士和ACM会士,目前供职于荷兰阿姆斯特丹自由大学。他在操作系统、分布式系统和计算机网络等领域都有很深的造诣,曾多次获奖,包括1994年度ACM Karl V. Karlstrom杰出教育家奖、1997年度ACMCSE计算机科学教育杰出贡献奖、2002年度TAA优秀教材奖和2003年度TAA McGuffey奖。
20世纪80年代,出于教学工作的需要,Tanenbaum教授开发了一个小巧、完整、开放源代码、UNIX兼容的操作系统MINIX,使学生可以通过剖析这个“麻雀虽小,五脏俱全”的系统,来研究其内部的运作机理。为了便于学习,他还出版了相应的教材,即本书的版。经过20多年的发展,MINIX系统在许多方面得到了改进,如对现代主流硬件设备的支持、对POSIX标准的支持、微内核系统结构等;与之相对应,本书也不断推陈出新,在2006年出版了第三版。
本书的特点就是理论与实践的完美结合。在多年的教学实践中,我们深刻地体会到,对于操作系统这样一门实用性和实践性很强的课程,如果只是单纯地介绍它的基本原理和基本概念,很难有非常理想的教学效果。一个连进程的创建函数都没有用过的人,很难想象他能对进程与线程之间的区别有真正的了解。同样,一个没有分析过内存分配源代码的人,也很难对虚拟存储管理有太多深入的理解。而本书的出现则弥补了这个缺陷,在理论与实践之间,搭起了一座桥梁。本书涵盖了操作系统课程的所有内容,包括进程管理、存储管理、文件系统和设备管理等。对于每一个章节,在组织结构上采用了从浅到深、从抽象到具体、从宏观到细节的讲授方式。首先从总体上介绍操作系统的基本原理和基本概念,然后结合MINIX 3系统,深入探讨这些基本原理的具体实现过程,后再以源代码的形式给出了所有的实现细节。通过这种自顶向下、逐步求精的学习过程,使读者能够做到融会贯通。在面对抽象、枯燥的理论时,能够用技术实现来加以印证、加深理解;在面对复杂、繁琐的源代码时,能够用理论思想来进行指导。相信这样的一种学习模式,对于读者深入掌握操作系统的原理、设计与实现,是大有裨益的。
本书的另一个特点是实用性。如果说MINIX 1和MINIX 2还主要是用于教学目的,那么MINIX 3则完全不同。它的设计目标是一个实用的、具有高可靠性、灵活性和安全性的系统,能够运行在一些资源有限或者是嵌入式的硬件平台上。系统采用微内核结构,内核代码仅有4000行左右,而设备驱动程序等模块则作为普通的用户进程运行,这种结构大大提高了系统的可靠性,读者只要加以修改,就可以移植到自己的硬件平台上。
基于上述原因,我们认为翻译本书、把它介绍给国内的读者是一件非常有意义的事情,衷心希望我们付出的劳动能对国内的操作系统教学和实践有所帮助和促进。
本书的第2章、第3章由陈渝翻译并统稿,第1章、第4章、第5章、第6章由谌卫军翻译,向勇对全书进行了审校。在整个翻译过程中,清华大学计算机系和软件学院的师生给予了许多帮助,并且在计算机系和软件学院的本科生的操作系统课程中进行了试用,许多学生提出了很好的建议,在此向他们表示衷心的感谢。
译者
2006年11月于清华园
序言
大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折中。本书详细探讨了操作系统的基本原理,包括进程、进程间通信、信号量、管程、消息传递、调度算法、输入/输出、死锁、设备驱动程序、存储管理、调页算法、文件系统设计、安全和保护机制等;此外,还详细讨论了一个特殊的操作系统MINIX3(一个与UNIX兼容的操作系统),甚至提供了该系统的源代码,以便于读者仔细研究。这种安排不仅可让读者了解操作系统的基本原理,而且可让读者了解到这些基本原理是如何应用到真实的操作系统中去的。
自本书版于1987年推出以来,操作系统课程的教学方式已有了较小的革新。在此之前,大多数课程都只讲授理论知识。随着MINIX的出现,许多学校开始开设实验课程,以便学生仔细研究操作系统,了解其内部工作机理。对于这种教学方式,我们相当欣慰并希望能继续加强这种趋势。
MINIX在推出以来的10年里经历了许多变化。初的代码是为基于8088的有着256KB内存和两个磁盘驱动器的IBM PC(没有硬盘)开发的,它基于UNIXV7。随着时间的推移,MINIX在许多方面已得到了改进,例如它支持有着大内存和多个硬盘的32位保护模式的机器,而且它不再基于UNIXV7,而基于国际POSIX标准(1EEEl003.1和IS09945-1)。与此同时,UNIX中添加了许多新特性,在我们看来,这些新添加的特性可能很多,但在某些人看来这些新特性还不够,因而导致了Linux的出现。此外,MINIX还被移植到了许多其他的平台,包括Macintosh、Amiga、Atari和SPARC。本书的第二版于1997年出版并已在大学中广泛使用。.
MINIX仍在得到人们的欢迎,这可以通过Google上对MINIX的搜索次数看出。
本书的第三版已有了很大的变化。我们修订了关于原理的几乎所有内容,并添加了许多新内容,但主要变化是对新操作系统MINIX 3的讨论以及本书中包含的新代码。尽管仍松散地基于MINIX 2,但MINIX 3在几个主要的方面几乎完全不同。
设计MINIX 3的目的基于如下事实:操作系统正变得越来越大、越来越慢以及越来越不可靠。与其他电子设备如电视、手机以及DVD播放器相比,操作系统变得越来越容易崩溃,加之具有许多特性和选项,实际上几乎没有人能完全理解它们,或将它们管理得很好。当然,计算机病毒、蠕虫、间谍软件以及其他形式的恶意程序也已变得越来越猖獗,这对操作系统无疑会造成较大的影响。在很大程度上,这些问题均是由当前操作系统中的基本设计缺陷引起的:模块性的缺失。整个操作系统一般会由几百万行C/C++代码组成,这些代码被编译到了一个在内核态下运行的巨大可执行程序中。在几百万行代码中,即使只有一行代码存在缺陷,也会导致系统发生故障。使所有这些代码均正确是不可能的,尤其是当70%的代码是由设备驱动程序组成时,因为这些设备驱动程序是由第三方编写的,而这已超出了操作系统编写者的控制范围。
通过使用MINIX 3,我们证明了在设计操作系统时,并不是只有整体式设计这一种方法。
MINIX 3内核仅包含有约4000行可执行代码,而不是Windows、Linux、Mac OS X或FreeBSD的数百万行代码。系统中的其他内容,包括所有的设备驱动程序(除时钟驱动程序外),是一个模块化的用户模式进程的小集合,对于每个进程,我们只关注其作用以及与之通信的其他进程。
尽管MINIX 3仍在改进,但我们相信这个将操作系统构建为高度封装的用户模式进程的模型完全可以在将来用于构建更为可靠的系统。MINIX 3适用于小型PC(如那些可在第三世界国家找到的机器以及嵌入式系统,这些机器的资源均有限)。无论如何,这种设计可使得学生更易于了解操作系统的工作原理,而不必去试图研究巨大的整体式操作系统。..
本书附带的CD-ROM是一张可引导CD。读者可将该CD-ROM放到驱动器中,重新启动计算机,之后MINIX3会在几秒钟后显示登录提示符。读者可登录为root用户来启动系统,而不用将MINIX 3首先安装到硬盘中。当然,MINIX 3也可安装到硬盘上。详细的安装信息请参阅附录A。像上面建议的那样,MINIX3正在快速发展,新版本正在频繁地推出。要下载当前的CD-ROM映像文件来刻录光盘,请进入MIND的官方网站www.minix3.org。该网站还包含有大量的新软件、文献,以及关于MINIX 3开发的新闻。关于MINIX 3的讨论以及频繁问及的问题,读者可进入USENET新闻组comp.os.minix了解详情。没有新闻阅读器的人们可按网站http://groups.google.com/group/comp.os.minix上的说明操作。
MINIX3除了可安装到硬盘上来运行外,也可在几个PC模拟器上运行。网站的主页上列出了一些模拟器。
使用本书作为教材的教师,可通过Prentice Hall出版公司在当地的机构来获得习题解答(索取方式请参阅书后的“教学支持说明”)。此外,本书有其自己的配套网站,网址为www.prenhall.com/tanenbaum。
在本书的编写过程中,我们有幸得到了许多人的帮助。Ben Gras和Jorrit Herder在时间仓促的情况下,完成了新版本操作系统的大部分编程工作;此外,他们还阅读了本书的初稿并做了许多有用的注释。在此,我们要对他们深表谢意。
Kees Bot曾为MINIX 2做了许多工作,这为我们开发MINIX 3奠定了很好的基础。Kees为MINIX的初版本至版本2.0.4编写了大量的代码,修复了缺陷,并回答了许多问题。Philip Homburg也编写了大量的代码,并在其他方面也给予了我们大量的帮助,尤其是在初稿的审读方面。
当然,MINIX的推出还得到了其他许多人的帮助,在此我们一并表示致谢。
一些人阅读了部分初稿并提出了修订建议。在此要特别感谢Gojko Babic、Michael Crowley、Joseph M. Kizza、Sam Kohn、Alexander Manov和DuZhang。
后,我们要感谢我们的家庭。Suzanne已是第16次在我埋头写作时给予我支持,Barbara已是第15次,而Marvin已是14次。他们的支持和爱心对我非常重要(AST)。
Al'sBarbara已是第二次在我写作时给我支持。若没有她的支持、耐心
评论
还没有评论。