操作系统分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

随着计算机系统的广泛应用和普及,作为计算机系统软件基础的计算机操作系统,受到了软件行业技术人员的广泛重视。随着开放源代码方式的兴起,在操作系统方面除了Linux系统之外,2005年Sun公司的Solaris 10系统也全部开放了源代码。微软公司也在2006年开放了Windows操作系统的部分源代码,该系统命名为WRK(Windows Research Kernel)。因此我们也有机会看到商业操作系统的代码,并可以将它们与Linux系统进行比较。

作者曾在1999年负责一个将Linux移植新硬件平台的项目,开始对Linux操作系统内核有了比较深入的了解。2001年应微软亚洲研究院的邀请,参加了Windows 2000及以后的Windows Server 2003的代码分析工作。2006年微软开放了WRK系统,作者分析了内存管理和线程切换部分,并设计了工作集和Continuation实验。2006年应Sun中国工程院邀请,参加了Solaris文件系统的分析工作。在这些工作的基础上,作者一直想把这些操作系统放到一起进行比较,定量地分析它们之间性能的差异,从而可以更深入地理解操作系统的设计。2007年,作者在北京航空航天大学为研究生开设了“操作系统结构分析”课程,这几年一直在进行这几个系统的比较工作。但是这项工作的难度超过作者的想象,因此本书成书比较仓促,很多运行结果作者也无法说明其中的原因,只好选择了在一个单CPU机器上的运行结果进行分析。如果读者对此感兴趣,可以来信共同探讨。

全书共分为5章。

第1章概述,简单介绍了Linux、WRK和Solaris的系统结构和特点。

第2章过程控制,介绍了三个操作系统中进程与线程的数据结构、创建过程、调度与切换过程及同步机制。

第3 章分析了三个操作系统的内存地址布局、地址变换、页错误处理、用户与内核内存管理、物理内存管理等方面。

第4 章描述了三个操作系统的文件系统模型、文件系统与文件的相关数据结构、文件系统相关系统调用等。

第5章介绍了一些常用的评测基准,对三个操作系统的系统调用、进程创建、内存访问、页错误处理、文件创建及读/写等进行了测试,并根据三个操作系统的结构特征对测试结果进行了分析。

除了源代码外,本书的编写过程中参考了大量前人的工作,作者感谢北京大学陈向群老师、清华大学向勇老师、马洪兵老师和陈渝老师、浙江大学郑扣根老师、北京邮电大学孟祥武老师、首都师范大学孙卫真老师和刘羽老师及“Solaris源代码分析”小组和“WRK实验设计”小组的所有老师。感谢“Windows Internals”和“Solaris Internals”两本书的作者,他们使我更快地了解这两个操作系统的设计。感谢我的学生王政、陈佳捷、陈归、谭成鑫、陈元、王佳男、蔚鹏志和潘颖曦为本书付出的努力。

本书是北京航空航天大学操作系统精品课程的建设成果,它的出版也得到了电子工业出版社的大力支持和北京市高等教育精品教材立项项目的资助。

最后感谢我的妻子和刚刚学会说话的儿子,他们能够容忍我总是工作到深夜。

限于时间和作者的水平,书中肯定会有一些错误,真诚期待广大读者朋友能提出宝贵的意见和建议。

编著者

于北京航空航天大学计算机学院