LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4947|回复: 20

[操作系统]操作系统为什么运行缓慢

[复制链接]
发表于 2006-2-10 09:19:01 | 显示全部楼层 |阅读模式
昨天有时间翻了翻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内存的机器上产生任何的速度提升。所以,试图通过升级软件而硬件不升级来提升软件速度,这种想法往往是可笑的。
发表于 2006-2-11 18:47:06 | 显示全部楼层
说得有道理。
GNU/Linux 的自由又一次在这个问题上得以体现。GNU/Linux 的发行版都尽量针对傻瓜用户,但你可以自己变得聪明,通过增减系统服务,编译&定制内核,可以让系统性能得到极大的提升。
回复 支持 反对

使用道具 举报

发表于 2006-2-12 11:06:26 | 显示全部楼层
文章的观点是对的,不过搂主对于fc4/5速度的结论有点仓促阿,因为fc5用gcc4.1。在gentoo上,gcc4.1相对于4.0速度的提升是很明显的。所以虽然我没用过fc5,但我猜测也许会快点。
回复 支持 反对

使用道具 举报

发表于 2006-2-12 12:26:16 | 显示全部楼层
個人認為對大多數軟件來說,不斷增加新功能正是一種對最終用戶負責的體現。
兩年前可以滿足用戶需求和兩年後還是可以滿足用戶需求完全不是一個概念,尤其是現在這個發展這麼快的世界。想想看如果操作系統都按照兩年前的標準支持64位技術(如果兩年前已經支持了的話),我們現在是不是會很痛苦。
至於功能的增加是不是會拖慢速度,通常來說這個要看軟件是怎麼寫的了。不過一般的情況,總體速度會慢一些(肯定會多一些判斷之類),但是如果只是針對原有的某個功能,如果那個功能本身比較獨立,應該沒有影響(如果不是由於算法改進而更快了的話)。例如對於某個在第二個版本增加了複數功能的計算軟件來說,如果你只是用到實數運算,很難想象新增加的部分會讓實數運算更慢(當然這個軟件肯定會有更多的菜單,這樣的話UI方面多少會慢一些)——正常的作者不會為了增加複數功能就默認所有實數也會自動變成複數再運算吧。

當然確實是有某些(尤其是國內)軟件廠商單純的為了昇級而昇級,弄一堆沒有用的功能出來騙用戶去昇級,對於這種廠商,我們唯一需要做的,就是徹底鄙視之。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 12:27:15 | 显示全部楼层
Post by graydream
文章的观点是对的,不过搂主对于fc4/5速度的结论有点仓促阿,因为fc5用gcc4.1。在gentoo上,gcc4.1相对于4.0速度的提升是很明显的。所以虽然我没用过fc5,但我猜测也许会快点。

FC4和FC5的速度比较,我只是通过经验和推断得到。而且我没用过FC5。如果有不实的地方和不足之处还请大家指正,我会立即修改。
回复 支持 反对

使用道具 举报

发表于 2006-2-13 18:58:16 | 显示全部楼层
我想搂主的观点并不是讨论用哪个编译器编译的二进制代码运行快。就算是用汇编写的程序,随着软件的升级提升运行速度,这种情况不多见。多见的是,软件的升级通常伴随着硬件的升级。
回复 支持 反对

使用道具 举报

发表于 2006-2-14 09:38:16 | 显示全部楼层
升级的目的本身就不是为了提高速度
要知道,如果出第一个版本的时候速度就有问题,光是qa就过不了,根本没法拿出去卖
必须要确保大多数用户跑起来不会慢才会上市的
既然本来大多数用户都能用,那么单纯为了提高速度升级显然没有必要
回复 支持 反对

使用道具 举报

发表于 2006-2-14 11:46:00 | 显示全部楼层
“但是他们拒绝这一选择,主要是因为他们假设用户太过愚笨而不能正确地做这件事情(尽管他们使用了更加友好的措辞)。”

这是一个事实,并不是所有用户都能够正确的掌握对于开发人员或技术人员看来相当简单的操作流程。有时甚至按某个按钮一次也让他们感觉过于复杂。

回头看看,为什么微软的操作系统能够成功,很大一个程度上也因为win隐藏了很多的技术细节(使得“愚笨”的用户感觉使用起来轻松容易)。但是对技术细节的隐藏,给开发和技术人员带来的不便,大家应该都有体会了。

因为工作和爱好种种原因,我的父母不得不学习使用计算机。但是就是win对于他们来说也太复杂了。他们理想的电脑就是按一个按钮那么简单(似乎不可能)。但是google和baidu是我见过的他们学习使用最快的工具。界面友好性是一个重要的东西。

对于技术人员来说,牺牲一部分易用性而带来性能的提升是值得的。但是对于普通用户来说,或许牺牲性能,而带来易用性会更实惠。

U盘插上就能用,而不需要点什么设备扫描器这或许才是最终用户期望的。
-------------------------------
似乎有点跑题,呵呵~~
回复 支持 反对

使用道具 举报

发表于 2006-3-9 18:11:33 | 显示全部楼层
楼上的观点确实有点道理。 这也是很多人装上linux两天就删了或装上就不去管他了的原因吧

呵呵
回复 支持 反对

使用道具 举报

发表于 2006-3-16 07:41:33 | 显示全部楼层
其实你们都没有说到重点中的重点:
操作系统缓慢最主要的原因就是芯片运行太缓慢
如果用快1000000倍的芯片,保证两者启动都不到1秒,无法察觉时间差别
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表