作業系統——第八章筆記(二)
儲存空間的管理
1.為實現儲存空間分配,系統需要:
記住空閒儲存空間使用情況;為空間設定相應的資料結構;
提供對儲存空間分配、回收的操作手段。
2.典型的管理方法:
2.1空閒表和空閒連結串列法
空閒表法(常用於連續分配管理方式):
1)資料結構
系統為外存上的所有空閒區建立一張空閒表
每個空閒區對應一個空閒表項(表項包括序號、空閒區的第一個盤塊號、空閒盤塊數等)
將所有空閒區按其起始盤塊號遞增的次序排列,如右圖。
2)儲存空間的分配與回收操作
與記憶體的動態分配類似,同樣可採用首次適應演算法、迴圈首次適應演算法等。
回收主要解決對資料結構的資料修改。
應該說明,雖然很少採用連續分配方式,然而在外存的管理中,由於它具有較高的分配速度,可減少訪問磁碟的I/O頻率,故它在諸多分配方式中仍佔有一席之地。(如實現虛擬用的部分外存就是連續分配方式)
空閒連結串列法(將所有空閒盤區拉成一條空閒鏈):
根據構成鏈所用基本元素的不同,可把連結串列分成兩種形式:
1)空閒盤塊鏈
將磁碟上的所有空閒空間,以盤塊為單位拉成一條鏈。
因建立檔案而請求分配空間時,系統從鏈首依次摘下適當數目的空閒盤塊分配給使用者。
因刪除檔案而釋放儲存空間時,系統將回收的盤塊依次插入空閒盤塊鏈的末尾。
優點:分配和回收一個盤塊的過程非常簡單,但為一個檔案分配盤塊時,可能要重複操作多次。
特點:分配回收簡單。連結串列長,大量分配時需要操作的指標多。
2)空閒盤區鏈
將所有空閒盤區拉成一條鏈。每個盤區上含有:
指示下一空閒盤區的指標、本盤區大小等資訊
分配通常採用首次適應演算法。回收盤區時,將回收區與相鄰的空閒盤區相合並。
為提高檢索速度,可以採用顯式方法,為空閒盤區建立一張連結串列放在記憶體中。
分配、回收操作涉及的鏈式資料結構的處理方便
特點:連結串列長度不定,分配時操作的指標數量相對較少,但分配回收操作相對複雜。
2.2位示圖法——位示圖
1)利用二進位制的一位來表示一個盤塊的使用情況。
值為0表示對應的盤塊空閒,為1表示已分配。有的系統則相反。
磁碟上的所有盤塊都有一個二進位制位與之對應,這樣由所有盤塊所對應的位構成一個集合,稱為位示圖。
2)總塊數=mn。可用m
盤塊的分配與回收
根據位示圖進行盤塊分配:
a)順序掃描位示圖。找到為0的二進位制位。
b)將所找到的一個或一組二進位制位,轉換成與之對應的盤塊號。進行分配操作。
盤塊號計算公式為:盤塊號=列總數*(i-1)+ j;(注意下標i,j從1開始)
c)修改位示圖。
根據位示圖進行盤塊回收:
a)將回收盤塊的盤塊號轉換成位示圖中的行號和列號。轉換公式為:i=(盤塊號-1)div列數+1;j=(盤塊號-1)mod列數+1
Div 求商,mod 取餘,公式中的i、j都是從1開始的(如12號盤塊轉換後為1,12)
修改位示圖。
優點:從位示圖中很容易找到一個或一組相鄰接的空閒盤塊。
但限於容量問題,常用於微型機和小型機中。
3)成組連結法
大型檔案系統,空閒表或空閒連結串列太長不方便管理操作。
UNIX系統中採用成組連結法,這是將兩種方法結合而形成的一種空閒盤塊管理方法。
中心思想:
a)所有盤塊按規定大小劃分為組;
b)組間建立連結;
c)組內的盤塊藉助一個系統棧可快速處理,且支援離散分配回收。
連結串列長度上限固定
組內的盤塊藉助一個系統棧可快速處理,且分配回收比較簡單。
支援離散分配回收。
2.2.1空閒盤塊的組織
空閒盤塊號棧。
a)用來存放當前可用的一組空閒盤塊的盤塊號(最多含100個號)
b)棧中尚有的空閒盤塊號數N。(N兼具棧頂指標用。棧底為S.free(0),棧滿時棧頂到達S.free(99),N=100,表示有100個盤塊供使用。
連結
a)每一組的第一個盤塊記錄下一組的盤塊號,形成了一條鏈。
b)總將鏈的第一組盤塊總數和所有的盤塊號,記入棧,作為當前可供分配的空閒盤塊號。
2.2.2空閒盤塊的分配與回收
分配盤塊時,須呼叫分配過程來完成。
a)先檢查空閒盤塊號棧是否上鎖,如沒有,便從棧頂取出一空閒盤塊號,將與之對應的盤塊分配給使用者,然後將棧頂指標下移一格。
b)若該盤塊號已是棧底,即S.free(0),到達當前棧中最後一個可供分配的盤塊號。
c)讀取該盤塊號所對應的盤塊中的資訊:即下一組可用的盤塊號入棧。
d)原棧底盤塊分配出去。修改棧中的空閒盤塊數。
回收
a)回收盤塊號記入棧頂,空閒數N加1
b)N達到100時,若再回收一塊,則將該100條資訊填寫入新回收塊。
3.磁碟
3.1 磁碟容錯(SFT,system fault tolerance)
3.1.1 防止磁碟故障造成的檔案不安全
3.1.2 SFT I:磁碟表面故障
1)雙目錄、雙檔案分配表(空間冗餘)
2)寫後讀校驗、熱修復重定向(時間操作冗餘)
寫入磁碟後再讀回記憶體做一致性校驗
熱修復寫過程:從壞道重定向到專區並記錄
3.1.3 SFT II:磁碟驅動器、控制器故障
1)驅動器故障:磁碟映象
2)控制器故障:磁碟雙工——並行控制器,分離搜尋加快讀取
3.1.4 SFT III:高階容錯技術
1)雙機熱備份
2)雙機互備份
3)公用磁碟模式
3.2資料一致性
一個數據分別儲存到多個檔案中,典型的如資料庫
3.2.1保證資料一致性:
高可靠儲存器(冗餘保證穩定,磁碟雙工)+ 一致性軟體
3.2.2 概念
事務:對資料各處儲存位置訪問、修改使其維持一致性的一次操作。
事務記錄:記錄事務執行時資料項修改全部資訊的資料結構:事務名、資料項名、舊值、新值。
恢復演算法:利用事務記錄表處理已完成、未完成事務。
檢查點:每隔一段時間,將記憶體中的事務記錄表、已修改資料、檢查點輸出到穩定儲存器,
3.2.3併發控制
3.2.4重複資料的一致性
3.3磁碟提速
3.3.1磁碟快取記憶體
3.3.2提前讀
3.3.3延遲寫
3.3.4優化物理塊分佈
3.3.5虛擬盤
3.3.6磁碟冗餘陣列(高速、大容量磁碟系統)