返璞归真:UNIX技术内幕
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

自计算机诞生以来,产生了数以百计的操作系统,但这其中,无疑以UNIX最具有生命力,流派也最广。虽然在个人电脑上,Windows占据了绝大多数用户,但在服务器领域,UNIX依然是一枝独秀。Linux作为UNIX一个杰出的分支,已异军突起,不仅在服务器行业占有重要地位,而且在个人电脑上也越来越多地看到它的身影。

为什么UNIX具有如此强大的生命力?原因就在于它精妙的设计思想、小巧高效而又健壮的内核、丰富的功能、易扩展的架构和良好的开放性。UNIX所定义的很多接口(比如文件访问)已经成为行业标准,而它的分支也十分众多,如Unixware、AIX、Solaris、BSD UNIX等。

UNIX最早是由贝尔实验室(Bell Labs)的Kenneth Thompson (肯尼思·汤普森)和Dennis·Ritchie(丹尼斯·里奇)开发的,在此过程中,他们还发明了C语言。在1972年他们推出了UNIX版本6(UNIX 6 Edition),这也是本书所要讲述的版本。

本书内容

本书节选了UNIX版本6的全部内核代码及少量用户部分代码,总计在10000行左右。之所以选择它是因为这是贝尔实验室所开放的最后一版UNIX,而且相对于前几版,它更贴近于现代操作系统,几乎具备了现代操作系统的所有概念:如中断和自陷管理、进程调度、内存管理、文件系统、I/O设备管理等。而且,很多现在的常用命令当时也已实现,比如mkdir、ls、cd、exec、find、grep、cron等。另外,本版90%代码都使用C语言编写,代码量也不大,这就使得阅读更加方便,适合讲解。

作者在讲述代码时,不仅尽量忠于和体现原来的设计思想,而且对于某些可能不太完美的实现部分还相应指出并给出改进的意见。此外,对于UNIX版本6不具备的某些功能,比如进程间互斥、消息通信和线程功能,作者还在第13章、第14章给出了简单的示例实现。另外,作者在列举源代码时,都在之前指明其所在文件,个别地方未指明的,在最近一次所指明的文件中。

本书读者

本书适用于有志于操作系统研究或对操作系统实现感兴趣的软件工程师,也可作为本专科院校计算机及相关专业学生学习操作系统和C语言的参考书。而对于其他软件人员,本书也将是你提高编程水平的一个很好的选择,书中揭示了很多优秀的设计思想、数据结构和算法,相信它们能给你以不少启示,在此过程中你还能看到C语言所展示出的精练高效的强大魅力!书中的很多代码后来也成为C程序标本式的实现和风格。

本书光盘

本书附有光盘,光盘不仅包含书中所列代码(包括作者自己实现的部分),还包含其他很多代码,比如init进程、shell进程等的实现。此外,还包括shell所支持的各个命令的实现代码,甚至还包含了当时所用的编译器。

读者可以直接阅读本书,也可以打开光盘中的代码,对照本书阅读。另外,在阅读时,有些章节如果联系起来看效果会更好,比如第4章和第5章、第6章和第9章。

版权声明

第13章和第14章中作者所实现部分的代码,由于环境限制,并未经过实际测试,对它们所造成任何可能的损坏性后果,作者在此声明并不对此负责,敬请谅解。另外,该部分代码只限于个人学习研究使用,作者保留对该部分代码的一切发布、发行、使用、修改及拷贝的权利,如有任何个人或组织要将其用于商业目的,请和作者联系并支付相应费用。

致谢

感谢网络搜索引擎,感谢很多网站,特别是http://www.computer.museum.uq.edu.au/documents.html,它提供了PDP 11系列芯片的丰富文档,以及http://minnie.tuhs.org/UnixTree/V6/,它提供了UNIX V6完整的源代码。

联系方式

由于作者水平所限,书中难免存在不当甚至错误之处,敬请批评指正。同时,非常欢迎读者提问、评论、批评和建议,可以通过qf.hao@hotmail.com和我联系。


IBM高级软件开发工程师 郝庆丰

2009年8月于北京