那麼作業系統裡面含有什麼東西呢?簡單的來說,作業系統主要分為兩個東西,一個是『核心』、一個是『一堆核心提供的工具』我們以使用者常使用的 Windows 電腦來做一個簡單的說明好了。大家應該都使用過 Windows 電腦裡面的檔案總管吧?那麼當你開啟檔案總管的時候,他是否會顯示你硬碟當中的資料?這個顯示硬碟裡面的資料,就是『核心』幫你做的,但是,你要核心去顯示硬碟哪一個目錄下的資料,則是由『檔案總管』這個『工具』幫你達成的!這樣可以理解嗎?再來,如果您曾經使用過 Windows 2000 或 Windows XP 的話,那就更好了!你就應該聽過有所謂的『FAT32 與 NTFS 檔案格式』吧?在 Windows 98 這個早期的 Windows 版本中,他並無法讀取或者是找到 Windows XP 的 NTFS 檔案格式的硬碟,為什麼呢?因為他的『核心』本來就不認識 NTFS 啊!所以,即使你有檔案總管,但是由於核心根本不認識 NTFS ,所以,檔案總管也是沒有能力幫你達到你想要做的事情!這樣應該就更清楚了吧?沒錯!你的整個硬體是由核心來管理的,而如果核心不認識你的硬體,那麼你將無法使用該硬體設備,例如上面提到的 NTFS 檔案格式的硬碟!核心就是『 Kernel 』,他是一個作業系統的最底層的東西,由他來掌管整個硬體資源的工作狀態,而 Linux 有 Linux 自己的核心, Windows 也有他自己的核心。所以說,當有新的硬體加入到你的系統中的時候,那麼若你的『 Kernel 』並沒有支援他的時候,呵呵,這個新的硬體就肯定無法工作的,因為控制他的 Kernel 並不認識他呀!這樣瞭解了嗎?!先有個概略性的瞭解,後面我們提到『核心編譯』的時候會在更詳細的談到他!
一般來說,Kernel 管理的事項有:
# System call interface :一些服務與 kernel 溝通之後,將硬體的資源進一步的利用;
# Process control :系統程序控制中心,所以核心編的越小越好;
# Memory management :控制整個系統的記憶體管理;
# File system management :檔案系統的管理,例如 I/O 等等的工作啦!還有不同檔案格式的支援啦等等,如果你的核心不認識某個檔案系統,那麼您將無法使用該檔案格式的檔案囉!例如上面提到的 Windows 98 不認識 NTFS 檔案格式的硬碟;
# Device drivers :就如同上面提到的,硬體的管理是 Kernel 的主要工作之一,當然囉,裝置的驅動程式就是核心需要做的事情啦!好在目前都有所謂的『可載入模組』功能,可以將驅動程式編輯成模組,就不需要重新的編譯核心啦!這個也會在後續的核心編譯當中提到的!
所以啦!所有硬體的資源都是他來管理的!至於我們要達成一些工作時,除了藉由核心本身提供的功能 ( 例如上面提到的檔案總管 ) 之外,還可以藉由其他的應用軟體來達成喔!舉個例子來說,你要看 VCD 影片是吧!那麼除了 Windows 提供的媒體播放程式之外,你也可以自行安裝 VCD 播放程式來播放 VCD 囉!這個播放程式就是應用軟體囉,而這個應用軟體可以幫你去控制核心來工作 ( 就是放映影片囉 ) ,因此,我們可以這樣說,核心是控制整個硬體支援的咚咚,也是一個作業系統的最底層,然而要讓整個作業系統更完備的話,那還需要含有相當豐富的核心提供的工具,以及核心相關的應用軟體來支援!
OK!提到這裡那麼您知道 Linux 是什麼了嗎?呵呵!對啦!其實 Linux 就是一個作業系統,這個作業系統裡頭含有最主要的 kernel 以及 kernel 提供的工具啦!他提供了一個完整的作業系統當中最底層的硬體控制與資源管理的完整架構,這個架構是沿襲 Unix 良好的傳統來的,所以相當的穩定而功能強大!此外,由於這個優良的架構可以在目前的個人電腦 ( X86 系統 ) 上面跑,所以很多的軟體開發者將他們的工作心血移轉到這個架構上面,那就是很多的應用軟體啦!雖然 Linux 僅是其核心與核心提供的工具,不過,由於核心、核心工具與這些軟體開發者提供的軟體的整合,使得 Linux 成為一個更完整的、功能強大的作業系統囉!我們可以將 Linux 的系統與使用者的相關性看成底下的圖示:
圖一、使用者、使用者介面與核心工具、核心、與硬體之相關性
約略瞭解 Linux 是何物之後,接下來,我們要談一談,『為什麼說 Linux 是很穩定的作業系統呢?他是如何來的?』
從 Unix 到 Linux 這一段歷史
為什麼大家常常會說, Linux 是很穩定的一套作業系統呢?這是因為, Linux 他有個老前輩,那就是 Unix 家族囉!有這個前輩的提攜,讓 Linux 這個小老弟很快的就成為一套穩定而優良的作業系統啦!所以,底下我們來談一談 Unix 到 Linux 的這一段歷史吧!
早在 Linux 出現之前的二十年 ( 大約在 1970 年代 ), 就有一個相當穩定而成熟的作業系統存在了!那就是 Linux 的老大哥『 Unix 』是也!怎麼這麼說呢?!他們這兩個傢伙有什麼關係呀?這裡就給他說一說囉!眾所皆知的, Linux 的核心是由 Linus Torvalds 在 1991 年的時候給他開發出來的,並且丟到網路上提供大家下載,後來大家覺得這個小東西 ( Linux Kernel ) 相當的小而精巧,所以慢慢的就有相當多的朋友投入這個小東西的研究領域裡面去了!但是為什麼這的小東西這麼棒呢?!然而又為什麼大家都可以免費的下載這個東西呢?!嗯!等鳥哥慢慢的唬xx....喔不!聽我慢慢的道來!
* 一個沒有完成的夢想: Bell, MIT 與 GE 的『 Multics 』系統
早期的電腦並不像現在的個人電腦一般,他可不是一般人碰的到的玩意兒,除非是軍事或者是高科技用途才有可能接觸到這類的 Computer !而如前面所言,有電腦硬體還需要作業系統的配合才能夠發揮電腦的效能,不過,在那個年代,由於電腦算是『奢侈品』,喔~應該說是『貴重物品』,所以,可能一間學校就只有一部大型主機當然,那個年代所謂的大型主機仍然無法提供適度的運算能力的。不過,既然只有一部大型主機,然而有許許多多的教師、學生要想要來使用,怎麼辦呢?為了解決這個問題,在 1960 年代初期,麻省理工學院 ( MIT ) 發展了所謂的『相容分時系統 ( Compatible Time-Sharing System, CTSS )』,就字面上的意義來看,他主要讓大型主機可以提供多個終端機連線進入主機使用主機的資源, ( 附帶一提,當時的終端機 ( Terminal ) 本身並沒有軟體或者可供使用的資源,這些終端機要能使用,一定必需要連線登入主機之後,才能夠使用主機的資源來工作!) 當時可以讓約 30 位使用者連線使用主機。而為了讓這個分時系統更加的強大,所以,在 1965 年前後由貝爾研究室 ( Bell )、 麻省理工學院 ( MIT ) 及奇異電器公司 ( GE ) 開始來共同開發一個名為 Multics 的大型計畫,目標是想讓大型主機可以連線 300 位以上的使用者。不過,在奮鬥了四年之後,該計畫仍然宣告不治...喔!是失敗啦!(註: Multics 有複雜、多數的意思。)
* 一個小型檔案系統的產生:1969 年 Ken Thompson 的小型 file server system
在複雜的 Multics 系統的計畫失敗後,貝爾研究室當然就退出該計畫。就在這個計畫解散之後,曾經參與 Muitics 的貝爾研究室的成員 Ken Thompson 由於自己工作上的需求,需要一套檔案存取的小型作業系統,便在 1969 年的時候以 DEC 公司 ( Digital Equipment Corporation ) 的電腦 PDP-7 為硬體基準,設計了一個適合自己工作環境的小型檔案系統,其中也含有他自行開發的一些小工具。那個系統就是最早期的 Unix 的源頭!當初 Ken 設計這個檔案系統時,主要是為了自己的存取方便所設計的簡單 OS ,因此將原有的 Multics 系統大幅度的簡化,不過,在當時還並沒有 Unix 這個名詞的出現!
* Unix 的正式誕生:1973 年 Ritchie 等人以 C 語言寫出第一個正式 Unix 核心
由於 Thompson 寫的那個作業系統實在太好用了,所以在 Bell 研究室內部廣為流傳,並且數度經過改版。到了 1973 年, Bell 研究室的 Dennis Ritchie 等人為了讓這個系統的執行效能更佳化,所以使用編譯效能更好的 C 語言將原有的 1969 年的那個系統之核心大幅度的改寫過,並且確定該作業系統名稱為 Unix,呵呵!那就是最早的 Unix 作業系統囉!不過,由於這個作業系統是由這一群工程師所開發完成的,而且使用者也大多是這方面的工程師,因此造成了後來 Unix 系統介面較難被一般使用者接受的情況 @_@ (註: 相對於 Multics ,Unix 具有單一的意思!)