混合索引
這部分內容屬於操作系統對非空閒磁盤塊的管理(就是那些存放了文件數據的磁盤塊),即文件的物理結構,文件如何存放在外存中、文件分配方式。主要有三種:連續、鏈接和索引組織方式。
【題目】
- 在一個操作系統中,如果一個盤塊的大小爲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。
然後自己畫個矩陣就明白了。
假設是三行五列的():這題行列、塊號都是從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 |
沒什麼固定方法,還是自己舉個栗子推推看。
個人理解,有誤請指正~