linux的塊裝置層

2022-08-26 19:33:14 字數 414 閱讀 2896

ll_rw_block()是塊裝置驅動層,向上提供按block讀寫塊裝置到某個記憶體位址的(是以page為目標單位)方法.

bread()是塊裝置緩衝層,磁碟上的block用頁快取.先從這個快取裡找,找不到再呼叫ll_rw_block()讀進來.

各個檔案系統,要向vfs層提供read_inode()這樣的介面,而read_inode()的內部,就會用到bread()這樣的函式.

void ll_rw_block(int rw, int nr, struct buffer_head *bhs);

//rw:讀寫標誌位, nr:bhs長度, bhs:要讀寫的資料陣列

struct

buffer_head ;

摘自(這篇寫的特別好): 22.linux-塊裝置驅動之框架詳細分析(詳解) 

塊裝置層分析(1)

一 綜述 圖1是塊裝置操作的乙個分層實現圖。當乙個程序呼叫read讀取乙個檔案時,核心執行如下乙個過程 首先,它通過vfs層去讀取要到的檔案塊有沒有已經被cache了,這個cache由乙個buffer head結構讀取。如果要讀取的檔案塊還沒有被cache,則就要從檔案系統中去讀取了,這就是檔案系統...

Linux塊裝置驅動

塊裝置提供塊裝置提供裝置的訪問,裝置的訪問,可以隨機的以固定大小的塊傳輸資料,例如我們最為常見的磁碟裝置,當然塊裝置和字元裝置有較大差別,塊裝置有自己的驅動介面。簡單來說,核心決定乙個塊是固定的4096 位元組,當然該值可以隨著依賴檔案系統的變化而改變。塊裝置驅動採用register blkdev向...

Linux塊裝置驅動之記憶體模擬塊裝置

用記憶體代替塊裝置的總結,相對來簡單得多,對記憶體操作想必大家都很熟悉,直接分配一塊記憶體就可以直接讀寫操作了 參考 drivers block xd.c drivers block z2ram.c define ramblock size 1024 1024 乙個扇區是512位元組 static ...