Linux Kernel(核)

JUAN425發表於2014-08-15

可以說:The linux kernel is important in that it serves as the glue between the user and the computer hardware. The kernel is the operating system. 


Linux 作業系統的一個component 就是kernel(核)。  kernel 就像一座橋樑一樣, 將我們這些user 和 計算機的硬體(例如RAM, CPU, 以及其他的一些例如鍵盤滑鼠硬體資源) 聯絡起來了。  




user和作業系統的kernel的關係如下所示:



我們在user space中, 或者我們有一個shell application, 想kernel 發出request, 例如列印一個message到螢幕上, 或者從鍵盤中讀取資訊等等。 kernel 收到這些請求之後, 去和Hardware 交流,  通過這樣, kernel 滿足我們的請求, 最終完成任務。


在kernel內部, 有如下的元件:

process Scheduler(程式排程器), memory managers(記憶體管理器)(注意是記憶體(RAM), 不是硬碟), I/O Scheduler(輸入輸出排程器),  IPC(inter-process communications(程式之間的通訊)),  Network services(網路服務), File system I/O。

process Scheduler: kernel 通過它使得CPU將時間均分為多個程式。

程式: Program that are actively running  in memory(即正在執行的程式。 或者更準確的說, 程式是一個被載入到記憶體中, 並且準備執行的程式)。 程式可能執行在單個電腦上, 也可能執行在由網路連線的多個電腦中。 

memory manager(記憶體管理器):  kernel通過這個元件管理shell,  為不同的applications 分配記憶體空間。 

 I/O sheduler : kernel 利用這個元件對輸入輸出裝置進行管理。 例如鍵盤啊, 螢幕啊啥的。

IPC: IPC  module 含有a set of methods  for  the exchange of data among multiple threads in one or more porocesss(一個或者多個程式內部的多個執行緒之間交換資料資訊的)。 例如當多個執行緒(multiple threading  )同時執行的時候, 需要保持同步(synchronization).。  總體來說, IPC module 中的methods 主要分為如下幾種:

 message passing(訊息傳遞)synchronization(同步)shared memory(共享記憶體), and remote procedure calls

Network services(網路服務): kernel 也提供用於網路服務的介面。 這樣你就可以訪問網路了。

File system I/O(檔案系統輸入輸出): Linux的 kernel 具有一個Virtual File system(虛擬檔案系統),    正是因為有個這個虛擬檔案系統, 我們的kernel才能夠同不同格式的檔案交流(talk to) in a uniform manner。 也就是說, Linux kernel中的 Virtual File system 具有一層抽象, 這樣我們就不用為不同格式的檔案獨特的的複雜性煩惱了。   所以虛擬檔案系統對於Linux 十分的重要。  而且, 這個虛擬檔案系統talks to device driver(裝置驅動器), 然後device driver(一段程式, 即驅動程式) 再talk to Hardware(硬體).。 





關於kernel的工作情況, 如下:




user (human)在user space 或者shell applications 通過向kernel傳送request(請求)  來talk to kernel。我們需要注意的是kernel工作的模式總是privileged mode, 即kernel 可以access any aspect of the computer at any time, 控制著所有的RAM, 而且可以和(talik to)與計算機以及與計算機相連的所有的硬體交流。 

但是我們的在user space, 或者shell application, 均不能talk to hardware, 例如鍵盤等等。 只能通過kernel 傳送請求。 硬體通過中斷和kernel交流。



我們可以下載kernel ,  網站是 www.kernel.org。

我們也可以在Linux 終端(terminal)輸入:

uname -r 指令來檢視kernel的version(版本)(單詞r 代表release version):


3是major number

2是minor number。 如果這個數字是偶數, 則表示這個版本是stable的。 如果是奇數, 表明是實驗的。 即處於development stage。 上述的版本是stable.

0表示revision number。


一旦我們獲得了kernel的source, 可以解壓縮到 /usr/src:



相關文章