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