Linux內核的抽象結構




         圖1.2  Linux內核子系統及其之間的關係 

 

 1.進程調度(SCHED)控制着進程對CPU的訪問。當需要選擇下一個進程運行時,由調度程序選擇最值得運行的進程。可運行進程實際是僅等待 CPU 資源的進程,如果某個進程在等待其他資源,則該進程是不可運行進程。Linux 使用了比較簡單的基於優先級的進程調度算法選擇新的進程。

  2.內存管理(MM)允許多個進程安全地共享主內存區域 。Linux的內存管理支持虛擬內存,即在計算機中運行的程序,其代碼、數據和堆棧的總量可以超過實際內存的大小,操作系統只將當前使用的程序塊保留在內存中,其餘的程序塊則保留在磁盤上。必要時,操作系統負責在磁盤和內存之間交換程序塊。

內存管理從邏輯上可以分爲硬件無關的部分和硬件相關的部分。硬件無關的部分提供了進程的映射和虛擬內存的對換;硬件相關的部分爲內存管理硬件提供了虛擬接口。

3. 虛擬文件系統(Virtul File System VFS)隱藏了各種不同硬件的具體細節,爲所有設備提供了統一的接口,VFS還支持多達數十種不同的文件系統,這也是Linux較有特色的一部分。

虛擬文件系統可分爲邏輯文件系統和設備驅動程序。邏輯文件系統指Linux所支持的文件系統,如ext2, fat等,設備驅動程序指爲每一種硬件控制器所編寫的設備驅動程序模塊。

4.網絡接口(NET)提供了對各種網絡標準協議的存取和各種網絡硬件的支持。網絡接口可分爲網絡協議和網絡驅動程序兩部分。網絡協議部分負責實現每一種可能的網絡傳輸協議,網絡設備驅動程序負責與硬件設備進行通信,每一種可能的硬件設備都有相應的設備驅動程序。

5. 進程間通信(IPC) 支持進程間各種通信機制。

從圖1.2可以看出,處於中心位置的是進程調度,所有其它的子系統都依賴於它,因爲每個子系統都需要掛起或恢復進程。一般情況下,當一個進程等待硬件操作完成時,它被掛起;當操作真正完成時,進程被恢復執行。例如,當一個進程通過網絡發送一條消息時,網絡接口需要掛起發送進程,直到硬件成功地完成消息的發送,當消息被髮送出去以後,網絡接口給進程返回一個代碼,表示操作的成功或失敗。其它子系統(內存管理,虛擬文件系統及進程間通信)以相似的理由依賴於進程調度。

 

 各個子系統之間的依賴關係如下:

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

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

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

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

除了圖1.2所顯示的依賴關係以外,內核中的所有子系統還要依賴一些共同的資源,但在圖中並沒有顯示出來。這些資源包括所有子系統都用到的過程,例如, 分配和釋放內存空間的過程,打印警告或錯誤信息的過程,還有系統的調試例程等等

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