天天看點

《Linux核心設計的藝術:圖解Linux作業系統架構設計與實作原理》——2.6 初始化塊裝置請求項結構

linux 0.11将外設分為兩類:一類是塊裝置,另一類是字元裝置。塊裝置将存儲空間等分為若幹同樣大小的稱為塊的小存儲空間,每個塊有塊号,可以獨立、随機讀寫。硬碟、軟碟都是塊裝置。字元裝置以字元為機關進行i/o通信。鍵盤、早期黑屏指令行顯示器都是字元裝置。

程序要想與塊裝置進行溝通,必須經過主機記憶體中的緩沖區。請求項管理結構request[32]就是作業系統管理緩沖區中的緩沖塊與塊裝置上邏輯塊之間讀寫關系的資料結構。

請求項在程序與塊裝置進行i/o通信的總體關系如圖2-11所示。

作業系統根據所有程序讀寫任務的輕重緩急,決定緩沖塊與塊裝置之間的讀寫操作,并把需要操作的緩沖塊記錄在請求項上,得到讀寫塊裝置操作指令後,隻根據請求項中的記錄來決定目前需要處理哪個裝置的哪個邏輯塊。

《Linux核心設計的藝術:圖解Linux作業系統架構設計與實作原理》——2.6 初始化塊裝置請求項結構

執行代碼如下:

注意:request[32]是一個由數組構成的連結清單;request[i].dev = −1說明了這個請求項還沒有具體對應哪個裝置,這個标志将來會被用來判斷對應該請求項的目前裝置是否空閑;request[i].next = null說明這時還沒有形成請求項隊列。初始化的過程和效果如圖2-12所示。

《Linux核心設計的藝術:圖解Linux作業系統架構設計與實作原理》——2.6 初始化塊裝置請求項結構

繼續閱讀