作業系統之檔案管理
一 檔案和檔案系統
檔案管理:把所管理的程式和資料組織成一系列的檔案,並能進行合理的儲存、使用等操作。
1 基本概念
資料項:描述物件某種屬性的字符集;是資料組織中可以命名的最小邏輯資料單位。
記錄:一組相關資料項集合,描述物件某方面的屬性;
關鍵字:一個記錄中的一個或幾個資料項的集合,用於唯一的標識一個記錄。
檔案:由建立者定義的、具有檔名的一組相關元素的集合。
有結構:由相關記錄組成
無結構:字元流的形式
屬性:型別、長度、物理位置、建立時間
2檔案型別
按用途:系統、使用者、庫檔案
按資料形式:原始檔、目標檔案、可執行檔案
按存取控制屬性:只執行、只讀、讀寫
按組織和處理方式:普通檔案、目錄檔案、特殊(裝置)檔案
3.檔案系統模型
4 檔案操作
最基本的操作
建立/刪除檔案:分空間,形成FCB及目錄(名,地址)
讀、寫:按名檢索目錄,找到檔案地址,開始讀、寫
置檔案讀寫位置,實現隨機存取(尤其適用於記錄檔案)
還需要:“開啟”與“關閉”:
檔案讀/寫操作 = 檢索 + 讀/寫。
每次讀寫前都要重複檢索增大開銷。所以為了方便對同一檔案的多次讀寫,一次檢索到檔案後就在記憶體中記錄其位置,避免重複檢索。被記錄下位置的檔案就是“開啟”檔案;
不需要再操作檔案時,通過“關閉”這個系統呼叫關閉檔案——即從開啟檔案表上刪除其路徑資訊即可。
其他操作:改名、改所屬使用者、改訪問許可權等屬性的操作。
二 檔案的邏輯結構
1 檔案邏輯結構型別:
有結構檔案(記錄式)
①定長記錄
②變長記錄
如何組織記錄:
順序檔案。系統需按該型別記錄“長度”,通常定長。
索引檔案。系統需為檔案建立索引表。
索引順序檔案。建索引表,記錄每組記錄的第一個記錄位置。
無結構檔案(字元流式)
位元組為單位,利用讀寫指標依次訪問。
系統對該類檔案不需格式處理。
2 順序檔案:
兩種記錄排列方式
串結構:按記錄形成的時間順序序列排序。記錄順序與關鍵字無關;
順序結構:按關鍵字排序。
檢索方法:
從頭檢索,順序查詢要找的記錄,定長的計算相對快。
順序結構,可用折半查詢、插值查詢、跳步查詢等演算法提高效率
順序檔案的優缺點:
不方便隨機存取某條記錄,但適用批量存取的場合。
適合磁帶等特殊介質。
單記錄的查詢、修改等互動性差;增減不方便(改進辦法:把增刪改的記錄登記在一個事務檔案中,在某段時間間隔後再與原檔案合併更新)。
3索引檔案
為了方便單個記錄的隨機存取,為檔案建立一個索引表,記錄每項記錄在檔案的邏輯地址及記錄長度;該索引表按關鍵字排序,。
索引表內容:
索引號、長度、記錄地址指標
檢索效率
索引表本身即是個按記錄鍵排序的定長順序檔案,所以能利用演算法提高索引表檢索速度
一個索引檔案可以有多個索引表
為方便使用者根據不同記錄屬性檢索記錄,為順序檔案建立多個索引表,每種能成為檢索條件的域都配備一張索引表。
索引檔案的優缺點
適用於變長記錄,可提高檢索速度,實現直接存取
索引表增加了儲存開銷
4 索引順序檔案:
既要方便,又要降低開銷
本方式是最常見的一種邏輯檔案形式。
將順序檔案的所有記錄分組
還是建立索引表,但每個表項記錄的是每組第1條記錄的鍵值和地址。
組內記錄仍按順序方式檢索和使用。
檢索一條記錄的過程:
先計算記錄是在第幾組,然後再檢索索引確定組在哪裡後,在組內順序查詢。
可利用多級索引,進一步提高檢索效率。
5 直接檔案:
給定鍵值(如學號)不需順序檢索直接得到記錄的實體地址、
三 外存分配方式:
目標:有效利用外存空間,提高檔案訪問速度
常用三種方式:
連續分配
連結分配(不連續)
索引分配
通常一個系統中僅採用一種方式
採用的磁碟分配方式決定了檔案的“物理結構”
順序結構;連結式結構;索引式結構。
注意與邏輯結構名類似但不是一回事
缺點:
會產生外存碎片。可緊湊法彌補,但需要額外的空間,和記憶體緊湊相比更花時間。
建立檔案時要給出檔案大小;儲存空間利用率不高,不利於檔案的動態增加和修改;
適用於變化不大順序訪問的檔案,在流行的UNIX系統中仍保留了連續檔案結構。如對換區
2 連線分配:
可以為每一個檔案分配一組不相鄰的盤塊。
設定連結指標,將同屬於一個檔案的多個離散盤塊連結成一個連結串列,這樣形成的檔案稱為連結檔案。會有連結成本。
優點:
離散分配,消除外部碎片,提高利用率
同時適用於檔案的動態增長;修改容易
四 儲存空間管理:
為實現儲存空間分配,系統需要:
記住空閒儲存空間使用情況;為空間設定相應的資料結構;
提供對儲存空間分配、回收的操作手段。
典型的管理方法:
1)空閒表和空閒連結串列法
2)位示圖法
3)成組連結法
1)空閒表法和空閒連結串列法
常用於連續分配管理方式
資料結構
系統為外存上的所有空閒區建立一張空閒表
每個空閒區對應一個空閒表項
(表項包括序號、空閒區的第一個盤塊號、空閒盤塊數等。)
將所有空閒區按其起始盤塊號遞增的次序排列
空閒連結串列法
將所有空閒盤區拉成一條空閒鏈。
資料結構:鏈
根據構成鏈所用基本元素的不同,可把連結串列分成兩種形式:
空閒盤塊鏈
空閒盤區鏈
2)位示圖法——位示圖
利用二進位制的一位來表示一個盤塊的使用情況。
值為0表示對應的盤塊空閒,為1表示已分配。有的系統則相反。
磁碟上的所有盤塊都有一個二進位制位與之對應,這樣由所有盤塊所對應的位構成一個集合,稱為位示圖。
總塊數=m*n。可用m*n個位數來構成位示圖,可看成是二維陣列(資料結構)
3)成組連結法
中心思想:
所有盤塊按規定大小劃分為組;
組間建立連結;
組內的盤塊藉助一個系統棧可快速處理,且支援離散分配回收。