第六章 阅读材料和参考文献
前五章中我们已经对操作系统的许多内容作了介绍。本章的目的在于为那些希望对操作系统作进一步研究的读者能提供一些帮助。6.1节罗列了向读者推荐的阅读材料,6.2节按照字母顺序列出了本书中所引用的所有书籍和论文。
除了下面列出的参考文献之外,ACM每年举办的操作系统原理专题研讨会论文集
《Proceedings of the n-th ACM Symposium on Operating Systems Principles》,以及IEEE每年举办的分布式计算系统国际会议论文集《Proceedings of the n-th International Conference on Distributed Computing System》都是查阅有关操作系统最新论文的好途径。同样,USENIX操作系统设计和实现专题研讨会也是一个好的信息源。更进一步,《ACM Transactions on Computer Systems》和《Operating Systems Review》这两本学报也常常登载相关的文章。
6.1 推荐的进一步阅读材料 6.1.1 介绍和概论
Brooks, The Mythical Man-Month: Essays on Software Engineering
一本机智、幽默和信息量很大的著作,关于如何避免象某些人那样以一种很困难的方式来编写操作系统,其中有很多好的建议。
Comer, Operation System Design. The Xinu Approach
一本关于Xinu 操作系统的书。Xinu操作系统运行在LSI-11计算机上,它包含有源代码的详细说明,其中包括使用C语言的完整程序。 Corbato, \
Corbato被誉为分时系统之父,在他接受图灵奖的颁奖演说中,他谈到许多Brooks在其著作《The Mythical Man-Month》中所述及的问题。Corbato的结论是复杂系统将最终失败,而且若想要成功,最重要的就是必须摈弃复杂性,尽力争取设计的简洁和优雅。 Deitel, Operating Systems, 2nd Ed.
一本操作系统的综述性教材。本书在标准内容之外,添加了一些实例,如UNIX、MS-DOS、MVS、OS/2以及Mac OS。
Finkel, An Operating Systems Vade Mecum
关于操作系统的另一本综述性教材。它面向实际应用,写得很好,并且述及到很多本书中讲述的问题。如果想找一本书从不同角度描述同一问题,则它是非常合适的。 IEEE, Information Technology - Portable Operating System Interface (POSIX), Part 1: System Application Program Interface (API) [C Language]
这是一个标准。其中的有些部分非常易读,尤其是附件B:\合理性和标注\,它对为什么采取这样的方法来解决问题作了许多说明。引用标准的好处之一是,从定义来讲,它是绝对没有错误的。即使是排版过程中导致的一个宏定义名字错,也不能算作错误,因为它是官方认可的标准。
Lampson, \
Buttler Lampson是世界上新型操作系统设计的领导人物之一。他汇集了多年实际经验中的种种启示、建议和指南,并将其集中在这篇睿智和信息量很大的文章中。与Brooks的书一样,这是每一个优秀的系统设计人员的必读材料。 Lewine, POSIX Programmer's Guide
这本书用一种比POSIX标准文档更具可读性的方式描述了POSIX标准,同时还包括一些讨论,如怎样将老的程序转换到POSIX,以及如何在POSIX环境下开发新程序。书中有很多代码实例,包括一些完整的程序。本书还描述了所有POSIX需要的库函数和头文件。
Silberschatz and Galvin, Operating System Concepts, 4th Ed.
这是关于操作系统的另一本教材。它涵盖了进程、存储器管理、文件和分布式系统。其中包含两个实例:UNIX和Mach。封面上画满了恐龙,不知道在九十年代这与操作系统有什么关系。
Stallings, Operating Systems, 2nd Ed.
关于操作系统的又一本教材。它包含了通常操作系统所有的论题,也包括一小部分分布式系统的内容,附录介绍了一些排队理论。
Stevens, Advanced Programming in the UNIX Environment
本书教读者如何使用UNIX系统调用接口和标准C库来编写C程序。所给的例子基于系统V版本4和4.4BSD UNIX。书中详细讨论了这些UNIX实现与POSIX之间的关系。 Switzer, Operating Systems, A Practical Approach.
该书与本书很类似。书中使用伪码对理论概念给出了解释,还包含有关TUNIX的大段C源代码,TUNIX是一个模型化的操作系统。与MINIX不同,TUNIX并不在真实机器上运行,而是在一台虚拟机上运行。在设备驱动程序方面TUNIX没有MINIX那样面向实际,但在其他方面它确实比MINIX走得更远,比如虚拟存储器。 6.1.2 进程
Andrews and Schneider, \
本文探讨了进程和进程间通信,包括忙等待、信号量、管程、消息传递以及其他技术。同时也说明了这些概念如何嵌入在不同的程序设计语言中。
Ben-Ari, Principles of Concurrent Programming 这本小册子专门讨论进程间通信问题,其中有不同的章节讨论互斥性、信号量、管程以及哲学家就餐问题,等等。
Dubois et al. \Coherence, and Event Ordering in Multiprocessors\ 这是关于在共享存储器的多处理机系统中的同步问题的指导性材料,但其中的某些思想对单处理机系统和分布存储器系统同样有效。
Silberschatz and Galvi, Operating System Concepts, 4th Ed.
本书的第4到第6章讨论了进程和进程间通信,包括调度、临界区、信号量、管程以及经典进程间通信问题。 6.1.3 输入/输出
Chen et al., \
在高端系统中,使用多个磁盘驱动器并行操作以获得高速输入/输出是一个发展潮流。作者就此进行了讨论并从性能、价格和可靠性等方面研究了不同的组织结构。 Coffman et al., \
本文简短地介绍了死锁,死锁的产生以及如何预防和检测死锁。 Finkel, An Operating Systems Vade Mecum. 2nd Ed.
本书第5章讨论了输入/输出硬件和设备驱动程序,重点针对终端和磁盘。 Geist and Daniel, \
本文给出了一个通用的磁盘臂调度算法,并给出了详细的模拟和实验结果。 Holt, \
本文主要围绕死锁进行讨论。Holt引入了一个可被用于分析某些死锁情况的有向图模型。
IEEE Computer Magazine, March 1994
该期杂志包含8篇关于先进输入/输出系统的文章,其中涉及到仿真、高性能存储器、高速缓存、并行计算机的输入/输出以及多媒体。
Isloor and Marsland, \
这是关于死锁的指导性材料,其中重点讲了数据库系统,并描述了多种模型和算法。
Stevens, \
本文详细研究了在Berkeley UNIX中的磁盘性能。正如多数计算机系统一样,实际情况远比理论预测复杂。
Wilkes et al., \
RAID(廉价冗余磁盘阵列)是高性能磁盘系统的一项重要进展,在RAID中,由若干小磁盘构成的阵列一起工作,以构造一个高性能系统。本文中作者详细描述了他们在HP实验室里开发的系统。 6.1.4 存储器管理
Denning, \
本文是一篇关于虚拟存储器的经典文章,其中论及了许多虚拟存储器的许多方面。Denning是该领域的先躯之一,也正是他创立了工作集概念。 Denning, \
本书很好地综述了众多的存储器管理机制和调页算法,书后附有完整的参考文献。 Knuth, The Art of Computer Programming Vol. 1
在本书中,集中讨论和比较了最先适应算法、最佳适应算法和其他算法。 Silberschatz and Galvin, Operating System Concepts, 4th Ed.
本书第8和第9章讨论存储器管理问题,包括对换、调页和分段,其中提到很多页面算法。
6.1.5 文件系统
Denning, \
当一个年轻的\黑客\发现并发表了有关电话网系统的工作原理之后,他被指控为计算机诈骗。本文就讲述了这样一件事情,这中间牵涉到很多基本的问题,包括言论的自由。本文发表后引起了一些非议和反驳。 Hafner and Markoff, Cyberpunk
本书以一名纽约时报计算机记者的口吻讲述了三个杜撰的故事和他自己的记者生涯。,在故事中,年轻的计算机\黑客\闯入了全世界范围的计算机。而这名记者本身曾攻破了Internet蠕虫病毒。 Harbron, File Systems
本书描述文件系统的设计、应用和性能,其中对结构和算法均作了介绍。 McKusick et al., \
UNIX的文件系统在4.2BSD环境下被重新加以实现。本文描述了新文件系统的设计,其中重点放在性能特性上。
Silberschatz and Galvin Operating System Concepts, 4th Ed.
本书第10和11章的内容是文件系统。其中包括文件操作、文件访问方式、一致性语义、目录和保护等,此外还有其他主题的实现。 Stallings, Operating Systems, 2nd Ed.
本书第14章包含很多有关系统环境安全的内容,特别是关于计算机\黑客\、病毒和其他威胁。
6.2 按字母排序的参考文献
ANDERSON, T.E., BERSHAD, B.N., LAZOWSKA, E.D., and LEVY, H.M.:
\Parallelis, \ANDRES, G.R., and SCHNEIDER, F.B.:
\pp.3-43, March 1983.
BACH, M.J.: The Design of the UNIX Operating Systems, Englewood Cliffs, NJ: Prentice Hall, 1987. BALA, K., KAASHOEK, M.F., WEIHL, W.:
\Prefetching and Caching for Translation Lookaside Buffers,\Proc. First Symp. on Operating System Design and Implementation, USENIX. pp. 243-254, 1994. BAYS, C.:
\pp. 191-192, March 1977. BEN-ARI, M:
Principles of Concurrent Programming, Englewood Cliffs, NJ: Prentice Hall International, 1982. BRINCH HANSEN, P.:
\Programming Language Concurrent Pascal,\IEEE Trans. on Software Engineering, vol. SE-1, pp. 199-207, June 1975. BROOKS, F.P., jR.:
The Mythical Man-Month: Essays on Software Engineering, Anniversary edition, Reading, MA: Addison-Wesley, 1996. CADOW, H.:
OS/360 Job Control Language, Englewood Cliffs, NJ: Prentice Hall, 1970. CHEN, P.M., LEE, E.K., GIBSON, G.A., KATZ, R.H., and PATTERSON, D.A.: \High Performance Reliable Storage,\Computing Surveys, vol. 26, pp. 145-185, June 1994.
CHERITON, D.R.: \Experiment Using Registers for Fast Message-Based Interprocess Communication,\Operating Systems Review, vol. 18, pp.12-20, Oct. 1984. COFFMAN, E.G., F\\ELPHICK, M.J., and SHOSHANI, A.:
\COMER, D.:
Operating System Design, The Xinu Approach, Englewood Cliffs, N.J.: Prentice Hall, 1984.
CORBATO, F.J.:
\Building Systems That Will Fail,\Commun. of the ACM, vol. 34, pp. 72-81, June 1991.
CORBATO, F.J., MERWIN-DAGGETT, M., and DALEY, R.C: \Experimental Time-Sharing System,\Proc. AFIPS Fall Joint Computer Conf., AFIPS, pp. 335-344, 1962.
CORBATO, F.J., SALTZER, J.H., and CLINGER, C.T.:
\pp.571-583, 1972.
CORBATO, F.J., and VYSSOTSKY, V.A.:
\and Overview of the MULTICS System,\Proc. AFIPS Fall Joint Computer Conf., AFIPS, pp. 185-196, 1965.
COURTOIS, P.J., HEYMANS, F., and PARNAS, D.L.: \Control with Readers and Writers,\Commun. of the ACM, vol. 10. 667-668, Oct. 1971.
相关推荐: