第六章 文件管理
文件
數(shù)據(jù)項(xiàng)&記錄&文件
數(shù)據(jù)項(xiàng)分為:
- 基本數(shù)據(jù)項(xiàng):描述對(duì)象的某些屬性,例如學(xué)生的年齡,姓名學(xué)號(hào)等
- 組合數(shù)據(jù)項(xiàng):由若干個(gè)基本數(shù)據(jù)項(xiàng)組合而成
記錄:一組相關(guān)數(shù)據(jù)項(xiàng)的集合,用于描述一個(gè)對(duì)象在某方面的屬性
文件:文件是指由創(chuàng)建者所定義的、 具有文件名的一組相關(guān)元素的集合,可分為有結(jié)構(gòu)文件和無結(jié)構(gòu)文件兩種
- 有結(jié)構(gòu)文件:文件由若干個(gè)相關(guān)的記錄組成
- 無結(jié)構(gòu)文件:被看成一個(gè)字符流
文件的屬性
-
文件的類型
-
文件的長(zhǎng)度
-
文件的物理位置
-
文件的創(chuàng)立時(shí)間
文件系統(tǒng)模型
- 對(duì)象及其屬性:文件管理的對(duì)象有文件、目錄和文件存儲(chǔ)器
- 對(duì)對(duì)象操縱和管理的軟件集合。這是文件系統(tǒng)的核心部分,實(shí)現(xiàn)了
- 對(duì)文件存儲(chǔ)空間的管理
- 文件目錄管理
- 文件的邏輯地址向物理地址的轉(zhuǎn)換
- 文件的讀寫管理
- 文件的共享和保護(hù)
- 文件系統(tǒng)接口。文件系統(tǒng)向用戶提供的接口有命令接口、程序接口、圖形用戶接口三類,用戶可以通過它們來使用文件系統(tǒng)。
文件的邏輯結(jié)構(gòu)
文件的邏輯結(jié)構(gòu):從用戶觀點(diǎn)出發(fā),所觀察到的文件組織形式,是用戶可以直接處理的數(shù)據(jù)及結(jié)構(gòu),獨(dú)立于物理特性,又稱為文件組織
- 無結(jié)構(gòu)文件:流式文件
- 有結(jié)構(gòu)文件:由一組相似的記錄組成,又稱記錄式文件。每個(gè)記錄又有若干數(shù)據(jù)項(xiàng)組成
- 根據(jù)有結(jié)構(gòu)文件中的各條記錄在邏輯上如何組織可以分為三類
順序文件
順序文件:文件中的記錄一個(gè)接一個(gè)地順序排列
- 串結(jié)構(gòu):記錄之間的順序與關(guān)鍵字無關(guān)
- 順序結(jié)構(gòu):記錄之間的順序按關(guān)鍵字順序排列
- 對(duì)于可變長(zhǎng)記錄,無法實(shí)現(xiàn)隨機(jī)存取
- 對(duì)于定長(zhǎng)記錄,可隨機(jī)存取,串結(jié)構(gòu)無法快速檢索
- 增加/刪除一個(gè)記錄比較困難
索引文件
解決可變長(zhǎng)記錄的隨機(jī)存取
- 優(yōu)點(diǎn):將一個(gè)需要順序查找的文件改造成一個(gè)可隨機(jī)查找的文件,極大地提高了對(duì)文件的查找速度。
- 利用索引文件插入和刪除記錄也非常方便
- 缺點(diǎn):除了主文件外還需要配置索引表,增加了存儲(chǔ)開銷
索引順序文件
索引表是一個(gè)定長(zhǎng)記錄的串結(jié)構(gòu)的順序文件
- 基本克服了變長(zhǎng)記錄的順序文件不能隨機(jī)訪問,以及不便于記錄的刪除和插入的缺點(diǎn)
- 仍保留的順序文件的關(guān)鍵特征,即記錄是按關(guān)鍵字的順序組織起來的
多級(jí)索引順序文件
文件的物理結(jié)構(gòu)
對(duì)任一文件都存在兩種形式的結(jié)構(gòu)
- 文件的邏輯結(jié)構(gòu):從用戶觀點(diǎn)出發(fā),所觀察到的文件組織形式,是用戶可以直接處理的數(shù)據(jù)及結(jié)構(gòu),獨(dú)立于物理特性,又稱為文件組織
- 文件的物理結(jié)構(gòu):又稱為文件的存儲(chǔ)結(jié)構(gòu)。是指系統(tǒng)將文件存儲(chǔ)在外存上所形成的一種存儲(chǔ)組織形式,用戶看不見,與存儲(chǔ)介質(zhì)的存儲(chǔ)性能有關(guān)還和采用的外存分配方式有關(guān)
- 文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)都將影響文件檢索的速度
連續(xù)分配(順序分配)
順序文件結(jié)構(gòu)
連續(xù)分配要求為每個(gè)文件分配一組相鄰接的盤塊,一組盤塊的地址定義了磁盤上的一段線性地址。
- 把邏輯文件中的數(shù)據(jù)順序地存儲(chǔ)到物理上鄰接的各個(gè)數(shù)據(jù)塊中,這樣形成的物理文件可以順序讀取
- 文件目錄中為每個(gè)文件建立一個(gè)表項(xiàng),其中記載文件的第一個(gè)數(shù)據(jù)庫地址及文件長(zhǎng)度
- 對(duì)于順序文件連續(xù)讀寫多個(gè)數(shù)據(jù)庫內(nèi)容時(shí),性能較好
-
優(yōu)點(diǎn):
- 順序訪問容易,可以隨機(jī)存取可以很快檢索文件中的一個(gè)數(shù)據(jù)庫
- 順序訪問速度快
- 磁頭移動(dòng)距離短,效率高
-
缺點(diǎn):
- 要求有連續(xù)的存儲(chǔ)空間,可能會(huì)導(dǎo)致外部碎片,降低外存利用率【可以緊湊】
- 必須事先直到文件的長(zhǎng)度
- 空間利用率不高
- 不利于文件尺寸的動(dòng)態(tài)增長(zhǎng)
鏈接分配
-
鏈接文件:采用鏈接分配方式時(shí),可通過在每個(gè)盤塊上的鏈接指針,將同屬于一個(gè)文件的多個(gè)離散盤塊鏈接成一個(gè)鏈表,把形成的文件稱為鏈接文件
-
隱式鏈接
- 文件目錄的每個(gè)目錄項(xiàng)中,都須含有指向鏈接文件第一個(gè)盤塊和最后一個(gè)盤塊的指針,每個(gè)盤塊中都含有指向下一個(gè)盤塊的指針
- 主要問題:只適合順序訪問,對(duì)隨機(jī)訪問極其低效
- 為了提高檢索速度和減少指針?biāo)加玫拇鎯?chǔ)空間,可以將幾個(gè)盤塊組成一個(gè)簇
- 減少了查找時(shí)間和指針?biāo)加每臻g,但增大了內(nèi)部碎片
-
顯式鏈接
- 把用于鏈接文件各物理塊的指針,顯示地存放在內(nèi)存的一張鏈接表中
- 整個(gè)磁盤僅設(shè)置一張文件分配表(FAT)
- 分配給文件的所有盤塊號(hào)都存放在該表中
- 凡是屬于某一文件的第一個(gè)盤塊號(hào),均作為文件地址被填入相應(yīng)文件的FCB的物理地址字段中
- 查找記錄的過程是在內(nèi)存中進(jìn)行的,因而不僅顯著提高了檢索速度,而且大大減少了訪問磁盤的次數(shù)
-
優(yōu)點(diǎn):
- 無外部碎片,沒有磁盤空間浪費(fèi)
- 無需事先知道文件大小。文件動(dòng)態(tài)增長(zhǎng)時(shí),可動(dòng)態(tài)分配空閑盤塊
-
缺點(diǎn):
- 不能支持高效隨機(jī)/直接訪問,僅適合于順序存取
- 需要為指針分配空間【隱式鏈接】
- 可靠性低
- 文件分配表占用較大內(nèi)存
索引分配
鏈接分配的問題
- 不能支持高效的直接存取
- FAT需要占用較大的內(nèi)存空間1
假設(shè)每個(gè)盤塊大小為1KB,每個(gè)盤塊號(hào)占4個(gè)字節(jié),則在一個(gè)索引塊中可放256個(gè)文件物理塊的盤塊號(hào)。在兩級(jí)索引時(shí),最多可包含的存放文件的盤塊的盤塊號(hào)總數(shù)為256*256=64K個(gè)盤塊號(hào)。可以得出:采用兩級(jí)索引時(shí),所允許的文件最大長(zhǎng)度為64MB。
文件存儲(chǔ)空間的管理
-
存儲(chǔ)空間的基本分配單位是磁盤塊
-
空閑分區(qū)表:屬于連續(xù)分配方式,為每個(gè)文件分配一塊連續(xù)的存儲(chǔ)空間,系統(tǒng)為空閑區(qū)建立一張空閑表,存儲(chǔ)序號(hào),第一空閑盤塊號(hào)和空閑盤塊數(shù)。適合于可變大小分區(qū)的連續(xù)分配
-
分配時(shí),可以按照之前的分配算法進(jìn)行分配,如首次適應(yīng)算法,當(dāng)刪除文件釋放空間時(shí),系統(tǒng)回收其存儲(chǔ)空間,合并相鄰空閑分區(qū)。
實(shí)現(xiàn)簡(jiǎn)單,空閑分區(qū)分布較分散且數(shù)量較多時(shí),空閑分區(qū)表很大需要較大的內(nèi)存空間,會(huì)降低空閑分區(qū)表的檢索速度
浪費(fèi)存儲(chǔ)空間,不適合登記分散且數(shù)目很多的空閑分區(qū),不利于基于存儲(chǔ)塊的鏈接文件和索引文件的存儲(chǔ)空間分配
-
空閑鏈表法
-
空閑盤塊鏈:以盤塊為單位,將空閑的盤塊連接成一條鏈,當(dāng)創(chuàng)建文件時(shí),從鏈表頭開始,依次摘下適當(dāng)?shù)臄?shù)目的空閑盤塊進(jìn)行分配,系統(tǒng)回收時(shí),將回收的盤塊依次插入鏈表尾部
- 優(yōu)點(diǎn):用于分配和回收一個(gè)盤塊的過程非常簡(jiǎn)單
-
空閑盤區(qū)鏈:以空閑盤區(qū)(可能包含多個(gè)連續(xù)空閑盤塊)為單位,將空閑盤區(qū)連接成一條鏈,分配時(shí)一般采用首次適用算法,在回收盤區(qū)時(shí),同樣也要將回收區(qū)域相鄰接的空閑盤區(qū)相合并
-
-
問題:一段時(shí)間后,可能空閑分區(qū)鏈表中太多小分區(qū),文件分配的存儲(chǔ)空間太過分散,刪除回收需要很長(zhǎng)時(shí)間,若一個(gè)文件申請(qǐng)連續(xù)存儲(chǔ)空間,則需要花費(fèi)較長(zhǎng)時(shí)間查找相鄰的空閑分區(qū)
-
適合非連續(xù)存儲(chǔ)文件位示圖:利用0,1表示物理塊是否被使用,一般采用二維數(shù)組來存儲(chǔ),在進(jìn)行盤塊分配時(shí),書序掃
描位示圖,從中找出一個(gè)或一組的空閑盤塊,進(jìn)行分配后更改位示圖中的值
-
-
位示圖:利用0,1表示物理塊是否被使用,一般采用二維數(shù)組來存儲(chǔ),在進(jìn)行盤塊分配時(shí),順序掃描位示圖,從中找出一個(gè)或一組的空閑盤塊,進(jìn)行分配后更改位示圖中的值
- 盤塊的回收:
- 將回收盤塊的盤塊號(hào)轉(zhuǎn)換為位示圖的行號(hào)和列好
- i = (b-1)div n + 1,j = (b-1)mod n + 1
- 修改位示圖 map[i,j] = 0
-
優(yōu)點(diǎn):
- 很容易找到一個(gè)或一組連續(xù)的空閑分區(qū)
- 占用空間小
-
缺點(diǎn):
- 對(duì)于大硬盤難以將位示圖全部裝入內(nèi)存
- 磁盤空間快用完,性能嚴(yán)重下降
-
成組鏈接法
-
-
-
-
每一組的第一個(gè)盤塊用來記錄下一組的盤塊數(shù)量和盤塊號(hào)的信息,其余號(hào)對(duì)應(yīng)空閑塊;每一個(gè)用于記錄的磁盤塊都是記錄下一組的信息。
分配201號(hào)盤塊
把300的磁盤塊數(shù)據(jù)復(fù)制到超級(jí)塊中
回收沒滿直接插
回收滿了,新建一個(gè)區(qū),先復(fù)制超級(jí)塊,再新建超級(jí)塊指向新回收的塊
-
文件目錄
-
文件目錄也是一種數(shù)據(jù)結(jié)構(gòu),用于標(biāo)識(shí)系統(tǒng)中的文件及其物理地址,供檢索時(shí)使用
- 對(duì)目錄管理的要求如下:
- 實(shí)現(xiàn)按名存取
- 提高對(duì)目錄的檢索速度
- 文件共享
- 允許文件重名
- 對(duì)目錄管理的要求如下:
-
**文件控制塊【FCB】:**用于描述和控制文件的數(shù)據(jù)結(jié)構(gòu)
- 從文件管理的角度來看,文件由文件體和FCB組成
- 文件控制塊是操作系統(tǒng)為了管理文件而設(shè)置的數(shù)據(jù)結(jié)構(gòu),存放了文件的有關(guān)說明信息,記錄了系統(tǒng)對(duì)文件進(jìn)行管理所需要的全部信息
- FCB是文件存在的標(biāo)志
- FCB保存在文件目錄中,一個(gè)FCB就是一個(gè)目錄項(xiàng)
- 內(nèi)容包含
- 基本信息:文件名、文件類型等
- 地址信息:卷【存儲(chǔ)文件的設(shè)備】、起始地址、文件長(zhǎng)度
- 存取控制信息:文件存取權(quán)限
- 使用信息:創(chuàng)建時(shí)間、修改時(shí)間、訪問時(shí)間
- 基本信息:文件名、文件類型等
-
文件目錄:文件控制塊的有序集合
-
目錄項(xiàng):構(gòu)成文件目錄的項(xiàng)目,就是FCB
-
**目錄文件:**為了實(shí)現(xiàn)對(duì)文件目錄的管理,通常將文件目錄以文件的形式保存在外存,文件叫做目錄文件。
索引結(jié)點(diǎn)
- UNIX系統(tǒng)中,采用了把文件名和文件描述信息分開的方式,把文件描述信息單獨(dú)形成一個(gè)數(shù)據(jù)結(jié)構(gòu),叫索引結(jié)點(diǎn)
- 為什么引入?
- 在檢索目錄文件時(shí),只用到了文件名,僅當(dāng)找到一個(gè)目錄項(xiàng)時(shí),才需要從目錄項(xiàng)中讀取出該文件的物理地址,而其他一些對(duì)該文件進(jìn)行描述的信息在檢索目錄時(shí)一概不要,顯然在檢索目錄時(shí)這些信息不需要調(diào)入內(nèi)存
- 為什么引入?
目錄結(jié)構(gòu)
-
單級(jí)目錄結(jié)構(gòu):所有用戶的全部文件目錄保存在一張目錄表中,每個(gè)文件的目錄項(xiàng)占用一個(gè)表項(xiàng)
- 優(yōu)點(diǎn):實(shí)現(xiàn)了按名存取
- 缺點(diǎn)
- 查找速度慢
- 不允許重名
- 不便于實(shí)現(xiàn)文件共享
-
兩級(jí)目錄結(jié)構(gòu):分為主目錄和用戶目錄
- 為每個(gè)用戶建立單獨(dú)的用戶文件目錄
- 系統(tǒng)中為所有用戶建立一個(gè)主文件目錄
- 優(yōu)點(diǎn):
- 一定程度解決了重名問題
- 提高了文件目錄檢索效率
- 簡(jiǎn)單的文件共享
- 問題:不便用戶文件的邏輯分類
-
層次目錄結(jié)構(gòu):現(xiàn)在使用的多級(jí)目錄,主目錄稱為根目錄,數(shù)據(jù)文件稱為樹葉,其他的目錄稱為樹的結(jié)點(diǎn)
-
-
路徑名:從樹的根目錄開始,把全部目錄文件名和數(shù)據(jù)文件名,依次用/連接起來,即構(gòu)成該數(shù)據(jù)文件的路徑名
- 系統(tǒng)中每個(gè)文件都有唯一的路徑名
-
當(dāng)前目錄:為每個(gè)進(jìn)程設(shè)置一個(gè)當(dāng)前目錄,又稱為工作目錄。進(jìn)程對(duì)各個(gè)文件的訪問都相對(duì)于當(dāng)前目錄進(jìn)行
-
從當(dāng)前目錄到數(shù)據(jù)文件為止所構(gòu)成的路徑名稱為相對(duì)路徑名
-
查詢速度更快,層次結(jié)構(gòu)更加清晰,能更有效地進(jìn)行文件的管理和保護(hù)
-
-
-
-
文件共享和訪問控制
文件共享的有效控制涉及兩方面
- 同時(shí)存取
- 存取權(quán)限
- 實(shí)現(xiàn)文件共享的實(shí)質(zhì)是可以從不同地方打開同一個(gè)文件
- 首要步驟是找到文件的目錄項(xiàng)進(jìn)而讀取文件在外存的起始地址
鏈接目錄項(xiàng)實(shí)現(xiàn)文件共享
即有向無環(huán)圖實(shí)現(xiàn)
利用索引結(jié)點(diǎn)實(shí)現(xiàn)文件共享
- 文件物理地址及其它文件的屬性相關(guān)信息,不再是存放在目錄項(xiàng)中,而是放在索引結(jié)點(diǎn)中,在文件目錄中只設(shè)置文件名和指向相應(yīng)索引結(jié)點(diǎn)的指針
- 可以通過共享文件索引結(jié)點(diǎn)來共享文件。當(dāng)用戶需要共享文件時(shí),新建目錄項(xiàng)將索引結(jié)點(diǎn)指針指向共享文件的索引結(jié)點(diǎn)
利用符號(hào)鏈共享
由系統(tǒng)創(chuàng)建一個(gè)Link類型的新文件,新文件中只包含被創(chuàng)文件的路徑名
新文件中的路徑名,則只被看作是符號(hào)鏈。當(dāng)B要訪問被鏈接的文件F且正要讀LINK類新文件時(shí),將被OS截獲, OS根據(jù)新文件中的路徑名去讀該文件,于是就實(shí)現(xiàn)了用戶B對(duì)文件F的共享。
- 只是文件主才擁有指向其索引結(jié)點(diǎn)的指針,而共享文件的其他用戶只有路徑名
- 優(yōu)點(diǎn):能連接任何機(jī)器上的文件
- 缺點(diǎn):備份可能產(chǎn)生多個(gè)拷貝
利用URL實(shí)現(xiàn)文件共享
文章來源:http://www.zghlxwxcb.cn/news/detail-487310.html
總結(jié)
文章來源地址http://www.zghlxwxcb.cn/news/detail-487310.html
到了這里,關(guān)于【湯4操作系統(tǒng)】深入掌握操作系統(tǒng)-文件管理篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!