日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

扇区、磁盘块、页、页框、缓冲区之间的关系!

發布時間:2025/6/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扇区、磁盘块、页、页框、缓冲区之间的关系! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ?扇區、磁盤塊、頁、頁框、緩沖區之間的關系!

扇區是塊設備傳輸數據的基本單元,也就是說它是塊設備中最小的尋址單位,扇區通常的大小為512B。

塊是內核對文件系統的一種抽象,也就是說內核執行的所有磁盤操作都是以塊為基本單位的。

可以簡單的將扇區和塊理解為:扇區是硬件設備傳輸數據的最小單位,而塊是操作系統傳輸數據的最小單位。一個塊通常對應一個或多個相鄰的扇區,由于內核將塊作為對文件系統操作的最小單位,因此VFS將其看作是單一的數據單元。

當內核從磁盤讀入數據后或者即將寫數據到磁盤時,它需要將數據寫入一個緩沖區。緩沖區其實就是物理頁框的一部分,因此一個物理頁框可能包含一個或多個塊緩沖區。根據上述描述的關系,包含磁盤數據的物理頁框構造如下圖:

正如上面所說,塊緩沖區是頁框的一部分,因此不用特別描述塊緩沖區中的數據。每個塊緩沖區都對應一個塊緩沖區頭buffer_head,他們的關系如同物理頁框和物理頁框描述符,前者用來存儲數據,后者是對前者的屬性以及控制信息的描述。塊緩沖區頭、塊緩沖區以及頁框的關系如下:


內核中使用buffer_head結構來描述緩沖區頭,該結構中的部分字段解釋如下:

struct buffer_head {unsigned long b_state; struct buffer_head *b_this_page;struct page *b_page; atomic_t b_count; u32 b_size; sector_t b_blocknr; char *b_data; struct block_device *b_bdev;bh_end_io_t *b_end_io; void *b_private; struct list_head b_assoc_buffers; }

b_state:對塊緩沖區狀態的描述。
b_this_page:在一個頁框中,可能包含多個塊緩沖區。一個頁框內的所有緩沖區形成循環鏈表,該字段指向下一個塊緩沖區。
b_page:指向緩沖區所在頁框的描述符。
b_size:塊緩沖區大小。
b_data:當前塊在作為緩沖的頁框內的位置。
b_bdev:指向塊設備的指針

---------------------?---------------------?---------------------?---------------------?---------------------?---------------------?---------------------?

概念


扇區:磁盤的最小存儲單位;
磁盤塊:文件系統讀寫數據的最小單位;
頁:內存的最小存儲單位;


聯系


一個磁盤塊由連續幾個(2^n)扇區組成;
頁的大小為磁盤塊大小的2^n倍;


查看


頁大小查看: getconf PAGE_SIZE,常見為4K;
磁盤塊大小查看:stat /boot/|grep “IO Block”,常見為4K;
扇區大小查看:fdisk -l,常見為512Byte;


?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的扇区、磁盘块、页、页框、缓冲区之间的关系!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。