[技术讨论] 为何 Windows 系统用久会变慢,而 Linux 不会?

1#
发表于 2014-4-20 13:44:06 | 查看: 20253| 回复: 75
本帖最后由 风烛椎名 于 2014-4-20 13:51 编辑

进来在L大的影响下。。对于Linux真是越来越向往。。其实我也很想知道windows相对于linux真的有那么大的体验差距吗?不过下面的文章应该可解决大部分人为什么windows越用越慢的疑惑。。哦~对了~下面的文章我是从知乎上看来的~

首先,问题不成立

Windows用久了也可能不变慢,Linux用久了也可能会变慢。

其次,扫了一眼前面的回答,基本上没有回答清楚Windows为什么会变慢的原因,我猜测说Linux不慢的人是因为用Linux多,或者没有去研究Windows为什么会变慢(或者不屑于研究?)。

先反驳几个观点:

Windows有磁盘碎片,Linux就没有吗?有人说Linux用direct和indirect块索引数据,碎片对ext影响不大。各位拜托,NTFS天生也是支持索引的,NTFS碎片影响也不大的。

有人说Windows垃圾文件变多,NTFS也用B+树,请问文件多的话,能慢多少?是用户能感觉的到的吗?

注册表IO也是IO,Linux读配置文件也是IO,二者有本质区别吗?注册表IO需要排队?磁盘IO就不需要排队了吗?性能差别多大?能产生用户体验上的差别吗

没事就把原因归结到文件系统碎片,一个完全碎片化的文件系统,能产生用户体验上的巨大的速度差异吗?不服气的拿出数据来。也太小看文件系统cache的作用了。

--------------------下面解释为什么有时候Windows会变慢--------------------

打开注册表编辑器,访问以下键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services

看到下面的子键了吗?每项都是一个开机项(加载一个sys文件),这才是真正占用开机时间和运行时CPU时间的东西,而且由于软件设计的不规范,多数软件卸载的时候都不删这里的东西的。把这个归结于微软设计不对是不恰当的,微软允许软件删除这里的内容,但很多软件不去做。

这里跟启动项不同,并且修改具有很大的风险,所以普通用户会觉得:我启动项里没有东西,为什么还这么慢,因为有很多以系统服务启动的东西是不占进程ID、不占启动项的,手头有装360的,开机时间里,“系统关键服务”这个大头,就是这堆东西,截图给大家看看(我特意装的360!):



一个新装的Windows,如果不装任何软件,services里是不会新增任何东西的,那么速度也不会有明显的变慢(我老家有台电脑,装的WIN2K,常年不联网,好几年了开机速度都没有变化)。

而我现在的电脑,services下面有超过100项内容(刚特意数了一下,大概500多),这么多东西全加载,不慢就奇怪了。(这里补充一下,这么多并非都开机加载,有些是延迟加载的,即使这样,开机加载的东西的大头主要都在这里)

--------------------为什么多数Linux不会变慢--------------------

因为二者的内核有本质差别,Windows使用近似微内核的结构,外围驱动有相当一部分是通过注册services项目的方式加载的,所以,新增硬件,新装软件如果有sys文件需要加载,就要增加services项,导致开机时Windows内核代码加载时间会慢慢变长。

Linux是宏内核结构,大部分驱动都包含在内核里,我相信Linux用户没事不会自己重编内核玩,那么Linux内核加载时间是固定的。那么Linux开机时间就不会有特别明显的变化。要是Linux用户隔三差五的往内核里添点东西,Linux不会变慢?那就出鬼了。

所以别去比较二者为什么变慢了,内核设计都不一样,如果Linux允许rpm包大量的把代码放到内核态并且开机加载,Linux一样也会慢的要死。

------------------------------------------

最后,给个数据,虚拟机里(配置相同),一个新装的debian 6,开机时间一共是40秒(从boot菜单到桌面加载完,除去了输入密码的时间,秒表计时),一个新装的WINXP,开机时间是35秒(无密码)

------------------------------------------

有人说,我就装个游戏,电脑怎么变慢了?你们知道吗,装个游戏没准就顺便给你装个.net frameworks x.x,顺便装directX,顺手给你的服务项里塞一堆的sys文件,游戏玩多了不变慢就见鬼了。这年头,装个QQ都有可能会给你安装sys文件(QQ2005-2007年期间的版本),电脑变慢这种事情,太正常不过了。

------------------------------------------

还看到有人说Windows内存管理机制的问题,那么应用态(进程)任务退出以后,整个虚拟地址都不存在了,内存难道还收不回去?除非是内核态的内存。但是,如果只用官方的驱动,会有内存泄露的问题?第三方驱动做的不好,怪到微软头上。Linux内核代码申请了内存用完了不释放直接退出,效果也是一样的。

------------------------------------------

有很多人对services里的东西很关心,我来解释一下,首先这里不是所有的东西都开机启动的,里面有属性设置是否开机启动,其中包括的内容有:各种NT式驱动(大部分非即插即用式设备驱动),文件系统驱动(FAT驱动的名字是fastfat),各种应用态的服务(比如DHCP),各种软件自己注册的驱动(比如腾讯的安全控件驱动QQCertificateService),各种系统库(比如.net frameworks一类的),等等。

清理这里的任何东西都是有很大风险的,但对Windows系统比较熟悉的,还是有能力清理的。我过去也不知道这里有这么多的东西,直到有一天我自己开始写驱动,然后把驱动加载到这里。
5
回复

使用道具 举报

星宫凯特 薇妮艾拉 - 世界征服谋略之星响 - 舰队collection夕立 二改 - 舰队collection金刚 - 舰队collection
2#
发表于 2014-4-20 13:49:09
为什么图看不见
回复

使用道具 举报

3#
发表于 2014-4-20 13:51:23
小触 发表于 2014-4-20 13:49
为什么图看不见

应该修复了~
回复

使用道具 举报

4#
发表于 2014-4-20 13:54:26
什么时候给我分析一下OS????我现在用的OS X。。。感觉显卡快要被我玩坏了。。。
回复

使用道具 举报

星宫凯特 薇妮艾拉 - 世界征服谋略之星响 - 舰队collection夕立 二改 - 舰队collection金刚 - 舰队collection
5#
发表于 2014-4-20 13:56:36
幽夜未央 发表于 2014-4-20 13:54
什么时候给我分析一下OS????我现在用的OS X。。。感觉显卡快要被我玩坏了。。。
...

小幽竟然一直在线
回复

使用道具 举报

6#
发表于 2014-4-20 14:03:47
幽夜未央 发表于 2014-4-20 13:54
什么时候给我分析一下OS????我现在用的OS X。。。感觉显卡快要被我玩坏了。。。
...

文章不是我写的。。在这方面不是专业。。所以我也不知道。。不过下面几个连接应该可以帮到你把。。 http://www.zhihu.com/question/21218217
http://www.zhihu.com/question/21244055
http://www.zhihu.com/question/20208420
回复

使用道具 举报

7#
发表于 2014-4-20 14:04:38
小触 发表于 2014-4-20 13:56
小幽竟然一直在线

。。。。小幽这个称呼是怎么回事。。。。。话说,为毛不能在线。。。也没有一直在啊。。。
回复

使用道具 举报

8#
发表于 2014-4-20 14:05:26
风烛椎名 发表于 2014-4-20 14:03
文章不是我写的。。在这方面不是专业。。所以我也不知道。。不过下面几个连接应该可以帮到你把。 ...

觉得你厉害啊~就拜托你分享了~我就不去找了~lol~~~
回复

使用道具 举报

9#
发表于 2014-4-20 14:27:27 自豪地使用爪机中
幽夜未央 发表于 2014-4-20 14:05
觉得你厉害啊~就拜托你分享了~我就不去找了~lol~~~

。。在这方面真的只略懂皮毛。。万一说错了误解别人就不好了。。
回复

使用道具 举报

10#
发表于 2014-4-20 14:28:45
风烛椎名 发表于 2014-4-20 14:27
。。在这方面真的只略懂皮毛。。万一说错了误解别人就不好了。。

诶~~~您老了解的多,不知道也会查资料。。我到现在,查都不知道怎么查。。简直【哔哔哔哔!!】
回复

使用道具 举报

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

本版积分规则