作業系統-10——檔案管理
檔案和檔案系統
1.檔案(File)
1.1 定義:儲存在外存上具有標識名的一組相關字元流或記錄的集合。可長期儲存和共享。
1.2 分類:記錄式檔案、流式檔案。(按檔案結構劃分)
#記錄式檔案:資料有4個結構層次:域(欄位)、記錄、檔案、資料庫。
##磁碟I/O時需將多條記錄組裝成塊才能I/O。以下是三種記錄組塊的方法。
###固定組塊:記錄長度固定,若干完整的記錄放在一塊,塊後部可能會有內碎片。
###可變長度跨域式組塊:記錄長度可變,儘可能佔滿一塊。有些記錄可能跨越兩塊,則用指標連結
###可變長度非跨越式組塊:記錄長度可變,但不跨快,有塊內碎片。一個記錄的長度不能超過塊尺寸。
#流式檔案:UNIX將所有檔案都看做由位元組流組成,如源程式。目的碼等。
2.檔案系統(File System)
2.1 定義:OS(作業系統)中負責儲存,管理和操作檔案的一組系統實用程式及所需的資料結構。
2.2 功能:
(使用者角度)
#建立、刪除、開啟、關閉、讀、寫檔案和目錄;
#維護檔案屬性:檔名,所有者、建立/修改時間、訪問許可權,長度,外存地址等。
#檔案的透明存取(按名存取)、共享與保護。
(作業系統角度)
#目錄管理,訪問(許可權)控制,訪問方法,檔案操作函式,記錄組塊,檔案分配,磁碟管理和排程。
3.目錄
#每個檔案都有一個目錄項(檔案控制塊FCB)用以儲存它的屬性。
#每個目錄本身也是一個檔案。目錄檔案是佔據整數個磁碟塊的記錄式檔案,內容是該目錄下所有檔案目錄項的集合。
(PS:即目錄本身是一個檔案,必須佔據整數個磁碟塊空間並且本身是記錄式檔案。目錄儲存的內容是什麼呢?儲存的是該目錄下所有檔案的目錄項的集合,即目錄儲存的是目錄項集合。)
#每一個目錄至少包含了當前目錄
#結構:樹形目錄。檔案由檔案路徑名和檔名標識。
4.訪問許可權
#訪問許可權層次:無許可權,知道檔案存在,執行,讀,在檔案尾追加資料,寫,更改其他使用者的訪問許可權,刪除檔案。
(每一項許可權都隱含了前面的許可權,即高許可權包括了低許可權。)
!#使用者刪除檔案時,OS不可能刪除此檔案所在的目錄,但可刪除與此檔案關聯的目錄項,檔案控制塊,記憶體緩衝區。
!#檔案首次被開啟時,OS會變檔案控制塊讀到記憶體中。
5.檔案分配
3種檔案分配方法:連續分配,連結分配,索引分配。
#連續分配
##為檔案分配一組相鄰的盤塊。(可用FF,BF,WF 分配方法。詳情可見 “作業系統——記憶體分配”)
##檔案屬性簡單:起始塊號,塊數。
##順序訪問和隨機訪問方便:尋道少,I/O快。(優點)
##磁碟外碎片多,需緊縮;檔案不能動態增長。(缺點)
!!#增加或刪除塊需要將所有後續塊向後移或向前移(先讀到記憶體在再寫回磁碟)。
#連結分配
##每個磁碟塊都有一個連結指標,將該檔案的多個離散磁碟塊連結成一個連結串列。
##動態分配:沒有外碎片(優點);尋道多,I/O慢(缺點)。
!!#FCB中有<起始塊號>,下一塊的塊號存放在本次盤塊的末端。增加或刪除塊需要將所有前續塊讀到記憶體,讀取或修改一個塊的塊號。
#索引分配
##把所有磁碟塊的地址集中到索引塊中。
##沒有外碎片;隨機訪問。(優點)
##增加了索引塊的開銷。(缺點)
##基於單塊盤塊進行索引分配
##基於長度可變的(磁碟塊)分割槽進行索引分配
同樣一個索引塊的開銷,可為檔案分配更多的磁碟塊。
6.磁碟空閒空間管理
#管理方法:點陣圖,空閒區鏈,索引表,空閒塊列表。
6.1.點陣圖(bitmap)
# 1bit => 1塊的狀態 0:空閒,1:已分配
分配磁碟塊時:磁碟塊號 i = 字號*字長+位號
回收i號磁碟塊時:字號 = INT (i/字長),位號 = i mod 字長。
6.2空閒區鏈
#將所有空閒盤塊區形成一個連結串列。
6.3索引表
#將所有空閒盤塊區的“首塊號+塊數”放在一個索引表中。
6.4空閒塊列表
#將所有空閒盤塊數放在磁碟一個保留區裡。此表可部分複製到記憶體,可排序以實現連續分配。