1. 程式人生 > >第七、八章 檔案與磁碟空間管理

第七、八章 檔案與磁碟空間管理

檔案和檔案系統

1.基本概念

資料項:

描述物件某種屬性的字符集;是資料組織中可以命名的最小邏輯資料單位。
記錄:一組相關資料項集合,描述物件某方面的屬性;

關鍵字:

一個記錄中的一個或幾個資料項的集合,用於唯一的標識一個記錄。

檔案:

由建立者定義的、具有檔名的一組相關元素的集合。

有結構:由相關記錄組成
無結構:字元流的形式
屬性:型別、長度、物理位置、建立時間

2.檔案型別

按用途:系統、使用者、庫檔案
按資料形式:原始檔、目標檔案、可執行檔案
按存取控制屬性:只執行、只讀、讀寫
按組織和處理方式:普通檔案、目錄檔案、特殊(裝置)檔案

3.檔案系統模型

系統管理檔案模型

在這裡插入圖片描述

4.檔案操作

最基本的操作

建立/刪除檔案:分空間,形成FCB及目錄(名,地址)
讀、寫:按名檢索目錄,找到檔案地址,開始讀、寫
設定檔案讀寫位置,實現隨機存取
還需要:“開啟”與“關閉”
檔案讀/寫操作 = 檢索 + 讀/寫
其他操作:改名、改所屬使用者、改訪問許可權等屬性的操作。

檔案的邏輯結構

1.檔案邏輯結構的型別

(1)有結構檔案(記錄式)
①定長記錄
②變長記錄
組織記錄
1>順序檔案。系統需按該型別記錄“長度”,通常定長。
兩種記錄排列方式
串結構:按記錄形成的時間順序序列排序。記錄順序與關鍵字無關;
順序結構

:按關鍵字排序。
檢索方法
從頭檢索,順序查詢要找的記錄,定長的計算相對快。
順序結構,可用折半查詢、插值查詢、跳步查詢等演算法提高效率
具體的定址過程
第i條記錄地址(定長) :
讀寫指標 + 記錄長度: ptr + i*L
第i條記錄地址(變長) :
掃描或讀取前面0~i-1條記錄
第i條記錄地址(變長)
變長記錄資料前用1位元組儲存每條記錄長度,順序掃描,但不用把記錄全掃描完
優缺點
1.不方便隨機存取某條記錄,但適用批量存取的場合。
2.適合磁帶等特殊介質。
3.單記錄的查詢、修改等互動性差;增減不方便
—>改進辦法:把增刪改的記錄登記在一個事務檔案中,在某段時間間隔後再與原檔案合併更新。
2>索引檔案
。系統需為檔案建立索引表。
索引表內容
索引號、長度、記錄地址指標
檢索效率:
索引表本身即是個按記錄鍵排序的定長順序檔案,所以能利用演算法提高索引表檢索速度
一個索引檔案可以有多個索引表
為方便使用者根據不同記錄屬性檢索記錄,為順序檔案建立多個索引表,每種能成為檢索條件的域都配備一張索引表。
優缺點:
1.適用於變長記錄,可提高檢索速度,實現直接存取
2.索引表增加了儲存開銷
3>索引順序檔案。建索引表,記錄每組記錄的第一個記錄位置。
既要方便,又要降低開銷
最常見的一種邏輯檔案形式。
將順序檔案的所有記錄分組
還是建立索引表,但每個表項記錄的是每組第1條記錄的鍵值和地址
組內記錄仍按順序方式檢索和使用。
檢索一條記錄的過程
先計算記錄是在第幾組,然後再檢索索引確定組在哪裡後,在組內順序查詢。
可利用多級索引,進一步提高檢索效率。
(2)無結構檔案(字元流式)
位元組為單位,利用讀寫指標依次訪問。
系統對該類檔案不需格式處理。

外存分配方式

目標:有效利用外存空間,提高檔案訪問速度
常用三種方式:

①連續分配

缺點
(1)會產生外存碎片。可緊湊法彌補,但需要額外的空間,和記憶體緊湊相比更花時間。
(2)建立檔案時要給出檔案大小;儲存空間利用率不高,不利於檔案的動態增加和修改;

②連結分配(不連續)

可以為每一個檔案分配一組不相鄰的盤塊。
1>隱式連結
2>顯式連結
優點:
離散分配,消除外部碎片,提高利用率
同時適用於檔案的動態增長;修改容易

③索引分配

1>單級索引分配
索引形式適合大檔案
中、小型檔案,只需若干連結即可。若用索引分配方式,用一個盤塊存放少量索引資訊反而不適用。

2>多級索引
若檔案較大,存放索引表也需要多個盤塊(索引盤塊)。
索引盤塊亦需要按順序管理起來

3>混合組織索引
多種索引方式相結合
通常一個系統中僅採用一種方式
採用的磁碟分配方式決定了檔案的“物理結構”

儲存空間的管理

為實現儲存空間分配,系統需要:
記住空閒儲存空間使用情況;為空間設定相應的資料結構;
提供對儲存空間分配、回收的操作手段。

1.典型的管理方法:

1)空閒表法

常用於連續分配管理方式

①資料結構

1>系統為外存上的所有空閒區建立一張空閒表
2>每個空閒區對應一個空閒表項
3>將所有空閒區按其起始盤塊號遞增的次序排列

②儲存空間的分配與回收操作

1>與記憶體的動態分配類似,同樣可採用首次適應演算法、迴圈首次適應演算法等。
2>回收主要解決對資料結構的資料修改。

2)空閒連結串列法

將所有空閒盤區拉成一條空閒鏈。

資料結構:鏈

根據構成鏈所用基本元素的不同,可把*連結串列分成兩種形式:
1>空閒盤塊鏈
分配回收簡單。連結串列長,大量分配時需要操作的指標多
2>空閒盤區鏈
連結串列長度不定,分配時操作的指標數量相對較少,但分配回收操作相對複雜。

3)位示圖法

利用二進位制的一位來表示一個盤塊的使用情況。
值為0表示對應的盤塊空閒,為1表示已分配。有的系統則相反。
磁碟上的所有盤塊都有一個二進位制位與之對應,這樣由所有盤塊所對應的位構成一個集合,稱為位示圖。
總塊數=mn。可用mn個位數來構成位示圖,可看成是二維陣列。

盤塊的分配與回收

根據位示圖進行盤塊分配:
1>順序掃描位示圖。找到為0的二進位制位。
2>將所找到的一個或一組二進位制位,轉換成與之對應的盤塊號。進行分配操作。
盤塊號計算公式為:盤塊號 = 列總數
(i-1)+ j;(j從1開始)
3>修改位示圖。*
根據位示圖進行盤塊回收:
1>將回收盤塊的盤塊號轉換成位示圖中的行號和列號。
轉換公式為:i=(盤塊號-1)div列數+1;j=(盤塊號-1)mod列數+1
2>修改位示圖。

優點:

1>從位示圖中很容易找到一個或一組相鄰接的空閒盤塊。
2>但限於容量問題,常用於微型機和小型機中。

3)成組連結法

中心思想:

1>連結串列長度上限固定
2>組內的盤塊藉助一個系統棧可快速處理,且分配回收比較簡單。
3>支援離散分配回收。

在這裡插入圖片描述
①空閒盤塊的組織
②空閒盤塊的分配與回收

目錄管理

1.FCB內容

(1)包含資訊

1>基本資訊類
包括檔名,檔案物理位置,檔案邏輯結構,檔案的物理結構。
2>存取控制資訊類
包括檔案主的存取許可權,核准使用者的存取許可權和一般使用者的存取許可權。
3>使用資訊類
建立日期和時間、檔案上次修改的日期和時間
當前使用資訊:開啟該檔案的程序數、是否被程序鎖住、是否已修改等。

2.索引結點

索引結點由外存到記憶體的過程中有不同的形式:
(1)磁碟索引結點
*存放在磁碟上的索引結點。主要包括以下內容:*檔案主識別符號、檔案型別、檔案存取許可權、檔案實體地址、檔案長度、檔案連線計數、檔案存取時間。
記憶體索引結點
檔案被開啟後,將磁碟索引結點拷貝到記憶體索引結點中以便使用。比磁碟索引結點增加了以下內容:索引結點編號、狀態、訪問計數、檔案所屬檔案系統的邏輯裝置號、連結指標。

3.目錄結構

目錄結構的組織,關係到檔案系統的存取速度,也關係到檔案的共享性和安全性。
組織好檔案的目錄,是設計好檔案系統的重要環節。
目前常用的目錄結構形式有
1>單級目錄
最簡單的目錄結構。
整個檔案系統中只建立一張目錄表,每個檔案一個目錄項,含有檔案相關資訊。
每建立一個新檔案:
先檢索所有的目錄項,保證檔名唯一。
獲得一空白目錄項,填入相關資訊,修改狀態位。

刪除一個檔案:
找到對應目錄項,回收檔案所佔用空間
清除目錄項

優點:

簡單、能實現目錄管理的基本功能——按名存取。

缺點:

1.檔案檢索時需搜遍整個目錄檔案,範圍大速度慢。
2.不允許重名。名字過多難於記憶,對於多使用者環境重名難以避免。
3.不便於實現檔案共享,一般只適用單機環境。
2>兩級目錄
為每一個使用者建立一個單獨的使用者檔案目錄UFD,UFD由使用者所有檔案的檔案控制塊組成。
系統建立一個主檔案目錄MFD, MFD中每個使用者目錄檔案都佔有一個目錄項,其中包括使用者名稱和指向UFD的指標

特點

克服了單級目錄的缺點

優點:

1.提高了檢索目錄的速度。
2.在不同的目錄中可重名。
3.不同使用者還可以使用相同/不同的檔名來訪問系統中的同一個共享檔案。

缺點:

不提供子目錄操作,還不方便;各使用者之間被完全隔離的話使用者訪問其他使用者檔案時,不方便合作。
3>多級目錄
適用於較大的檔案系統管理
在檔案數目較多時,便於系統和使用者將檔案分散管理

4.目錄查詢技術

使用者要訪問一個已存檔案

1>目錄資料調入記憶體;
2>按名檢索:系統利用提供的檔名對目錄(根據目錄層次,需要做的檢索次數也不同)進行查詢
3>找該檔案控制塊
4>讀FCB或對應索引結點;
5>從檔案實體地址換算出檔案在磁碟上的物理位置;
6>最後通過磁碟驅動程式,將所需檔案讀入記憶體。

目錄查詢方式:

線性檢索法
又稱為順序檢索法。
單級目錄中
使用者提供檔名,順序查詢檔案目錄。
樹型目錄中
使用者提供路徑名,如/user/ast/mbox
對多級目錄進行逐層查詢。
②Hash方法

檔案共享與保護

1.檔案共享

多個使用者共享一份檔案,只保留檔案的一份副本,節約儲存空間

方式:
①索引結點法

基本FCB法:
名+詳細資訊。
直接在檔案目錄中包含檔案的實體地址,該方法實現的共享不適用檔案動態變化。一個使用者對檔案的修改,對其他使用者不可見,共享檔案的FCB資訊記錄同步更新困難。

檔名+索引結點指標。
一個使用者修改指標指向地址裡的內容,指標不變,其他使用者通過指標總能感知索引結點中的最新內容
索引結點中增加count計數

②符號鏈法

1>建立一個link型別的檔案:“檔名+共享檔案路徑”
2>檔案主人刪除檔案,共享者只會出現找不到檔案錯誤。不會發生共享檔案刪除後出現懸空指標的情況。
3>該方法適用於網路檔案共享,但根據路徑檢索共享檔案的目標位置增加了訪問開銷,link檔案獨佔索引結點也耗費一定的空間。

2.磁碟容錯

防止磁碟故障造成的檔案不安全

①SFT I:磁碟表面故障

雙目錄、雙檔案分配表(空間冗餘)
寫後讀校驗、熱修復重定向(時間操作冗餘)
寫入磁碟後再讀回記憶體做一致性校驗
熱修復寫過程:從壞道重定向到專區並記錄

②SFT II:磁碟驅動器、控制器故障

驅動器故障:磁碟映象
控制器故障:磁碟雙工——並行控制器,分離搜尋加快讀取

③SFT III:高階容錯技術

雙機熱備份
雙機互備份
公用磁碟模式