【Linux技術】嵌入式linux內核的五個子系統

Perface

   Linux內核主要由進程調度(SCHED)、內存管理(MM)、虛擬文件系統(VFS)、網絡接口(NET)和進程間通信(IPC)5個子系統組成,如圖1所示。


650) this.width=650;" src="http://img1.51cto.com/attachment/201305/110913525.jpg" title="Linux內核的組成部分與關係.jpg" />


圖1 Linux內核的組成部分與關係



1.進程調度

   進程調度控制系統中的多個進程對CPU的訪問,使得多個進程能在CPU中“微觀串行,宏觀並行”地執行。進程調度處於系統的中心位置,內核中其他的子系統都依賴它,因爲每個子系統都需要掛起或恢復進程。

650) this.width=650;" src="http://img1.51cto.com/attachment/201305/111005784.jpg" title="Linux進程狀態轉換.jpg" />


圖2 Linux進程狀態轉換

   如上圖2所示,Linux的進程在幾個狀態間進行切換。在設備驅動編程中,當請求的資源不能得到滿足時,驅動一般會調度其他進程執行,並使本進程進入睡眠狀態,直到它請求的資源被釋放,纔會被喚醒而進入就緒態。

   睡眠分成可被打斷的睡眠和不可被打斷的睡眠,兩者的區別在於可被打斷的睡眠在收到信號的時候會醒。

   在設備驅動編程中,當請求的資源不能得到滿足時,驅動一般會調度其他進程執行,其對應進程進入睡眠狀態,直到它請求的資源被釋放,纔會被喚醒而進入就緒態。

   設備驅動中,如果需要幾個併發執行的任務,可以啓動內核線程,啓動內核線程的函數爲:

   pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);




2.內存管理

   內存管理的主要作用是控制多個進程安全地共享主內存區域。當CPU提供內存管理單元(MMU)時,Linux內存管理完成爲每個進程進行虛擬內存到物理內存的轉換。Linux 2.6引入了對無MMU CPU的支持。

   如下圖3所示,一般而言,Linux的每個進程享有4GB的內存空間,0~3GB屬於用戶空間,3~4GB屬於內核空間,內核空間對常規內存、I/O設備內存以及高端內存存在不同的處理方式。

650) this.width=650;" src="http://img1.51cto.com/attachment/201305/111030877.jpg" title="Linux進程地址空間.jpg" />

圖3 Linux進程地址空間



3.虛擬文件系統

   如下圖4所示,Linux虛擬文件系統(VFS)隱藏各種了硬件的具體細節,爲所有的設備提供了統一的接口。而且,它獨立於各個具體的文件系統,是對各種文件系統的一個抽象,使用超級塊super block存放文件系統相關信息使用索引節點inode存放文件的物理信息使用目錄項dentry存放文件的邏輯信息。

650) this.width=650;" src="http://img1.51cto.com/attachment/201305/111052126.jpg" title="Linux文件系統.jpg" />

圖4 Linux文件系統




4.網絡接口

   網絡接口提供了對各種網絡標準的存取和各種網絡硬件的支持。如下圖5所示,在Linux中網絡接口可分爲網絡協議和網絡驅動程序,網絡協議部分負責實現每一種可能的網絡傳輸協議網絡設備驅動程序負責與硬件設備通信,每一種可能的硬件設備都有相應的設備驅動程序。

650) this.width=650;" src="http://img1.51cto.com/attachment/201305/111110225.jpg" title="Linux網絡體系結構.jpg" />

圖5 Linux網絡體系結構



5.進程通信

   進程通信支持提供進程之間的通信,Linux支持進程間的多種通信機制,包含信號量、共享內存、管道等,這些機制可協助多個進程、多資源的互斥訪問、進程間的同步和消息傳遞。



依賴關係

    Linux內核的5個組成部分之間的依賴關係如下:

·進程調度與內存管理之間的關係:這兩個子系統互相依賴。在多道程序環境下,程序要運行必須爲之創建進程,而創建進程的第一件事情,就是將程序和數據裝入內存。

·進程間通信與內存管理的關係:進程間通信子系統要依賴內存管理支持共享內存通信機制,這種機制允許兩個進程除了擁有自己的私有空間,還可以存取共同的內存區域。

·虛擬文件系統與網絡接口之間的關係:虛擬文件系統利用網絡接口支持網絡文件系統(NFS),也利用內存管理支持RAMDISK設備。

·內存管理與虛擬文件系統之間的關係:內存管理利用虛擬文件系統支持交換,交換進程(swapd)定期由調度程序調度,這也是內存管理依賴於進程調度的惟一原因。當一個進程存取的內存映射被換出時,內存管理向文件系統發出請求,同時,掛起當前正在運行的進程。

   除了這些依賴關係外,內核中的所有子系統還要依賴於一些共同的資源。這些資源包括所有子系統都用到的例程,如分配和釋放內存空間的函數、打印警告或錯誤信息的函數及系統提供的調試例程等。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章