兩天沒有更新了,上次博文咱們分析了linux的內存管理子系統,原本我不想對接下來的進程管理子系統、網絡子系統、虛擬文件系統在這個階段進行分析的,可是爲了讓你們對內核有個總體的把握,今天仍是簡單的介紹一下剩餘的幾個子系統,咱們對這幾個子系統的分析,只要瞭解其做用和部份內容便可,沒必要深究,等咱們寫上幾個驅動,到時候按照驅動再來分析這幾個子系統咱們就清晰多了。node
在http://www.cnblogs.com/wrjvszq/p/4257164.html一文咱們提到過linux由七個部分構成,最重要的四個子系統是內存管理子系統、進程管理子系統、網絡子系統、虛擬文件系統、上次咱們已經對內存管理子系統進行了分析(談不上分析,只是個簡單瞭解)。linux
因此今天咱們會分析到如下內容:網絡
1. Linux進程管理子系統架構
2. Linux網絡子系統socket
3. 虛擬文件系統網絡傳輸協議
4. Linux設備驅動簡介spa
在進程管理中最重要的就是進程的調度和進程的通訊下面咱們一一分析。htm
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) 網絡設備
用來負責發送和接收報文的設備,好比網卡。
今天的簡單分析就先到這裏,我之後會慢慢的伴隨着驅動的開發去分析內核,感謝你們的關注。