天天看點

戴文的Linux核心專題:01 介紹

在1991年,一個叫林納斯·本納第克特·托瓦茲的芬蘭學生制作了一個現在非常流行的作業系統的核心。他于1991年9月釋出了linux 0.01,并且于1992年以gpl許可證的方式授權了該核心。gnu通用許可證(gpl)允許人們使用、擁有、修改,以及合法和免費的分發源代碼。這使得核心變得非常流行,因為任何人都可以免費地下載下傳。現在任何人都可以生成他們自己的核心,這有助于人們學習如何擷取、編輯、配置、編譯并安裝linux核心。

核心是作業系統的核心。作業系統是一系列的管理硬體并允許使用者在電腦上運作應用的程式。核心控制着硬體和應用。應用并不直接和硬體打交道,而是首先和核心互動。總之,軟體運作在核心上,而核心操作着硬體。沒有核心,電腦就是一個沒用的物件。

使用者制作他們自己的核心有各種各樣的原因。許多使用者也許想要一個隻包含他們需要的代碼的系統核心。比如說我的核心包含了火線裝置驅動,但是我的電腦缺乏這些端口。當系統啟動時,時間和記憶體就會浪費在那些我系統上并沒有安裝的裝置上。如果我想要簡化我的核心,我會制作自己不包含火線驅動的核心。至于另外一個理由,某個使用者可能擁有一台有特殊硬體的裝置,但是最新的ubuntu版本中的核心缺乏所需的驅動。這個使用者可以下載下傳最新的核心(比目前ununtu的linux核心要新),并制作他們自己的有相應驅動的核心。不管怎樣,這兩個原因是使用者想要制作自己的linux核心的普遍原因。

在下載下傳核心前,我們應該讨論一些重要的術語和事實。linux核心是一個宏核心,這意味着整個作業系統都運作在核心預留的記憶體裡。說的更清楚一些,核心是放在記憶體裡的。核心所使用的空間是核心預留的。隻有核心可以使用預留的核心空間。核心擁有這些記憶體空間,直到系統關閉。與核心空間相對應的還是使用者空間。使用者空間是記憶體上使用者程式擁有的空間。比如浏覽器、電子遊戲、文字處理器、媒體播放器、桌面、主題等都是放在記憶體裡的使用者空間。當一個程式關閉的時候,任何程式都可以使用新釋放的空間。在核心空間,一旦記憶體被占用,則沒有任何其他程式可以使用這塊空間。

linux核心也是一個搶占式多任務核心。這意味該核心可以暫停一些任務來保證任何應用都有機會來使用cpu。舉個例子,如果一個應用正在運作但是正在等待一些資料,核心會把這個應用暫停并允許其他的程式使用新釋放的cpu資源,直到資料到來。否則的話,系統就會浪費資源給那些正在等待資料或者其他程式執行的的任務。核心将會強制程式去等待或者停止使用cpu。沒有核心的允許,應用程式不能脫離暫停或者使用cpu。

linux核心使得裝置作為檔案顯示在/dev檔案夾下。舉個例子,usb端口位于/dev/bus/usb。硬碟分區則位于/dev/disk/分區。因為這個特性,許多人說:“在linux上,一切皆檔案”。(不過這些裝置檔案不能被直接使用,——譯者補充)舉個例子,如果一個使用者想要通路在存儲卡上的資料,他們是不能通過裝置檔案通路到這些資料的。(譯注:此處原文是“if a user wanted to access data on their memory card, for example, they cannot access the data through these device files.”,但根據上下文,此處語境不對,是以做了相應補充。據“食夢-”的提示,原文也有人對此提出了質疑,作者做了如下解釋:http://www.linux.org/threads/%ef%bb%bfthe-linux-kernel-introduction.4203/#post-12623)

linux核心是可移植的。可移植性是linux流行的一個最重要的原因。可移植性使得核心可以工作在各種處理器和系統上。一些核心支援的處理器的型号包括:alpha、amd、arm、c6x、intel、x86、microblaze、mips、powerpc、sparc、ultrasparc等,這還不是全部的清單。

在引導檔案夾(/boot),使用者會看到諸如“vmlinux”或者“vmlinuz”的檔案。這兩者都是已編譯的linux核心。以“z”結尾的是已壓縮的。“vm”代表虛拟記憶體。在sparc處理器的系統上,使用者可以看見一個zimage檔案。一小部分使用者可以發現一個bzimage檔案,這也是一個已壓縮的linux核心。無論使用者有哪個檔案,這些引導檔案都是不能更改的,除非使用者知道他們正在做什麼。否則系統會變成無法引導,也就是說系統啟動不了了。

核心源代碼就是程式編碼。有了源代碼,程式員可以修改核心并能觀察到核心是如何工作的。

原文釋出時間為:2013-11-02

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀