OS對磁盤塊的管理

混合索引

這部分內容屬於操作系統對非空閒磁盤塊的管理(就是那些存放了文件數據的磁盤塊),即文件的物理結構,文件如何存放在外存中、文件分配方式。主要有三種:連續、鏈接和索引組織方式。
在這裏插入圖片描述
【題目】

  1. 在一個操作系統中,如果一個盤塊的大小爲1KB,每個盤塊號佔 4 個字節,採用直接地址(爲10塊)、一次間接、二次間接及三次間接的混合索引結構保存文件。那麼,一個進程要訪問偏移量爲287744B處的數據時,需要經過幾次間接尋址?

【解答】

  • 由題中盤塊的大小和盤塊號的大小可知,每個盤塊可以放256個地址;
  • 則邏輯塊號爲287744 / 256 = 1124,塊內偏移量爲287744 % 256 = 0;
  • 又因爲10 + 256 < 1124 < 10 + 256 + 256 * 256
  • 而1124 – (10 + 256) = 858
  • 858 / 256 = 3, 858 % 256 = 90()
  • 故可從FCB的第11個地址項(0~9是直接地址項,10是一次間址項,11是二次間址項),即二次間址項中得到二次間址塊的地址
  • 讀入二次間址塊並從它的第3項中獲得一個一次間址塊的地址,並從它的第90項中獲得對應的物理盤塊號
  • (文件數據)塊內偏移量爲0

故:由於文件的FCB已經在內存,訪問偏移量爲287744B處的數據時,需要經過兩次間接尋址(第一次是讀入二次間址塊,第二次是讀入一次間址塊)

示意圖:
我認爲是這樣的:
在這裏插入圖片描述
在這裏插入圖片描述


位示圖法

這屬於對空閒磁盤塊的管理,即文件存儲空間的管理的內容。主要有空閒表法,空閒鏈表法、位示圖法和成組鏈接法。

在這裏插入圖片描述
【題目】
2. 使用位示圖:1行開始共20行、1列開始共30列來表示空閒盤塊狀態,設首盤塊號爲1。假如當分配一個盤塊號爲140時,其在位示圖中的行、列數應爲多少?當釋放一個盤塊號爲 301 時,其所在位示圖中的行、列數爲多少?(行號、列號和盤塊號都是從1開始編號)

【解答】

這種問題就是自己要注意行號、列號和塊號分別是從什麼開始,是0還是1。
然後自己畫個矩陣就明白了。

假設是三行五列的(353*5):這題行列、塊號都是從1開始的。

行號/列號 1 2 3 4 5
1 1 2 3 4 5
2 6 7 8 9 10
3 11 12 13 14 15

可以看出知道盤塊號block、行數m和列數n,行號i和列號j的推導:

i = block / n + 1;
j = block % n;
if( block % n == 0){
	i--;
}

補充說明:如果盤塊號是列數的倍數,也就是在最後一列的盤塊號,可以看出行號不需要加1,那第一行來說,1~4除列數5都是0,加1才能得到正確的行數;而如果盤塊號是5,除列數就剛好是行數1了。

行號/列號 1 2 3 4 5
1 1 2 3 4 5

沒什麼固定方法,還是自己舉個栗子推推看。
個人理解,有誤請指正~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章