
操作系统之哲学原理——推荐《计算机的心智_操作系统之哲学原理》.pdf
8页第 7 期 计算机教育 2010 年 4 月 10 日 Computer Education No.7 Apr.10,2010 151操作系统之哲学原理 ——推荐《计算机的心智:操作系统之哲学原理》 周 苏/文 “这是一个瞬息万变的时代分布式计算的脚步渐行渐远,网格计算的热潮逐步退却,云计算和云存储正慢慢揭开面纱……在所有的变化中,不变的是这些计算的支柱:操作系统!能否深刻理解它也许会决定云时代的‘浮沉’ ” 由上海交通大学邹恒明著的《计算机的心智:操作系统之哲 学原理》 (以下简称《操作系统之哲学原理》 )别开生面,以生活哲学的视角对操作系统原理进行阐述,通过逻辑推理来演绎操作系统核心技术的奥秘,其讨论范围包括操作系统的所有基础内容:背景与历史、进程与线程、通信与同步、调度与死锁、分页与分段、磁盘与文件、输入与输出等此外,作者还以新颖的组织方式讲解了锁的实现、同步机制的发展逻辑、从分段到段页式的演变、多核环境下的同步与调度、操作系统设计的原则等内容。
1 操作系统是计算机的心智 《操作系统之哲学原理》 ,作者在“第一章 操作系统导论”的一开始就指出: “一个人觉得操作系统没用,那是因为他不知道 怎么用,或者他没有用操作系统的意愿说明白一点,你如果认为操作系统没用,那是因为你的编程开发处在一个低级的水平上如果你掌握了操作系统,你的编程水平将显著提高 ” 作者指出:要想学好操作系统,具有恰当的思维模式是十分必要的这个思维模式就是本书所强调的“哲学” 计算机程序的运行至少需要如下 4 个因素: z 程序设计语言; z 编译系统; z 操作系统; z 指令集结构 (计算机硬件系统 ) 其中,操作系统在程序的执行过程中具有关键的作用由于计算机的功能和复杂性不断发生变化 (趋向更加复杂 ), 操作系统所掌控的事情越来越多,越来越复 作者简介: 周苏,浙江大学城市学院计算机与计算科学学院教授,主要研究领域为计算机应用、软件工程、高教管理等 计算机教育 Computer Education 152 2010杂同时,操作系统本身能够使用的资源也不断增多操作系统是一个软件系统,它使计算机变得好用 (将人类从繁琐、复杂的对机器掌控的任务中解脱 ),使计算机运作变得有序 (操作系统掌控计算机上所有事情 )。
因此,操作系统的功能一般包括: z 替用户及其应用管理计算机上的软、硬件资源; z 保证计算机资源的公平竞争和使用; z 防止对计算机资源的非法侵占和使用; z 保证操作系统自身正常运转 作者进一步指出:将操作系统功能进行提升,就可以得出操作系统所扮演的两个根本角色——管理者和魔术师 本书集中精力对操作系统的核心内容进行分析,用大量的生活实例,生动地解释了操作系统中的主要难点和模糊点,包括锁的实现、同步机制的发展轴线、纯粹分段到段页式的演变、多核环境下的进程同步与调度和操作系统设计等内容,而放弃了操作系统核心以外的内容,如安全、多媒体系统、虚拟机技术、光盘技术等的论述全书重点突出、逻辑清晰、内容连贯,便于学生顺利掌握操作系统的核心内容,是了解计算机操作系统原理不可多得的教学参考书 本书对操作系统原理的讨论充满趣味性:每一章都力求细致地阐明一个主题,将通俗的哲学原理和逻辑推理贯穿于每一个主题,构成全书的有机整体,并适当地引入计算机组成和编译器知识,揭示操作系统在程序运行中发挥的作用,把读者对操作系统的理解带到一个崭新的境界 2 操作系统的哲学原理 在详细论述了操作系统的基本概念和各种机制之后,作者认为:首先,操作系统作为计算机的管理者,需要对计算机的各个组成部分进行管理,这就导致了CPU 管理、内存管理、磁盘管理、输入输出管理等操作系统功能的出现和相互关联;其次,操作系统作为魔术师,需要对计算机的各种硬件进行抽象和装扮,以使其显得更大、更快、更好和更容易使用。
这些抽象就形成了进程、线程、虚拟内存、文件系统、各种 I/O 模式等操作系统构造的出现,而这些构造之间也因操作系统魔术师的角色而互相联结起来作者认为,除了管理和魔幻这两条共同的纽带外,操作系统各个部分还有一个联结纽带,即其设计上所遵循的哲学原理作者认为:最为重要的核心是不同的生活哲学将导致不同的操作系统设计与构造 在本书的第七篇 (第 22 章 ),作者概括性地介绍了操作系统设计的 10 条哲学原理,它们是: 第 1 条哲学原理:层次架构操作系统的功能分为多个模块,并按层次分解下面一层向上面一层提供功能,而上面一层只能对直接下属进行控制采用层次结构不仅使得操作系统的构造过程容易,也因为符合人类的习惯而更加易于理解,从而使操作系统结构清晰,节省开发操作系统的成本 第 2 条哲学原理:没有对错作者认为:操作系统本身并无对错之分,只有好坏之分就像我们不能说 Windows 是对的, Unix是错的我们只能说, Windows更容易使用,而 Unix 不太好使用而已因此,在设计操作系统时,只要达到功能、效率、公平、正确的平衡即可例如,操作系统进程调度策略有很多,而每种调度策略有其适用的场景。
我们不能说“时间片轮转是对的,而优先级调度是错误的” 第 3 条哲学原理:懒人哲学以 Unix 操作系统里面 fork 系统调用的实现为例,作者介绍了在操作系统设计中懒人哲学的应用: fork 系统调用中有时需要进行父子进程地址空间的复制,但在设计中“不到万不得已不复制” 这在计算机术语中称为懒惰或延迟的复制懒人哲学的合理性在于提前将事情做掉也许是一种浪费 第 4 条哲学原理:让困于人以文件系统为例,作者指出:对于操作系统来说,它需要保证自己的正确性,而文件夹对于操作系统文件系统的正常运转至关重要,因此,文件夹必须保持不能出现问题,操作系统会使用各种原语操作保证文件系统的一致性而用户文件的一致与否并不影响操作系统本身的运行虽然用户文件的毁坏有可能激怒用户,但这不是操作系统有义务管的事情这种哲学就是“让困于人” 读 书 专 栏 153第 7 期 第 5 条哲学原理:留有余地例如,文件系统目录夹的记录里面通常都有一部分所谓的保留空间,如 DOS 目录夹记录里面就有10 个字节的保留空间, 而事实上,这 10 个保留字在 Windows 98 的文件系统里面就得到了利用。
如果没有这些保留字,将不得不设计全新的系统而导致无法兼容 第 6 条哲学原理:子虚乌有操作系统的目的是服务上层的应用程序和用户,用户要什么就提供什么而提供的这种东西虽然在用户看来实实在在,但实际上都是子虚乌有例如,在操作系统里面,用户看到的内存非常大 (其实是与磁盘一样大 ), 速度无限快 (其实是与缓存一样快 )但实际上,我们的物理内存可能只不过 4G,速度也只有缓存的十分之一 第 7 条哲学原理:时空转换以页表的实现为例由于页表的尺寸通常太大,占用内存过多,便将页表分级,只保留一部分页表在内存,而其他部分放置于磁盘上这样,页表所占空间大为减少,但付出的代价就是时间成本 第 8 条哲学原理:策机分离立法就是策略,执法就是实现机制立法和执法的分离就是所谓的“策机分离”哲学作者认为,操作系统里面的策机分离主要是为了实现的灵活性比如“调度算法参数化” ,算法在内核里,参数可以由用户指定又例如,在程序设计领域,对界面的设计和对界面的实现是分开的;在计算机安全领域,对安全标准的设计 和安全设计的实现是分开的 第 9 条哲学原理:简单为美作者指出,在数学领域有个不成文的共识: “如果一个问题有多个数字表示,那么最简单的表示通常是正确的。
”在操作系统设计中,文件存储的方式有网状组织、树状组织、记录流、数据块流和字节流等各种选择,而现代操作系统选择的都是最简单的字节流 第 10 条哲学原理: 适可而止作者认为,第 10 条哲学原理是用来修正前面 9 条原理的即在前面 9 条原理的贯彻过程中,要保持一个度,适可而止例如, “简单为美”但不能过于简单正如爱因斯坦所言: “一切都应该尽可能简单,但没有更简单” 3 网络书评 《操作系统之哲学原理》一书出版时间不长,但网络上好评如潮 有人说: “读了本书,感觉比起一般讲解操作系统的书来说,更加清晰透彻,生动有趣书中的一些原理讲解让人茅塞顿开,认真看完本书后,操作系统也就掌握得差不多了! ” 有人说: “读这本书,用‘爱不释手’也许有些夸张,但不管是熟悉操作系统还是一点不懂,从中得到的启迪,不仅仅是操作系统的原理,还有深藏在背后的哲理至真 ” 有读者指出:本书是“打着哲学旗号的新颖的 OS 教材” 1 评论说: “神学,哲学,科学,作者似乎想把三者结合为一体,但从每章开头好像和本章内容无甚联系的小故事来看,恐怕还没有做到这一点,每章的技术性讲解还是没有脱离‘科学’而上升到‘哲学’ , 所以想要从所谓 ‘哲学’的高度 (就像作者在序中说的那样 )来理解操作系统的朋友们可能要失望了。
但是抛开‘哲学’这个词,单纯从技术上来讲,我很欣赏作者的讲述方式一改往日教材‘知其然不知其所以然’ ,甚至连‘知其然’都不太能做到的国内出版教科书的风格,作者用类似 OS 开发人员视角的方式, 从问题—解决方案—优缺点—改进方案—优缺点—再改进方案这样带领我们一路走来,让我们更加深刻地认识到 OS 的一些本质和原理,以及许多流行的设计为什么是这样 ” 一位操作系统老师点评说:“自己多年讲授操作系统,虽然感觉每一次的讲授都会有不同的视角, 自认为对 Linux 内核源代码的阅读有助于原理的讲述,但为什么总有那么一些概念,比如同步、死锁、虚拟内存等像从天空飘然而下,那么硬生生地扔给学生,学生在茫然中不得已地伸手接住,消化与否,无暇顾及,因为还有不少重头炮弹等着学生接呢听了作者对‘锁’ 这样一种看似易于理解的概念一步步的演绎过程,似乎明白了操作系统教材 (或其他工科书 )枯燥之源 计算机世界中的大部分概念本来自于生活,但现有的教材割舍了其源 1 月影星之介. [2009-11-02]. 计算机教育 Computer Education 154 2010本,把抽象出来的概念悬挂在空中,让大家望其项背而无法落地,于是,计算机科学的趣味性和逻辑性也零落在书本的边边角角了。
” 中国互动出版网的书评1说:“读了《计算机的心智——操作系统之哲学原理》 ,这本书确实使得我对之前理解得较为生硬的部分操作系统原理豁然开朗了,这种大白话的风格虽有失教材的严谨,但作为灵活生动的学习参考资料的确是不可多得的然而,贯穿此书的一个细节问题也在阅读过程中逐渐呈现,作者多次引用《圣经》故事,经常使用基督教中的概念做比喻尽管书中也有一些儒、释、道的理念,但从不少行文表达中都可以看出其暗含的对基督教、神创论的认可……不过作为一个不信神的读者,我虽然也读过《圣经》的主要篇章,但对作者给出的部分引言或比喻还是难以理解的,例如为什么巴别塔与进程调度问题 相关?我也曾试图挑刺似的来找这本书中各处看似不恰当的比喻,包括宗教的和非宗教的但读着读着,慢慢感觉到自己也没必要和那些文字作对原因正如宋朝的佛印禅师所说: ‘心中有佛,所见万物皆是佛’ 作者写出这些比喻,是因为作为一个基督徒,在其信仰的指导下使用其独到的神学观点来思考人造事物,就其个人而言是相当自然的而我要是有准备挑刺的潜意识,那无论从中看到什么略显玄乎的文字,都会不自觉地将其认定为有失恰当的主观内容 ” 但也有不同意见的有评论说: “我觉得作为一本入门级的书内容还是不错的,有其新颖独到的地方,而且介绍。
