Linux內核分析(四)
兩天沒有更新了,上次博文我們分析了linux的內存管理子系統,本來我不想對接下來的進程管理子系統、網絡子系統、虛擬文件系統在這個階段進行分析的,但是為了讓大家對內核有個整體的把握,今天還是簡單的介紹一下剩余的幾個子系統,我們對這幾個子系統的分析,只要了解其作用和部分內容即可,不必深究,等我們寫上幾個驅動,到時候按照驅動再來分析這幾個子系統我們就清晰多了。
在http://www.CUOXin.com/wrjvszq/p/4257164.html一文我們提到過linux由七個部分構成,最重要的四個子系統是內存管理子系統、進程管理子系統、網絡子系統、虛擬文件系統、上次我們已經對內存管理子系統進行了分析(談不上分析,只是個簡單了解)。
所以今天我們會分析到以下內容:
1. Linux進程管理子系統
2. Linux網絡子系統
3. 虛擬文件系統
4. Linux設備驅動簡介
l Linux進程管理子系統
在進程管理中最重要的就是進程的調度和進程的通信下面我們一一分析。
1. 進程調度
進程調度使得多個進程增長CPU中“微觀串行,宏觀并行”的進行執行。進程調度處于系統的中心位置,內核中其他子系統都依賴于它。
a) 進程調度意義
進程調度使得多個進程增長CPU中“微觀串行,宏觀并行”的進行執行。進程調度處于系統的中心位置,內核中其他子系統都依賴于它。
b) 進程的狀態切換
Linux的進程在幾個狀態間進行切換,如下圖展現了其切換關系。
c) 進程調度策略
Linux中常見的有以下
1) SCHED_OTHER 分時調度策略。
2) SCHED_FIFO實時調度策略,先到先服務
3) SCHED_RR實時調度策略,時間片輪轉
2. 進程通信
Linux支持進程間的多種通信機制,可以通過這些通信機制進行多個進程、多資源的互斥訪問、進程間的同步和消息傳遞。
a) linux進程間通信方式
1) 管道:分為有名管道(用于同一系統間的任意進程)和無名管道(用于父子進程)
2) 信號量
3) 信號
4) 消息隊列
5) 共享內存
6) 套接字(socket)
l Linux網絡子系統
Linux網絡子系統提供了對各種網絡標準的存取和各種硬件的支持。下圖是其整體結構。其可以分為協議層和網絡驅動程序,其中網絡協議主要負責實現每一種可能的網絡傳輸協議,而網絡驅動程序負責與硬件通信。
l Linux虛擬文件系統
Linux虛擬文件系統(VFS)隱藏了各種硬件的具體細節,為所有的設備提供了統一的接口,它是對各種文件系統的一個抽象,其實使用超級塊super block存放文件系統相關信息,使用索引節點inode存放文件的物理信息,使用目錄項dentry存放文件的邏輯信息,其整體架構如下。
l Linux設備驅動簡介
上面的介紹很簡單,僅僅是對這些子系統的概念什么的進行了簡介,下面我們對linux設備驅動進行簡單介紹。
1. 設備驅動分類
Linux分為下面三種基本設備。
a) 字符設備
是一種按照字節來訪問的設備,字符設備適用于大多數的簡單硬件。常見的LED、按鍵等
b) 塊設備
是一種以塊(通常為512字節)為最小訪問單位的設備,常見的硬盤、SD卡等。但在linux中對塊沒有大小限制,可以訪問任意數目的字節。
c) 網絡設備
用來負責發送和接收報文的設備,比如網卡。
今天的簡單分析就先到這里,我以后會慢慢的伴隨著驅動的開發去分析內核,感謝大家的關注。
來自為知筆記(Wiz)
新聞熱點
疑難解答