扇区、磁盘块、页、页框、缓冲区之间的关系!
? ? ? ? ? ?扇區(qū)、磁盤塊、頁、頁框、緩沖區(qū)之間的關(guān)系!
扇區(qū)是塊設(shè)備傳輸數(shù)據(jù)的基本單元,也就是說它是塊設(shè)備中最小的尋址單位,扇區(qū)通常的大小為512B。
塊是內(nèi)核對(duì)文件系統(tǒng)的一種抽象,也就是說內(nèi)核執(zhí)行的所有磁盤操作都是以塊為基本單位的。
可以簡(jiǎn)單的將扇區(qū)和塊理解為:扇區(qū)是硬件設(shè)備傳輸數(shù)據(jù)的最小單位,而塊是操作系統(tǒng)傳輸數(shù)據(jù)的最小單位。一個(gè)塊通常對(duì)應(yīng)一個(gè)或多個(gè)相鄰的扇區(qū),由于內(nèi)核將塊作為對(duì)文件系統(tǒng)操作的最小單位,因此VFS將其看作是單一的數(shù)據(jù)單元。
當(dāng)內(nèi)核從磁盤讀入數(shù)據(jù)后或者即將寫數(shù)據(jù)到磁盤時(shí),它需要將數(shù)據(jù)寫入一個(gè)緩沖區(qū)。緩沖區(qū)其實(shí)就是物理頁框的一部分,因此一個(gè)物理頁框可能包含一個(gè)或多個(gè)塊緩沖區(qū)。根據(jù)上述描述的關(guān)系,包含磁盤數(shù)據(jù)的物理頁框構(gòu)造如下圖:
正如上面所說,塊緩沖區(qū)是頁框的一部分,因此不用特別描述塊緩沖區(qū)中的數(shù)據(jù)。每個(gè)塊緩沖區(qū)都對(duì)應(yīng)一個(gè)塊緩沖區(qū)頭buffer_head,他們的關(guān)系如同物理頁框和物理頁框描述符,前者用來存儲(chǔ)數(shù)據(jù),后者是對(duì)前者的屬性以及控制信息的描述。塊緩沖區(qū)頭、塊緩沖區(qū)以及頁框的關(guān)系如下:
內(nèi)核中使用buffer_head結(jié)構(gòu)來描述緩沖區(qū)頭,該結(jié)構(gòu)中的部分字段解釋如下:
b_state:對(duì)塊緩沖區(qū)狀態(tài)的描述。
b_this_page:在一個(gè)頁框中,可能包含多個(gè)塊緩沖區(qū)。一個(gè)頁框內(nèi)的所有緩沖區(qū)形成循環(huán)鏈表,該字段指向下一個(gè)塊緩沖區(qū)。
b_page:指向緩沖區(qū)所在頁框的描述符。
b_size:塊緩沖區(qū)大小。
b_data:當(dāng)前塊在作為緩沖的頁框內(nèi)的位置。
b_bdev:指向塊設(shè)備的指針
---------------------?---------------------?---------------------?---------------------?---------------------?---------------------?---------------------?
概念
扇區(qū):磁盤的最小存儲(chǔ)單位;
磁盤塊:文件系統(tǒng)讀寫數(shù)據(jù)的最小單位;
頁:內(nèi)存的最小存儲(chǔ)單位;
聯(lián)系
一個(gè)磁盤塊由連續(xù)幾個(gè)(2^n)扇區(qū)組成;
頁的大小為磁盤塊大小的2^n倍;
查看
頁大小查看: getconf PAGE_SIZE,常見為4K;
磁盤塊大小查看:stat /boot/|grep “IO Block”,常見為4K;
扇區(qū)大小查看:fdisk -l,常見為512Byte;
?
總結(jié)
以上是生活随笔為你收集整理的扇区、磁盘块、页、页框、缓冲区之间的关系!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flash芯片(硬盘)与RAM芯片(内存
- 下一篇: 系统编程(ISP)与应用编程(IAP)的