操作系统 —— 文件管理
目錄
- 1. 文件的簡介
- 1.1. 文件的屬性
- 1.2. 文件的分類
- 1.2.1. 無結(jié)構(gòu)文件(流式文件)
- 1.2.2. 有結(jié)構(gòu)文件(記錄式文件)
- 1.3 操作系統(tǒng)應(yīng)向上提供哪些功能
- 2. 文件的邏輯結(jié)構(gòu)
- 2.1 邏輯結(jié)構(gòu) vs 物理結(jié)構(gòu)
- 2.2 有結(jié)構(gòu)文件的邏輯結(jié)構(gòu)
- 2.2.1 順序文件
- 順序文件的查找
- 2.2.2. 索引文件
- 2.2.3. 索引順序文件
- 3. 文件目錄
- 3.1. 文件控制塊
- 3.1.1. 對目錄進(jìn)行的操作
- 3.2. 目錄結(jié)構(gòu)
- 3.2.1. 單級(jí)目錄結(jié)構(gòu)
- 3.2.2. 兩級(jí)目錄結(jié)構(gòu)
- 3.2.3. 多級(jí)目錄結(jié)構(gòu)
- 3.2.4. 無環(huán)圖目錄結(jié)構(gòu)
- 3.2.5. 索引結(jié)點(diǎn)(FCB的改進(jìn))
- 4. 文件的物理結(jié)構(gòu)
- 4.1. 文件塊和磁盤塊
- 4.1.1. 磁盤塊
- 4.1.2. 文件塊
- 4.2. 文件分配方式 —— 連續(xù)分配
- 4.3. 文件分配方式 —— 鏈接分配
- 4.3.1. 隱式鏈接
- 4.3.2. 顯式鏈接
- 實(shí)現(xiàn)文件的邏輯塊號(hào)到物理塊號(hào)的轉(zhuǎn)變
- 4.4. 文件分配方式 —— 索引分配
- 4.4.1. 實(shí)現(xiàn)文件的邏輯塊號(hào)到物理塊號(hào)的轉(zhuǎn)變
- 4.4.2. 鏈接方案
- 4.4.3. 多層索引
- 4.4.4. 混合索引
- 5. 文件存儲(chǔ)空間管理
- 5.1. 空閑表法
- 5.2. 空閑鏈表法
- 5.2.1 空閑盤塊鏈
- 5.2.2. 空閑盤區(qū)鏈
- 5.3 位示圖法
- 5.4. 成組鏈接法
- 6. 文件的基本操作
- 6.1. 創(chuàng)建文件
- 6.2. 刪除文件
- 6.3. 打開文件
- 6.3.1. 打開文件表
- 6.4. 關(guān)閉文件
- 6.5. 讀文件
- 6.6. 寫文件
- 7. 文件共享
- 7.1. 基于索引結(jié)點(diǎn)的共享方式
- 7.2. 基于符號(hào)鏈的共享方式
- 8. 文件保護(hù)
- 8.1. 口令保護(hù)
- 8.2. 加密保護(hù)
- 8.3. 訪問控制
1. 文件的簡介
1.1. 文件的屬性
文件名、標(biāo)識(shí)符、類型、位置、大小、創(chuàng)建時(shí)間、上次修改時(shí)間、文件所有者信息、保護(hù)信息
1.2. 文件的分類
1.2.1. 無結(jié)構(gòu)文件(流式文件)
文件內(nèi)部的數(shù)據(jù)是由一系列的二進(jìn)制或字符流組成,如文本文件(.txt文件)
1.2.2. 有結(jié)構(gòu)文件(記錄式文件)
由一組相似的記錄文件組成,每條記錄又由若干個(gè)數(shù)據(jù)項(xiàng)組成,如數(shù)據(jù)庫表。一般來說,每條記錄有一個(gè)數(shù)據(jù)項(xiàng)作為關(guān)鍵字。根據(jù)各條記錄的長度(占用的存儲(chǔ)空間)是否相等,又可分為定長記錄和可變長記錄。
記錄是一組相關(guān)數(shù)據(jù)項(xiàng)的集合
1.3 操作系統(tǒng)應(yīng)向上提供哪些功能
create、delete、open、close、read、write 系統(tǒng)調(diào)用
2. 文件的邏輯結(jié)構(gòu)
2.1 邏輯結(jié)構(gòu) vs 物理結(jié)構(gòu)
邏輯結(jié)構(gòu):指在用戶看來,文件內(nèi)部的數(shù)據(jù)應(yīng)該是如何組織起來的。
物理結(jié)構(gòu):指的是在操作系統(tǒng)看來,文件的數(shù)據(jù)是如何存放在外存的。
2.2 有結(jié)構(gòu)文件的邏輯結(jié)構(gòu)
根據(jù)有結(jié)構(gòu)文件中的各條記錄在邏輯上如何組織,可以分為三類。
2.2.1 順序文件
文件中的記錄一個(gè)接一個(gè)地順序排列(邏輯上),記錄可以是定長的或可變長的。各個(gè)記錄在物理上可以順序存儲(chǔ)或鏈?zhǔn)酱鎯?chǔ)。
順序存儲(chǔ)
- 邏輯上相鄰的記錄物理上也相鄰。
鏈?zhǔn)酱鎯?chǔ)
- 邏輯上相鄰的記錄物理上不一定相鄰。
根據(jù)記錄之間的順序與關(guān)鍵字是否有關(guān)又可將順序文件分為
串結(jié)構(gòu):記錄之間的順序與關(guān)鍵字無關(guān)(通常按照記錄存入的時(shí)間決定記錄的順序)
順序結(jié)構(gòu):記錄之間的順序按關(guān)鍵字順序排列
順序文件的查找
順序文件的缺點(diǎn)是增加/刪除一個(gè)記錄比較困難(如果是串結(jié)構(gòu)則相對簡單)
2.2.2. 索引文件
2.2.3. 索引順序文件
- 當(dāng)記錄過多的時(shí)候可以建立多級(jí)索引表
3. 文件目錄
即我們很熟悉的Windows操作系統(tǒng)的 ”文件夾“。
3.1. 文件控制塊
- 目錄本身就是一種有結(jié)構(gòu)文件,由一條條記錄組成。每條記錄對應(yīng)一個(gè)在該目錄下的文件。
- 目錄文件中的一條記錄就是一個(gè)文件控制塊(FCB)。
- FCB 實(shí)現(xiàn)了文件名和文件之間的映射。使用戶程序可以實(shí)現(xiàn) ” 按名存取 “。
FCB中包含
1、文件的基本信息( 文件名、物理地址、邏輯地址、物理結(jié)構(gòu)等)
2、存取控制信息(是否可讀/可寫、禁止訪問的用戶名單等)
3、使用信息(如文件的建立時(shí)間、修改時(shí)間等)
3.1.1. 對目錄進(jìn)行的操作
搜索、創(chuàng)建文件、刪除文件、顯示目錄、修改目錄
3.2. 目錄結(jié)構(gòu)
3.2.1. 單級(jí)目錄結(jié)構(gòu)
早期的操作系統(tǒng)并不支持多級(jí)目錄,整個(gè)系統(tǒng)只建立一張目錄表,每個(gè)文件占一個(gè)目錄項(xiàng)。
單級(jí)目錄實(shí)現(xiàn)了 " 按名存取 ",但是不允許文件重名。
單級(jí)目錄不支持多用戶操作系統(tǒng)。
3.2.2. 兩級(jí)目錄結(jié)構(gòu)
早期的多用戶操作系統(tǒng)采用兩級(jí)目錄結(jié)構(gòu),分為主文件目錄 (MFD,Master File Directory)和用戶文件目錄(UFD,User File Directory)。
優(yōu)點(diǎn):兩級(jí)目錄允許不同用戶的文件重名,也可以在目錄上實(shí)現(xiàn)訪問限制(檢查此時(shí)登錄的用戶名是否匹配)。
缺點(diǎn):缺乏靈活性,用戶不能對自己的文件進(jìn)行分類。
3.2.3. 多級(jí)目錄結(jié)構(gòu)
又稱樹形目錄結(jié)構(gòu)
用戶(或用戶進(jìn)程)要訪問某個(gè)文件時(shí)要用文件路徑名標(biāo)識(shí)文件,文件路徑名是個(gè)字符串。各級(jí)目錄之間用“/”隔開。從根目錄出發(fā)的路徑稱為絕對路徑。從當(dāng)前目錄出發(fā)的路徑稱為相對路徑。
系統(tǒng)根據(jù)絕對路徑一層一層地找到下一級(jí)目錄。剛開始從外存讀入根目錄的目錄表;找到“照片”目錄的存放位置后,從外存讀入對應(yīng)的目錄表;再找到“2015-08”目錄的存放位置,再從外存讀入對應(yīng)目錄表;最后才找到文件“白拍.jpg”的存放位置。整個(gè)過程需要3次讀磁盤I/O操作。
- 相對路徑可以減少磁盤 I/O 操作次數(shù)。
優(yōu)點(diǎn):樹形目錄結(jié)構(gòu)可以很方便地對文件進(jìn)行分類,層次結(jié)構(gòu)清晰,也能夠更有效地進(jìn)行文件的管理和保護(hù)。
缺點(diǎn):樹形結(jié)構(gòu)不便于實(shí)現(xiàn)文件的共享。
對此,提出了“ 無環(huán)圖目錄結(jié)構(gòu) ”。
3.2.4. 無環(huán)圖目錄結(jié)構(gòu)
在樹形目錄結(jié)構(gòu)的基礎(chǔ)上,增加一些指向同一節(jié)點(diǎn)的有向邊,使整個(gè)目錄成為一個(gè)有向無環(huán)圖。
可以更方便地實(shí)現(xiàn)多個(gè)用戶間的文件共享。
可以用不同的文件名指向同一個(gè)文件,甚至可以指向同一個(gè)目錄(共享同一目錄下的所有內(nèi)容)。
需要為每個(gè)共享結(jié)點(diǎn)設(shè)置一個(gè)共享計(jì)數(shù)器,用于記錄此時(shí)有多少個(gè)地方在共享該結(jié)點(diǎn)。用戶提出刪除結(jié)點(diǎn)的請求時(shí),只是刪除該用戶的FCB、并使共享計(jì)數(shù)器減1,并不會(huì)直接刪除共享結(jié)點(diǎn)。
3.2.5. 索引結(jié)點(diǎn)(FCB的改進(jìn))
將除了文件名之外的文件描述信息都放到索引結(jié)點(diǎn)中。由于目錄項(xiàng)長度減小,因此每個(gè)磁盤塊可以存放更多各目錄項(xiàng),可以大大提升文件檢索速度。
當(dāng)找到文件名對應(yīng)的目錄項(xiàng)時(shí),才需要將索引結(jié)點(diǎn)調(diào)入內(nèi)存,索引結(jié)點(diǎn)中記錄了文件的各種信息,包括文件在外存中的存放位置,根據(jù)“ 存放位置 ”即可找到文件。
存放在外存中的索引結(jié)點(diǎn)稱為“磁盤索引結(jié)點(diǎn)”,當(dāng)索引結(jié)點(diǎn)放入內(nèi)存后稱為“內(nèi)存索引結(jié)點(diǎn)”。
相比之下內(nèi)存索引結(jié)點(diǎn)中需要增加一些信息,比如:文件是否被修改、此時(shí)有幾個(gè)進(jìn)程正在訪問該文件等。
4. 文件的物理結(jié)構(gòu)
即文件數(shù)據(jù)應(yīng)該怎樣存放在外存中。
4.1. 文件塊和磁盤塊
4.1.1. 磁盤塊
類似于內(nèi)存分頁,磁盤中的存儲(chǔ)單元也會(huì)被分為一個(gè)個(gè) ” 塊 / 磁盤塊 / 物理塊 “。
很多操作系統(tǒng)中,磁盤塊的大小與內(nèi)存塊、頁面的大小相同。
內(nèi)存與磁盤之間的數(shù)據(jù)交換(即 讀/寫操作、磁盤I/O)都是以” 塊 “ 為單位進(jìn)行的。
即每次讀入一塊,或每次寫出一塊
4.1.2. 文件塊
在內(nèi)存管理中, 進(jìn)程的邏輯地址空間被分為一個(gè)個(gè)的頁面
同樣的, 在外存管理中, 為了方便對文件數(shù)據(jù)的管理, 文件的邏輯地址空間也被分為了一個(gè)個(gè)的文件塊
于是文件的邏輯地址也可以表示為 (邏輯塊號(hào), 塊內(nèi)地址)的形式
4.2. 文件分配方式 —— 連續(xù)分配
連續(xù)分配方式要求每個(gè)文件在磁盤上占有一組連續(xù)的塊。
文件目錄中記錄存放的起始?jí)K號(hào)和長度(總共占用幾個(gè)塊)
用戶給出要訪問的邏輯塊號(hào),操作系統(tǒng)找到文件對應(yīng)的目錄項(xiàng)(FCB)
物理塊號(hào) = 起始?jí)K號(hào) + 邏輯塊號(hào)
需要檢查邏輯塊號(hào)是否合理,當(dāng)邏輯塊號(hào) ≥ 長度就不合法
操作系統(tǒng)可以直接算出邏輯塊號(hào)對應(yīng)的物理塊號(hào),因此連續(xù)分配支持順序訪問和直接訪問( 隨機(jī)訪問 )
優(yōu)點(diǎn):連續(xù)分配的文件在順序讀/寫時(shí)速度最快。
缺點(diǎn):采用連續(xù)分配的文件不方便拓展;存儲(chǔ)利用率低,會(huì)產(chǎn)生難以利用的磁盤碎片。( 可以采用緊湊的方法來處理碎片, 但是需要耗費(fèi)很大的時(shí)間代價(jià) )
4.3. 文件分配方式 —— 鏈接分配
鏈接分配采取離散分配的方式,可以為文件分配離散的磁盤塊。
4.3.1. 隱式鏈接
優(yōu)點(diǎn):很方便文件拓展 ;所有的空閑磁盤塊都可以被利用,不會(huì)有碎片問題,外存利用率高。
缺點(diǎn):只支持順序訪問,不支持隨機(jī)訪問,查找效率低,指向下一個(gè)盤塊的指針也需要耗費(fèi)少量的存儲(chǔ)空間。
4.3.2. 顯式鏈接
把用于鏈接文件各物理塊的指針顯式地存放在一張表中。即文件分配表(FAT,File Allocation Table)。
- 一個(gè)磁盤僅設(shè)置一張 FAT。>
- 開機(jī)時(shí),將 FAT 讀入內(nèi)存,并常駐內(nèi)存。
- FAT 的各個(gè)表項(xiàng)在物理上連續(xù)存儲(chǔ),且每一個(gè)表項(xiàng)長度相同,因此 ” 物理塊號(hào) “ 字段可以是隱含的。
實(shí)現(xiàn)文件的邏輯塊號(hào)到物理塊號(hào)的轉(zhuǎn)變
1、用戶給出要訪問的邏輯塊號(hào)i,操作系統(tǒng)找到該文件對應(yīng)的目錄項(xiàng)(FCB)
2、從目錄項(xiàng)中找到起始?jí)K號(hào),若i > 0,則查詢內(nèi)存中的文件分配表FAT,往后找到i號(hào)邏輯塊對應(yīng)的物理塊號(hào)。 邏輯塊號(hào)轉(zhuǎn)換成物理塊號(hào)的過程不需要讀磁盤操作。
結(jié)論:
采用顯式鏈接方式的文件,支持順序訪問,也支持隨機(jī)訪問(想訪問i號(hào)邏輯塊時(shí),并不需要依次訪問之前的0~ i-1號(hào)邏輯塊)。
由于塊號(hào)轉(zhuǎn)換的過程不需要訪問磁盤,因此相比于隱式鏈接來說,訪問速度快很多。
4.4. 文件分配方式 —— 索引分配
索引分配允許文件離散地分配在各個(gè)磁盤塊中,系統(tǒng)會(huì)為每個(gè)文件建立一張索引表,索引表中記錄了文件的各個(gè)邏輯塊對應(yīng)的物理塊(索引表的功能類似于內(nèi)存管理中的頁表一―建立邏輯頁面到物理頁之間的映射關(guān)系)。索引表存放的磁盤塊稱為索引塊。文件數(shù)據(jù)存放的磁盤塊稱為數(shù)據(jù)塊。
4.4.1. 實(shí)現(xiàn)文件的邏輯塊號(hào)到物理塊號(hào)的轉(zhuǎn)變
1、用戶給出要訪問的邏輯塊號(hào)i,操作系統(tǒng)找到該文件對應(yīng)的目錄項(xiàng)(FCB)
2、從目錄項(xiàng)中可知索引表存放位置,將索引表從外存讀入內(nèi)存,并查找索引表即可知道 i 號(hào)邏輯塊在外存中的存放位置。
可見,索引分配方式可以支持隨機(jī)訪問。文件拓展也很容易實(shí)現(xiàn)(只需要給文件分配一個(gè)空閑塊,并增加一個(gè)索引表項(xiàng)即可)。
4.4.2. 鏈接方案
如果索引表太大,一個(gè)索引塊裝不下,那么可以將多個(gè)索引塊鏈接起來存放。
4.4.3. 多層索引
建立多層索引(原理類似于多級(jí)頁表)。使第一層索引塊指向第二層的索引塊。還可根據(jù)文件大小的要求再建立第三層、第四層索引塊。
4.4.4. 混合索引
多種索引分配方式的結(jié)合。
例如,一個(gè)文件的頂級(jí)索引表中,既包含直接地址索引(直接指向數(shù)據(jù)塊),又包含一級(jí)間接索引(指向單層索引表)、還包含兩級(jí)間接索引(指向兩層索引表)。
5. 文件存儲(chǔ)空間管理
5.1. 空閑表法
適用于連續(xù)分配方式。
5.2. 空閑鏈表法
5.2.1 空閑盤塊鏈
以盤塊為單位組成一組空閑鏈
適用于離散分配的物理結(jié)構(gòu)。
5.2.2. 空閑盤區(qū)鏈
以盤區(qū)為單位組成一條空閑鏈
離散分配、連續(xù)分配都使用。
為一個(gè)文件分配多個(gè)盤塊時(shí)效率更高
5.3 位示圖法
如何分配
若文件需要K個(gè)塊
① 順序掃描位示圖,找到K個(gè)相鄰或不相鄰的“O”;
② 根據(jù)字號(hào)、位號(hào)算出對應(yīng)的盤塊號(hào),將相應(yīng)盤塊分配給文件;
③ 將相應(yīng)位設(shè)置為“1”。
如何回收
① 根據(jù)回收的盤塊號(hào)計(jì)算出對應(yīng)的字號(hào)、位號(hào);
② 將相應(yīng)二進(jìn)制位設(shè)為“ 0 ”。
5.4. 成組鏈接法
空閑表法、空閑鏈表法不適用于大型文件系統(tǒng),因?yàn)榭臻e表或空閑鏈表可能過大。
UNIX 系統(tǒng)中采用了成組鏈接法對磁盤空閑塊進(jìn)行管理。
文件卷的目錄區(qū)中專門用一個(gè)磁盤塊作為 “超級(jí)塊”,當(dāng)系統(tǒng)啟動(dòng)時(shí)需要將超級(jí)塊讀入內(nèi)存。
并且要保證內(nèi)存與外存中的 “超級(jí)塊” 數(shù)據(jù)一致。
博客講解
6. 文件的基本操作
6.1. 創(chuàng)建文件
進(jìn)行 " create 系統(tǒng)調(diào)用 "
需要提供的參數(shù):
? 1、所需的外存空間大小(如:一個(gè)盤塊,即1KB)
? 2、文件存放路徑(“D:/Demo”)
? 3、文件名(這個(gè)地方默認(rèn)為“新建文本文檔.txt”)
1、在外存中找到文件所需的空間(例如使用空閑鏈表法、位示圖等管理策略,找到空閑空間)
2、根據(jù)文件的存放路徑的信息找到該目錄對應(yīng)的目錄文件,在目錄中創(chuàng)建該文件對應(yīng)的目錄項(xiàng) 。目錄項(xiàng)中包含了文件名,文件在外存中的存放位置等信息。
6.2. 刪除文件
進(jìn)行 " delete 系統(tǒng)調(diào)用 "
需要提供的參數(shù):
? 1、文件存放路徑(“ D:/Demo ”)
? 2、文件名 (“ test.txt ”)
1、根據(jù)文件存放路徑找到相應(yīng)的目錄文件,從目錄中找到文件名對應(yīng)的目錄項(xiàng)。
2、根據(jù)該目錄項(xiàng)記錄的文件在外存的存放位置、文件大小等信息,回收文件占用的磁盤塊。(回收磁盤塊時(shí),根據(jù)空閑表法、空閑鏈表法、位圖法等管理策略的不同,需要做不同的處理)
3、從目錄表中刪除文件對應(yīng)的目錄項(xiàng)。
6.3. 打開文件
進(jìn)行 ” open 系統(tǒng)調(diào)用 “
需要提供的要參數(shù):
1、文件存放路徑 (“D:/Demo”)
? 2、文件名 (“test.txt”)
? 3、要對文件的操作類型(如:r只讀;rw讀寫等)
1、根據(jù)文件存放路徑找到相應(yīng)的目錄文件,從目錄中找到文件名對應(yīng)的的目錄項(xiàng),并檢查該用戶是否有指定的操作權(quán)限。
2、將目錄項(xiàng)復(fù)制到內(nèi)存中的“打開文件表”中。并將對應(yīng)表目的編號(hào)返回給用戶。之后用戶使用打開文件表的編號(hào)來指明要操作的文件。
6.3.1. 打開文件表
- 打開計(jì)數(shù)器:記錄此時(shí)有多少個(gè)進(jìn)程打開了此文件。
- 讀寫指針:記錄該進(jìn)程對文件的讀/寫操作進(jìn)行到的位置。
- 訪問權(quán)限:如果打開文件時(shí)聲明的是 ” 只讀 “,則該進(jìn)程不能對文件進(jìn)行寫操作。
6.4. 關(guān)閉文件
進(jìn)行 ” close 系統(tǒng)調(diào)用 “
1、將進(jìn)程的打開文件表相應(yīng)表項(xiàng)刪除。
2、回收分配給該文件的內(nèi)存空間等資源。
3、系統(tǒng)打開文件表的打開計(jì)數(shù)器 count 減1,若count = 0,則刪除對應(yīng)表項(xiàng)。
6.5. 讀文件
進(jìn)行 ” read 系統(tǒng)調(diào)用 “
需要提供的參數(shù)
? 需要指明是哪個(gè)文件(在支持“打開文件”操作的系統(tǒng)中,只需要提供文件在打開文件表中的索引號(hào)即可), 還需要指明要讀入多少數(shù)據(jù)(如:讀入1KB)、指明讀入的數(shù)據(jù)要放在內(nèi)存中的什么位置。
操作系統(tǒng)在處理read系統(tǒng)調(diào)用時(shí),會(huì)從讀指針指向的外存中,將用戶指定大小的數(shù)據(jù)讀入用戶指定的內(nèi)存區(qū)域中。
6.6. 寫文件
進(jìn)行 ” write 系統(tǒng)調(diào)用 “
需要提供的參數(shù)
? 需要指明是哪個(gè)文件(在支持“打開文件”操作的系統(tǒng)中,只需要提供文件在打開文件表中的索引號(hào)即可), 還需要指明要寫出多少數(shù)據(jù)(如:寫出1KB)、寫回外存的數(shù)據(jù)放在內(nèi)存中的什么位置
7. 文件共享
操作系統(tǒng)為用戶提供文件共享功能,可以讓多個(gè)用戶共享地使用同一個(gè)文件。
注意:多個(gè)用戶共享同一個(gè)文件,意味著系統(tǒng)中只有 “一份” 文件數(shù)據(jù) 。并且只要某個(gè)用戶改了該文件的數(shù)據(jù),其他用戶也可以看到文件數(shù)據(jù)的變化。
7.1. 基于索引結(jié)點(diǎn)的共享方式
索引結(jié)點(diǎn)中設(shè)置一個(gè)鏈接計(jì)數(shù)變量count,用于表示鏈接到本索引結(jié)點(diǎn)上的用戶目錄項(xiàng)數(shù)。
若 count =2,說明此時(shí)有兩個(gè)用戶目錄項(xiàng)鏈接到該索引結(jié)點(diǎn)上,或者說是有兩個(gè)用戶在共享此文件。
若某個(gè)用戶決定“ 刪除 ”該文件,則只是要把用戶目錄中與該文件對應(yīng)的目錄項(xiàng)刪除,且索引結(jié)點(diǎn)的 count 值減1。
若 count > 0,說明還有別的用戶要使用該文件,暫時(shí)不能把文件數(shù)據(jù)刪除,否則會(huì)導(dǎo)致指針懸空。
當(dāng) count = 0 時(shí)系統(tǒng)負(fù)責(zé)刪除文件。
7.2. 基于符號(hào)鏈的共享方式
當(dāng) User3 訪問 “ ccc ” 時(shí),操作系統(tǒng)判斷文件 “ ccc ” 屬于 Link 類型文件,于是會(huì)根據(jù)其中記錄的層層查找目錄,最終找到 User1的目錄表中的 “ aaa ” 表項(xiàng),于是就找到了文件1的索引結(jié)點(diǎn)。
8. 文件保護(hù)
8.1. 口令保護(hù)
為文件設(shè)置一個(gè) “ 口令 ” (如: abc112233),用戶請求訪問該文件時(shí)必須提供 “ 口令 ”。
-
口令一般存放在文件對應(yīng)的 FCB 或索引結(jié)點(diǎn)中。
-
用戶訪問文件前需要先輸入“口令”,操作系統(tǒng)會(huì)將用戶提供的口令與FCB中存儲(chǔ)的口令進(jìn)行對比。
-
如果正確,則允許該用戶訪問文件。
優(yōu)點(diǎn):保存口令的空間開銷不多,驗(yàn)證口令的時(shí)間開銷也很小。
缺點(diǎn):正確的 “口令” 存放在系統(tǒng)內(nèi)部,不夠安全。
8.2. 加密保護(hù)
使用某個(gè) “ 密碼 ” 對文件進(jìn)行加密,在訪問文件時(shí)需要提供正確的 “ 密碼 ” 才能對文件進(jìn)行正確的解密。
8.3. 訪問控制
在每個(gè)文件的 FCB (或索引結(jié)點(diǎn))中增加一個(gè)訪問控制列表(Access-Control List, ACL),該表中記錄了各個(gè)用戶可以對該文件執(zhí)行哪些操作。
總結(jié)
以上是生活随笔為你收集整理的操作系统 —— 文件管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux的基础知识——全局变量异步I/
- 下一篇: 数据结构——二叉搜索树的C语言实现