從程序員的角度看Linux和Windows的對比
本人在Unix SYS5,DOS,Windows3.x,windows9.x/NT 和Linux幾個不同時期流行的OS上寫過程序.在Linux和windows的對比中,我主要是從一個程序員的角度來看的。
一 系統(tǒng)架構(gòu)的對比
1 內(nèi)核
(1) 內(nèi)核的彈性
Linux的內(nèi)核表現(xiàn)出了高度的可配置性和獨立性,主要是完成:IO驅(qū)動設(shè)
備管理,TCP/IP,以及任務(wù)調(diào)度.Linux的標準內(nèi)核發(fā)布版本有40~50MB,而我
現(xiàn)在在一些評估板上試驗的嵌入式Linux系統(tǒng)(使用arm或M68K系列的CPU)
只用到了2MB,同樣實現(xiàn)了網(wǎng)絡(luò)功能和完整的任務(wù)調(diào)度,這使得Linux可以適
用于從高端服務(wù)器到嵌入式應(yīng)用的各個等級的計算平臺上,與之相比,windows 沒有明確的內(nèi)核概念.windows只適合臺式機,NT從未真正的打入高端服務(wù)器,WinCE也遇到了一些結(jié)構(gòu)性的困難.
(2) 內(nèi)核的任務(wù)管理
衡量一個內(nèi)核的重要指標是多任務(wù)環(huán)境下的安全性和任務(wù)調(diào)度的效率.
Linux在這方面繼承了Unix的優(yōu)點.而win9.x(包括winme)從來就沒有實現(xiàn)過安全的多任務(wù)環(huán)境,NT/2K 勉強做到了安全性,但是效率還是不敢恭維,我曾今將一個多串口并發(fā)驅(qū)動的應(yīng)用程序改寫成多線程的方式,原本希望提高處理速度,實際上速度降低了2到3倍.這也就不難理解為什么同樣的企業(yè)級應(yīng)用在低硬件的機器上跑得比高硬件配置的NT/2k快.
2 系統(tǒng)的可增值性與歷史兼容性
一個設(shè)計優(yōu)良的操作系統(tǒng)應(yīng)該有一個精簡和一致的構(gòu)造,在添加新的功能時不必破壞原有的結(jié)構(gòu),而且在后繼發(fā)展中能夠保持前后一致性.Unix由于當初設(shè)計時的科學性,以致于20多年的時間內(nèi),沒有在設(shè)計思想上做過大的變動.雖然Unix有很多的版本,但是通過Posix標準,這些系統(tǒng)在源代碼上保持高度的兼容.
與之相比,windows的幾乎每個操作系統(tǒng)的框架設(shè)計都顯得十分的隨意,幾乎不考慮硬件有了新的發(fā)展后,會出現(xiàn)什么問題.windown16位和32位兩個時期的操作系統(tǒng)出現(xiàn)明顯的""代溝"",作為一個好的os,這種硬件上的差異是應(yīng)該由其本身來考慮的,而不是把問題交給二次開發(fā)者,比如定義一堆PSZ,LPSZ的指針,將來64位時代, 大概要出現(xiàn)LLPSZ了:)
3 GUI 圖形用戶界面
Linux的GUI建立在X-WINDOWS的基礎(chǔ),這是與windows的GUI完全不同的一種架構(gòu)windows的GUI是通過應(yīng)用程序直接調(diào)用winows底層的GUI函數(shù).或者說這是一種垂直的關(guān)系.而Linux的GUI是應(yīng)用程序通過socket向X-WINDOW server發(fā)送請求實現(xiàn)的,只有X server在真正的寫屏幕.或者說這是一種平行的關(guān)系.后者的方式帶來更高的系統(tǒng)穩(wěn)定性,因為圖形顯示系統(tǒng)崩潰,對于Linux來說,只不過是死掉一個進程而已,而對windows來說會導(dǎo)致整個系統(tǒng)的崩潰.當然X-window的開銷要比windows的方式大,但是由于硬件的發(fā)展X-window在穩(wěn)定性上的優(yōu)點會將會彌補速度上微不足道的差異。
#p#
4 應(yīng)用開發(fā)環(huán)境
Linux上的開發(fā)工具沒有windows的容易入門,并不代表Linux上的開發(fā)環(huán)境比windows 差,其實linux編程入門慢,但是一旦熟悉了,以后就很少需要補充新的概念,與之相比,微軟用一些很“簡便”的編程概念吸引你,然后很快的淘汰這些概念,強迫你學習新的概念,你發(fā)現(xiàn)很多時間花費在氣喘噓噓的跟著微軟后面跑.你在這方面花費的時間遠遠超過你去學習linux編程的時間.
另一方面,Linux上IDE的開發(fā)工具也在成長,最終會吸引更多的應(yīng)用開發(fā)工程師
5 技術(shù)上的發(fā)展?jié)摿?/P>
windows現(xiàn)在的技術(shù)架構(gòu)基本上走進了一個死胡同,很難有大的創(chuàng)新.除非提出一個完全不同的系統(tǒng),然后在里面做個win32子系統(tǒng),以兼容現(xiàn)有的程序.就像在nt上搞win16子系統(tǒng)一樣:),并且體積再擴大一倍.
對于linux來說,一個很好的架構(gòu)放在哪里,現(xiàn)在主要是填充內(nèi)容,豐富應(yīng)用.在可以預(yù)見的時間內(nèi),windows無法在架構(gòu)上超過Linux.
6 多種平臺互連的影響
如果linux在嵌入式應(yīng)用中取得了成功,那么將來就會對臺式機市場形成外圍的壓力.隨著PC機的控制與網(wǎng)絡(luò)能力逐步融合到家電和傳統(tǒng)設(shè)備中去,這一天一定會出現(xiàn)的.微軟以下壓上的策略(用win9x的市場優(yōu)勢推win nt)會在Linux上重演
結(jié)束語
手也打酸了,最后我用最近看到的一段評論結(jié)束這篇文章,好像是這么說的linux就像internet一樣,在開始的時候發(fā)展較慢,一旦過了起步階段,就會取得驚人的發(fā)展.
【編輯推薦】