首先,問題不成立。
windows用久了也可能不變慢,linux用久了也可能會變慢。
其次,掃了一眼前面的回答,基本上沒有回答清楚Windows為什么會變慢的原因,我猜測說Linux不慢的人是因?yàn)橛肔inux多,或者沒有去研究Windows為什么會變慢(或者不屑于研究?)。
先反駁幾個(gè)觀點(diǎn):
Windows有磁盤碎片,Linux就沒有嗎?有人說Linux用direct和indirect塊索引數(shù)據(jù),碎片對ext影響不大。各位拜托,NTFS天生也是支持索引的,NTFS碎片影響也不大的。
有人說Windows垃圾文件變多,NTFS也用B+樹,請問文件多的話,能慢多少?是用戶能感覺的到的嗎?
注冊表IO也是IO,Linux讀配置文件也是IO,二者有本質(zhì)區(qū)別嗎?注冊表IO需要排隊(duì)?磁盤IO就不需要排隊(duì)了嗎?性能差別多大?能產(chǎn)生用戶體驗(yàn)上的差別嗎?
沒事就把原因歸結(jié)到文件系統(tǒng)碎片,一個(gè)完全碎片化的文件系統(tǒng),能產(chǎn)生用戶體驗(yàn)上的巨大的速度差異嗎?不服氣的拿出數(shù)據(jù)來。也太小看文件系統(tǒng)cache的作用了。
-----------------------------------------------下面解釋為什么有時(shí)候Windows會變慢------------------------------------
打開注冊表編輯器,訪問以下鍵值:HKEY_LOCAL_macHINESYSTEMCurrentControlSetservices
看到下面的子鍵了嗎?每項(xiàng)都是一個(gè)開機(jī)項(xiàng)(加載一個(gè)sys文件),這才是真正占用開機(jī)時(shí)間和運(yùn)行時(shí)CPU時(shí)間的東西,而且由于軟件設(shè)計(jì)的不規(guī)范,多數(shù)軟件卸載的時(shí)候都不刪這里的東西的。把這個(gè)歸結(jié)于微軟設(shè)計(jì)不對是不恰當(dāng)?shù)模④浽试S軟件刪除這里的內(nèi)容,但很多軟件不去做。
這里跟啟動項(xiàng)不同,并且修改具有很大的風(fēng)險(xiǎn),所以普通用戶會覺得:我啟動項(xiàng)里沒有東西,為什么還這么慢,因?yàn)橛泻芏嘁韵到y(tǒng)服務(wù)啟動的東西是不占進(jìn)程ID、不占啟動項(xiàng)的,手頭有裝360的,開機(jī)時(shí)間里,“系統(tǒng)關(guān)鍵服務(wù)”這個(gè)大頭,就是這堆東西,截圖給大家看看(我特意裝的360!):
一個(gè)新裝的Windows,如果不裝任何軟件,services里是不會新增任何東西的,那么速度也不會有明顯的變慢(我老家有臺電腦,裝的WIN2K,常年不聯(lián)網(wǎng),好幾年了開機(jī)速度都沒有變化)。
而我現(xiàn)在的電腦,services下面有超過100項(xiàng)內(nèi)容(剛特意數(shù)了一下,大概500多),這么多東西全加載,不慢就奇怪了。(這里補(bǔ)充一下,這么多并非都開機(jī)加載,有些是延遲加載的,即使這樣,開機(jī)加載的東西的大頭主要都在這里)
--------------------為什么多數(shù)Linux不會變慢--------------------
因?yàn)?strong>二者的內(nèi)核有本質(zhì)差別,Windows使用近似微內(nèi)核的結(jié)構(gòu),外圍驅(qū)動有相當(dāng)一部分是通過注冊services項(xiàng)目的方式加載的,所以,新增硬件,新裝軟件如果有sys文件需要加載,就要增加services項(xiàng),導(dǎo)致開機(jī)時(shí)Windows內(nèi)核代碼加載時(shí)間會慢慢變長。
Linux是宏內(nèi)核結(jié)構(gòu),大部分驅(qū)動都包含在內(nèi)核里,我相信Linux用戶沒事不會自己重編內(nèi)核玩,那么Linux內(nèi)核加載時(shí)間是固定的。那么Linux開機(jī)時(shí)間就不會有特別明顯的變化。要是Linux用戶隔三差五的往內(nèi)核里添點(diǎn)東西,Linux不會變慢?那就出鬼了。
所以別去比較二者為什么變慢了,內(nèi)核設(shè)計(jì)都不一樣,如果Linux允許rpm包大量的把代碼放到內(nèi)核態(tài)并且開機(jī)加載,Linux一樣也會慢的要死。
------------------------------------------
最后,給個(gè)數(shù)據(jù),虛擬機(jī)里(配置相同),一個(gè)新裝的debian 6,開機(jī)時(shí)間一共是40秒(從boot菜單到桌面加載完,除去了輸入密碼的時(shí)間,秒表計(jì)時(shí)),一個(gè)新裝的WINXP,開機(jī)時(shí)間是35秒(無密碼)
------------------------------------------
有人說,我就裝個(gè)游戲,電腦怎么變慢了?你們知道嗎,裝個(gè)游戲沒準(zhǔn)就順便給你裝個(gè).net frameworks x.x,順便裝directX,順手給你的服務(wù)項(xiàng)里塞一堆的sys文件,游戲玩多了不變慢就見鬼了。這年頭,裝個(gè)QQ都有可能會給你安裝sys文件(QQ2005-2007年期間的版本),電腦變慢這種事情,太正常不過了。
------------------------------------------
還看到有人說Windows內(nèi)存管理機(jī)制的問題,那么應(yīng)用態(tài)(進(jìn)程)任務(wù)退出以后,整個(gè)虛擬地址都不存在了,內(nèi)存難道還收不回去?除非是內(nèi)核態(tài)的內(nèi)存。但是,如果只用官方的驅(qū)動,會有內(nèi)存泄露的問題?第三方驅(qū)動做的不好,怪到微軟頭上。Linux內(nèi)核代碼申請了內(nèi)存用完了不釋放直接退出,效果也是一樣的。
“學(xué)習(xí)Linux系統(tǒng)開發(fā)的朋友可以關(guān)注私信1一起交流”
------------------------------------------
有很多人對services里的東西很關(guān)心,我來解釋一下,首先這里不是所有的東西都開機(jī)啟動的,里面有屬性設(shè)置是否開機(jī)啟動,其中包括的內(nèi)容有:各種NT式驅(qū)動(大部分非即插即用式設(shè)備驅(qū)動),文件系統(tǒng)驅(qū)動(FAT驅(qū)動的名字是fastfat),各種應(yīng)用態(tài)的服務(wù)(比如DHCP),各種軟件自己注冊的驅(qū)動(比如騰訊的安全控件驅(qū)動QQCertificateService),各種系統(tǒng)庫(比如.net frameworks一類的),等等。
清理這里的任何東西都是有很大風(fēng)險(xiǎn)的,但對Windows系統(tǒng)比較熟悉的,還是有能力清理的。我過去也不知道這里有這么多的東西,直到有一天我自己開始寫驅(qū)動,然后把驅(qū)動加載到這里。