首先,问题不成立

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_MACHINESYSTEMCurrentControlSetservices

看到下面的子键了吗?每项都是一个开机项(加载一个 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 系统比较熟悉的,还是有能力清理的。我过去也不知道这里有这么多的东西,直到有一天我自己开始写驱动,然后把驱动加载到这里。