隨便說說Windows和Linux

來源:互聯網
上載者:User
    首先聲明,這篇文章 並非論述win/lin孰好孰壞的憤青文。我是一個雙系統使用者,這篇文章只是隨便說一些我的使用體會,從各個角度說一說這兩個系統的 異同。文中可能對Linux的描述較多,也可以當做一個簡單的Linux入門介紹文,不過這個介紹有點太抽象了。        首先講講 作業系統(為了打字方便,後面簡稱 OS)這個概念吧。在電腦學術上對OS的定義來說,OS主要負責的是各種硬體資源的分配管理,所以,它應該只是一個核心。但對於Windows使用者來說,提及OS,往往指的是所有由MS提供的東西,包括Win核心,也包括所有附帶的上層應用,如mspaint, notepad等,當然也包括整個GUI的設計。對於普通的win使用者來說,OS則更是指的 Release。經常會聽到這樣的對話:“你用的什麼 系統?”“我用的Win7”。對於Linux使用者,核心與上層應用的界限是非常明顯的,僅從普通使用者(相對於開發人員而言)的角度來說,linux核心與windows核心最大的區別也許是GUI是否做在核心中。linux的核心是不包括GUI的,而windows則把GUI做到核心中了,所以windows在GUI方面消耗的資源相對要少一些,也更適合部署各種娛樂應用。(或許有人要出來跟我說linux的GUI消耗資源更少,vista上開不了特效的硬體在linux上都能開3D特效。這些讀者,我建議你多用用linux之後再來看這個結論。)    按理來說, Linux應該僅僅指linux kernel,不應該包括任何上層應用,然而實際情況下,Linux指代了一類東西。所以Linux沒有 Release這個概念(每個軟體都有自己的Release),而 發行版Distribution)這個概念可以 約等於Win的Release吧。通常,除了一些LiveCD的Distro外,不同Distro最大的區別是包管理工具的不同。用Linux的使用者都知道,每個Distro都有自己的軟體倉庫,倉庫裡有幾乎所有的軟體,使用者可以直接從倉庫中下載軟體安裝,而不需要在網上搜尋下載,還要擔心是否含有病毒。每個Distro的倉庫的格式不一樣,軟體包的格式也不同,他們的風格也大不相同。如Debian的APT,它的特點就是方便使用者,有很強的自動解決衝突的機制,使用者只管裝你要的軟體,一句install就行,其他的我來;如Gentoo的emerge,它的特點是所有包都是原始碼,在本地根據本地的最佳化設定進行編譯,設定可以取捨某些軟體中的特定功能;再如Arch的特點則是提供的軟體包都是最新的,很適合喜歡嘗鮮的使用者;LFS則沒有包管理機制,什麼都要自己來,所以通常不適合案頭使用者使用。但為什麼說Distro只是約等於win的Release呢?Win的Release,從普通使用者的角度來看,最大的區別就是GUI。而Linux下的GUI並不是Distro決定的,Linux下的GUI,可以簡單的認為是由幾種不同的 案頭環境DE)來決定的(其實不是這麼簡單,但你這麼認為也沒人會反對你),常見的DE有Gnome,KDE,openbox,xfce,awesome等,而所謂的3D效果,並不是DE,只是一個應用軟體,compiz fusion。Compiz Fusion裡的絕大多數功能都只能用來裝裝B,無論對於開發,還是案頭娛樂都沒有實用意義,所以用了很短的時間之後我也不用了。而每種DE,不僅僅是外觀的不同,其設計理念也有很大的區別。如awesome是一個典型的平鋪式視窗管理工具,它的特點是總是把前台的視窗撐滿整個螢幕,並且能夠方便調整各視窗大小,很適合開發人員使用。(我因為已經習慣了gnome,並且一直找不到時間折騰一下awesome的配置,不然肯定裝awesome了)

    上面說的這麼多,都是從一個案頭使用者的角度來看的,下面稍微深入一點點,從一個更接近OS的角度來看兩者的異同。    對於習慣Windows的使用者,剛開始用Linux的時候,分類樹也許是最不習慣的部分之一。很多人難以理解我這麼多分區都在哪裡?掛載是怎麼回事?windows使用者總是習慣性的認為第一個分區的名字就叫C盤,第二個分區的名字就叫D盤。所以在linux下也總會問“我的C盤在哪”。其實,如果深入瞭解一下,就會發現其實Win和Linux的目錄結構是很相似的,看(用等寬字型瀏覽):

           \(根目錄)                            案頭           |-home                               |-控制台           |-usr,local                          |-我的電腦           |-proc,dev,tmp                       | |-C,D,E...           |-boot                               |-網路位置           |-bin                                |-我的文件           |-etc                                |-資源回收筒           |-mnt(media)                         |-庫...           |-srv,var,lib...           |-sbin           |-...
           Linux的目錄結構                      Windows的目錄結構    從這裡面可以看出,Windows的目錄結構與Windows是相似的,它的根目錄是案頭,在這個目錄下有控制台,我的電腦等目錄,而在我的電腦中則有C,D,這些目錄,通常第一個分區掛載於案頭\我的電腦\C這個目錄下,其他邏輯分區也一樣。這裡,控制台是一個特殊的目錄,它是把很多在system32目錄中的管理工具“軟連結”到了這個目錄下,網路位置也是特殊的目錄,把網路相關的狀態資訊顯示在這個目錄中,我的文件則相當於Linux下把某個目錄Bind Mount過來,資源回收筒則是把各個分區上的Recycled目錄組合在一起,庫其實跟資源回收筒的原理差不多。Windows中邏輯分區掛載點是寫在註冊表中的,Linux下的掛載點寫在/mnt/fstab中。    對於Linux目錄,這樣理解也許會容易一些:/boot目錄存放的是系統核心檔案,以及boot loader(如grub)的檔案,系統啟動之後,核心完全存在於記憶體中,這個目錄也就沒用了。/home目錄可以認為是我的文件,但其組織方式與我的文件不同,windows下的我的文件是在邏輯磁碟上的某些目錄的集合,而/home,通常情況下是單獨掛載的分區(不單獨掛載也行,跟\共用邏輯分區);/usr目錄有點點類似於C:\Windows目錄,字型目錄等都在這裡面,而/usr/share則相當於Program Files目錄,存放各個軟體的檔案;/lib目錄則類似於Program Files\Common Files,是各種軟體共用的庫存放的地方。/usr/local這個目錄的結構跟/usr的結構很相像,但在某些發行版(如Debian)中,這個目錄是普通使用者(需要加入staff組)可以訪問的,所以普通使用者安裝軟體可以裝到這裡面。(當然,這種做法比較適合單機使用者,或者多使用者機器上只有較低許可權的管理員使用,多使用者機器上,還是推薦將自己的軟體裝到自己的home目錄中);/mnt或者/media目錄可以認為跟我的電腦很類似了,只是,通常移動硬碟分區會掛載在這下面,當然,如果你願意,你也可以把所有分區按分區順序掛載到/media/{C,D,E...}下;/proc目錄是一個特殊的目錄,它可以認為是記憶體的一個映射,從裡面可以直接讀取到很多記憶體中的內容,各個進程的狀態資訊等,當然,有些資訊需要一定的許可權才可以讀取;/dev目錄是一個特殊的目錄,是所有物理硬體(如sda)、邏輯硬體(如tty)的映射,這裡每個檔案代表一個硬體裝置;/etc可以認為是windows的註冊表,但這裡都是全域的配置,相當於HKLM這個根鍵;/bin嘛,其實就是把所有的應用程式的可執行檔放在這裡,/sbin中的s表示system的意思,作用也就好理解了,可以認為是系統的一些必要工具。

    其實,僅從作業系統原理的角度來看這兩個系統,它們並沒有太本質的區別,記憶體管理、硬體資源管理、進程管理等,都是相同或相似的概念,不同的實現而已。它們的不同點至於使用的理念不一樣,*nix無論是核心還是上層軟體,大多遵循所謂的Unix哲學,Unix哲學即指導了代碼的編寫風格,也影響了軟體的使用習慣,Windows,我不知道是否也有Windows哲學一說,但是Windows應用程式的代碼風格跟*nix是很不一樣的,而且使用習慣更始不同,它們的理念不同,可以認為這算是IT界的兩大宗教吧。這裡不深入討論Unix哲學或者Windows哲學的細節。我只想籠統的說一下我對這兩種理念的感覺。Windows因為都是由微軟提供,並且第三方的軟體一般也都使用微軟提供的開發工具開發,所以彙總是最大的特點,UI風格比較統一。也因為彙總的特點,Windows的設計重心是ease of use,相對來說,windows的東西對開發人員是不友好的,但對終端使用者卻很友好,這也是為什麼windows會有這麼多的案頭使用者。*nix想法,它對開發人員是友好的,但對使用者不友好。*nix中幾乎任何一款工具的學習曲線都要比windows長,但是功能卻也很強大。從開發人員看,我覺得最大的特點就是最大化了代碼重用,因為所幾乎所有軟體都開源,所以免去了很多重複發明wheel(額,怕被當作敏感詞……)的工作。曾經看到過很多軟體開發商的怨言,自己的軟體用了.net庫,但使用者電腦中可能沒有裝,所以雖然自己的軟體只有幾百K,但發布的安裝包卻不得不幾十兆。軟體的大小很多時候直接影響了使用者的接受程度。但微軟的各個Release都可謂是Life Changing,娛樂模式、辦公模式,影響了大多數人的生活。Linux這方面,android也可謂是一個比較典型的例子吧,我個人覺得吸引那麼多開發人員參與到android應用的開發,主要原因還並不是andoid有多好用,而是上面開發軟體太簡單了。    這裡順便說說命令列。很多windows小菜總是會覺得DOS是多麼了不起的東西,看到別人在CMD中敲幾條命令就會覺得非常了不起。為什麼,我想了想,也許是因為它們覺得會敲命令的人能夠記住很多命令,那麼長長的東西,誰記得住啊!能記住的肯定都是牛人。然而其實大多數命令是不需要記太多東西的,這一方面,以命令列見長的*nix最有發言權。在*nix下,以bash為例,它提供的各種補全方式,還有各種對命令列操作的能力,甚至還有vi模式、emacs模式,使得敲命令根本不需要記住很多東西,並且輸入的過程也很輕鬆,再配合管道的使用(*nix中把檔案當作通用標準介面),*nix的命令列在UI體驗上,以絕對的優勢領先了dos或者cmd。Win2k8中提供了PowerShell,從同學的介紹來看,它確實也非常強大,至少在配置能力方面,絕不是cmd那樣的小輩。但是,我覺得它有一個方面與*nix的shell比是沒有任何優勢的,第三方程式,*nix的shell功能強大,並不在與bash本身提供了多少功能,而在於各種第三方工具,使得命令列在*nix下幾乎無所不能(當然也不可能絕對的無所不能)。

    似乎也寫了不少了,但其實還是只講了一點點。碼字有點累,就歇歇吧,以後有空再寫。最後做個簡單的總結,這個總結有些籠統,而我也不善長總結,所以言詞可能不是很準確,各位輕拍。    從作業系統的角度看,兩者是大同小異的。從開發人員的角度看,Linux是開發友好的。從終端使用者的角度看,Windows讓你忘了硬體,忘了系統核心,Win讓你感覺你在用軟體,而Linux讓你感覺你在用Linux。

 

 轉載請註明出處:http://www.cnblogs.com/stephenjy/archive/2010/02/17/1668913.html  

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.