關(guān)于WinNT和Linux的比較,這個(gè)話(huà)題說(shuō)起來(lái)就沒(méi)個(gè)完,隨便講講吧。
第一、微內核。很多人并沒(méi)有理解,微內核實(shí)際上是一種以性能下降為代價(jià),而提高軟件架構合理性的設計方案。更加完美的微內核架構Mach,在他誕生之后多年,其性能都飽受詬病,直到更強大的PowerPC G5處理器出現之后,才在新一代的Mac OS 10上得以商用。那么,如果說(shuō)采用了微內核架構WinNT,其性能達到甚至超過(guò)沒(méi)有采用微內核架構的Linux,那么誰(shuí)的代碼更優(yōu)化不就一目了然了嗎?
在有可能安裝大量第三方驅動(dòng)程序的條件下,微內核架構崩潰的概率要遠小于非微內核架構,這只是微內核的優(yōu)點(diǎn)之一。
第二、GDI。WinNT的GDI處理更多的是放在內核中的,XWindow則不然,因此XWindow從理論上講就不可能比WinNT的窗口系統效率高。這樣的設計如果用于服務(wù)器的OS顯然不可取,但在本貼的范圍內,討論的都是個(gè)人電腦的OS,顯然WinNT要比Linux更適合圖形界面的桌面應用(Linux或許更適合于服務(wù)器,因為它簡(jiǎn)單,簡(jiǎn)單意味著(zhù)高效)
第三、線(xiàn)程管理。Linux內核直到2.4版,線(xiàn)程的實(shí)現仍是相當低效率的,連Linux開(kāi)發(fā)者自己也不滿(mǎn)意,所以才有了2.6內核的NPTL,可是2.6內核投入商用才幾年?從這一點(diǎn)來(lái)講,恰恰就是“落后了一代”。
同樣,直到2.4內核,Linux的內核任務(wù)(核內線(xiàn)程)仍然是不可搶占的。實(shí)際上在2.4內核上運行多優(yōu)先級的高并發(fā)的多線(xiàn)程程序仍然是一個(gè)笑話(huà)。
我個(gè)人認為WinNT的線(xiàn)程同步接口比pthread要更加合理和豐富,使程序開(kāi)發(fā)更加方便。WaitForMultipleObjects是WinNT線(xiàn)程同步上的一大特色,著(zhù)名的ACE專(zhuān)門(mén)為其WinNT實(shí)現版本包裝了這個(gè)方法。
第四、I/O。WinNT多年以前就實(shí)現了與POSIX 1003.1c中 aio_xxxx 語(yǔ)義相類(lèi)似的OVERLAPPED異步I/O機制,這種模式可以顯著(zhù)提高I/O的吞吐率,Linux呢?
實(shí)際上在線(xiàn)程管理和I/O模式這些對系統性能至關(guān)重要的方面,無(wú)論WinNT、IBM AIX、SUN Solaris,其先進(jìn)性都超過(guò)Linux一代。和這些成熟的商用系統比起來(lái),Linux更像是個(gè)血氣方剛的小伙子,年輕不成熟,但得到全球開(kāi)源界的支持,因而強壯并且后勁十足。
第五、網(wǎng)絡(luò )處理。對于大規模并發(fā)的網(wǎng)絡(luò )操作(想一想BT下載),select和poll實(shí)現了第一代Reactor模型,而WinNT的完成端口模型和Linux 2.6內核的EPOLL則可以稱(chēng)之為第二代Reactor,其共同特點(diǎn)是使用不止一條API調用,引入了一個(gè)真正的內核對象來(lái)存儲Reactor的狀態(tài)信息,從而避免了第一代Reactor巨大的查詢(xún)開(kāi)銷(xiāo)。而完成端口模型的誕生時(shí)間,比EPOLL要早5年以上(雖然EPOLL后來(lái)居上,比完成端口更合理一些)。
文件系統我不熟悉,就不說(shuō)了。但以上的對比足夠說(shuō)明WinNT在內核的技術(shù)體系上比Linux先進(jìn)一代了吧。
實(shí)際上,在OS的核心技術(shù)上,Linux一直扮演的都是一個(gè)跟隨者的角色,難道一幫程序愛(ài)好者的松散結盟,真的能比軟件巨頭們真金白銀的投入更管用么?當然,現在Linux得到了很多軟件巨頭的支持,所以將來(lái)他或許會(huì )有后來(lái)居上的機會(huì )。2.6內核的許多新特性已經(jīng)體現出了這種可能。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。