欢迎光临我的博客
分类:
2010-07-11 13:43:04
操作系统作为计算机中核心的系统软件,直接决定了计算机系统的整体性能。学习操作系统的过程中,理解所有操作系统设计背后的原理是非常重要的,但如果能够把这些原理和真实的操作系统实现结合起来,则可以更加深刻地理解操作系统的本质所在。
美国贝尔实验室的丹尼斯·里奇(Dennis Mac Alistair Ritchie)和肯尼思·汤普森 (Kenneth lane Thompson)共同开发的C和UNIX是本领域最重要的成果之一,对整个计算机产业产生了深远的影响。因此,通过深入分析阅读UNIX这一经典系统的源代码实现来学习操作系统是非常有价值的途径。UNIX 第6版(UNIX V6)是现代各类UNIX操作系统的源头,它具备了现代操作系统的绝大部分特征:进程管理和调度、内存管理、文件系统和I/O设备管理等。在此之后,UNIX分为众多不同流派,但它们基本上都秉承了UNIX V6的设计思想。
作者郝庆丰曾在朗讯、摩托罗拉等公司从事多年的软件开发工作,参与过多个UNIX及Linux下大型软件项目的设计和开发,有着数十万行代码的开发经验。基于这些基础,他编写了这本讲解UNIX的书籍,针对PDP-11处理器,给出UNIX V6近万行源码的详细解析,其中也包含了很多作者自己的开发经验和理解。在写作过程中,作者翻阅了大量资料,做了很多实验。因此,书中深入浅出、详略得当的讲解使得某些原本艰涩难懂的代码变得生动活泼,甚至妙趣横生。对于重点章节或很艰深的部分,作者则不吝笔墨、列举多个例子阐明;在每章结束还有针对性地提出一些思考题,让读者进一步巩固本章内容。
全书共分15章。第1章主要讲述UNIX诞生的经过、流派和它的特点。第2章主要讲述UNIX框架及其运行的硬件平台。第3章讲述虚拟内存的主要功能及UNIX虚拟内存的实现原理。第4章主要讲述启动过程。第5章主要讲述进程管理和调度的实现。第6章是对中断处理过程的讲解,而第7章讲述和中断类似的自陷的处理过程。第8章讲解文件系统,其实是文件系统的内核实现,而用户实现部分在第12章讲述。第9章讲解UNIX是如何管理I/O(输入/输出)设备的。第10章在第4章的基础上更全面地阐述UNIX的交换过程,因为交换是进程管理中一个很重要的概念。第11章讲述UNIX可执行文件的格式。第12章讲述UNIX系统调用的实现过程,包括了文件系统、进程和信号等部分。第13章不仅讲解已有的各种进程间通信的方式(信号、文件、管道),而且还给出其他多种进程间通信方式(信号量、互斥体、消息等)的示例实现。第14章给出现代操作系统才有的线程的示例实现。最后第15章讲述UNIX的登录过程和20世纪80年代出现的网络文件系统NFS,进而体现其对网络多用户的支持。
本书适用于具有丰富开发经验特别是想了解操作系统实现或对其感兴趣的软件工程师。
对于初级软件工程师,只要能认真研习,它也将是你提高软件开发水平的一个很好的选择。
清华大学计算机系教授、博士生导师 郑纬民
2010年4月15日于北京清华园