2006-02-10

操作系统为什么运行缓慢

Views: 11189 | 3 Comments

昨天有时间翻了翻 Andrew S. Tanenbaum 的《现代操作系统》一书,先看最后一章“操作系统的设计”。发现有一节“12.4.1 操作系统为什么运行缓慢”很好,小节标题是“操作系统为什么运行缓慢”,但是我认为他讲的是所有的计算机软件为什么运行缓慢。我摘抄上来与大家分享,顺带我的一点看法,同大家一起讨论。

在讨论优化技术之前,值得指出的是许多操作系统运行缓慢在很大程度上是自己造成的。例如,古老的操作系统MS-DOS和UNIX版本7在几秒钟内就可以启动。现代UNIX系统和Windows 2000尽管运行在快100倍的硬件上,可能要花费几分钟才能启动。原因是它们要做更多的事情,有用的或无用的。看一个相关的案例。即插即用使得安装一个新的硬件设备相当容易,但是付出的代价是在每次启动时,操作系统都必须要检查所有的硬件以了解是否存在新的设备。这一总线扫描是要花时间的。

一种替代的(并且作者看来是更好的)方法是完全抛弃即插即用,并且在屏幕上包含一个图标标明“安装新硬件”。当安装一个新的硬件设备时,用户可以点击图标开始总线扫描,而不是在每次启动的时候做这件事情。当然,当今的系统设计人员是完全知道这一选择的。但是他们拒绝这一选择,主要是因为他们假设用户太过愚笨而不能正确地做这件事情(尽管他们使用了更加友好的措辞)。这只是一个例子,但是还存在更多的事例,期望让系统“用户友好”(或者“防傻瓜”,取决于你的看法)却使系统始终对所有用户是缓慢的。

或许系统设计人员为改进性能可以做的最大一件事情,是对于添加新的功能特性更加具有选择性。要问题的问题不是“用户会喜欢吗?”而是“这一功能特性按照代码大小,速度,复杂性和可靠性值得不计代价码?” 只有当优点明显地超过缺点的时候,它才应该被包括。程序员倾向于假设代码大小和程序瑕疵计数为0并且速度为无穷大。经验表明这种观点有些过于乐观。

另一个重要的是产品的市场销售。到某件产品的第4或第5版上市的时候,真正有用的所有功能特性或许已经全部包括了,并且需要该产品的大多数人已经拥有它了。为了保持销售,许多生产商仍然继续生产新的版本,具有更多的功能特性,正是这样才可以向现有的顾客出售升级版。只是为了添加新的功能特性而添加新的功能特性可能有助于销售,但是很少会有助于性能。

作者的这种说法我是很认同的,所以当有位兄弟发贴问“FC5是不是运行快了很多了”的时候,我立即回贴表示这几乎不可能。

经验告诉我们,升级软件往往伴随着升级硬件,否则新的软件无法使用或者速度无法接受。这是因为,软件的升级,速度并不是主要考虑的问题,新的功能和新的操作方式才是软件升级的原因。软件制作都当然不需要添加新的功能特性,只需要研究原来软件的算法,并试图改进来提高速度。一般情况下是可以提升速度的,但大多数情况是不明显的。硬件可以只通过改进物理特性而不增加或者删除某项功能来提升速度,而软件只能通过改进算法来提升速度,功能的删除是很少见的。

但是,我们忽略了重要的一点。并不是因为更新和更好的算法是难以发明的,而是因为采用新的算法必须带来新的软件Bug。原来的软件肯定有Bug,这是必然的。但是,它的功能的性能想必已经满足了用户的需要。而且,一百个专家1个星期的测试结果并不比一万个用户一年的使用情况来得可靠。没有人愿意在软件中增加未知的Bug,或许是致命的,只有迫不得已的情况下才这么做。

事实还告诉我们,我们可以通过将P3+128M内存的机器升级为P4+1024M内存从而使用我们的FC4操作系统产生速度上的明显提升。但是,我们不可能过将RH9操作系统升级为FC4而期望在我们的P3+128M内存的机器上产生任何的速度提升。所以,试图通过升级软件而硬件不升级来提升软件速度,这种想法往往是可笑的。

Related posts:

  1. 我为什么要放弃订阅转而做牛人博客聚合
  2. 小数据与大数据
  3. 将LevelDB数据导入SSDB
  4. 谈大学毕业找工作,兼谈读书无用论
  5. TCP协议思想和技术的广泛应用
Posted by ideawu at 2006-02-10 08:53:57

3 Responses to "操作系统为什么运行缓慢"

Leave a Comment