操作系統對計算機的管理包括兩個方面:硬件資源和軟件資源。硬件資源的管理包括CPU 的管理、存儲器的管理、設備管理等,主要解決硬件資源的有效和合理利用問題。
軟件資源包括各種系統程序、各種應用程序、各種用戶程序,也包括大量的文檔材料、庫函數等。每一種軟件資源本身都是具有一定邏輯意義的相關信息的集合,在操作系統中它們以文件形式存儲。
計算機系統的重要作用之一是能快速處理大量信息,因此數據的組織、存取和保護成為一個極重要的內容。文件系統是操作系統中組織、存取和保護數據的一個重要部分。
文件管理的功能包括:建立、修改、刪除文件;按文件名訪問文件;決定文件信息的存放位置、存放形式及存取權限;管理文件間的聯系及提供對文件的共享、保護和保密等。允許多個用戶協同工作又不引起混亂。
- 文件的共享是指一個文件可以讓多個用戶共同使用,它可以減少用戶的重復性勞動,節省文件的存儲空間,減少輸入/輸出文件的次數等。
- 文件的保護主要是為防止由于錯誤操作而對文件造成的破壞。
- 文件的保密是為了防止未經授權的用戶對文件進行訪問。
文件的保護、保密實際上是用戶對文件的存取權限控制問題。一般為文件的存取設置兩級控制:第 1 級是訪問者的識別,即規定哪些人可以訪問;第 2 級是存取權限的識別,即有權參與訪問者可對文件執行何種操作。
1 文件的邏輯結構
文件的結構是指文件的組織形式,從用戶角度所看到的文件組織形式,稱為文件的邏輯結構。
文件的邏輯組織是為了方便用戶使用。一般文件的邏輯結構可以分為兩種:無結構的字符流文件和有結構的記錄文件。記錄文件由記錄組成,即文件內的信息劃分成多個記錄,以記錄為單位組織和使用信息。
記錄文件有順序文件、索引順序文件、索引文件和直接文件。 (1)順序文件。大多數文件是順序文件。順序文件的記錄定長,記錄中的數據項的類型長度與次序固定,一般還有一個可以唯一標識記錄的數據項,稱為鍵(key),記錄是按鍵值的約定次序組織的。順序文件常用于批處理應用,對于查詢或更新某個記錄的處理性能不太好。 (2)索引順序文件。索引順序文件是基于鍵的約定次序組織的,而且維護鍵的索引和溢出區域。鍵的索引也可以是多級索引。索引順序文件既適用于交互方式應用,也適用于批處理方式應用。 (3)索引文件。索引文件是基于記錄的一個鍵數據項組織的。許多應用需按照別的數據項訪問文件,為此,常采用索引文件方法,即對主文件中的記錄按需要的數據項(一個或幾個)建索引,索引文件本身是順序文件組織。 (4)直接文件。直接文件又稱哈希( Hash)文件。記錄以它們在直接訪問存儲設備上的物理地址直接(隨機地)訪問。直接文件常用于需要高速訪問文件而且每次僅訪問一條記錄的應用中。
2 文件的物理結構
文件的物理結構是指文件在存儲設備上的存放方法。文件的物理結構側重于提高存儲器的利用效率和降低存取時間。文件的存儲設備通常劃分為大小相同的物理塊,物理塊是分配和傳輸信息的基本單位。文件的物理結構涉及文件存儲設備的組塊策略和文件分配策略,決定文件信息在存儲設備上的存儲位置。常用的文件分配策略有:
(1)順序分配(連續分配)。這是最簡單的分配方法。在文件建立時預先分配一組連續的物理塊,然后,按照邏輯文件中的信息(或記錄)順序,依次把信息(或記錄)按順序存儲到物理塊中。這樣,只需知道文件在文件存儲設備上的起始位置和文件長度,就能進行存取,這種分配方法適合于順序存取,在連續存取相鄰信息時,存取速度快。其缺點是在文件 建立時必須指定文件的信息長度,以后不能動態增長,一般不宜用于需要經常修改的文件。
(2)鏈接分配(串聯分配)。這是按單個物理塊逐個進行的。每個物理塊中(一般是最后一個單元)設有一個指針,指向其后續連接的下一個物理塊的地址,這樣,所有的物理塊都被鏈接起來,形成一個鏈接隊列。在建立鏈接文件時,不需要指定文件的長度,在文件的說明信息中,只需指出該文件的第一個物理塊塊號,而且鏈接文件的文件長度可以動態地增 長。只調整物理塊間的指針就可以插入或刪除一個信息塊。 鏈接分配的優點是可以解決存儲器的碎片問題,提高存儲空間利用率。由于鏈接文件只能按照隊列中的鏈接指針順序查找,因此搜索效率低,一般只適用于順序訪問,不適用于隨機存取。 (3)索引分配。這是另一種對文件存儲不連續分配的方法。采用索引分配方法的系統,為每一個文件建立一張索引表,索引表中每一表項指出文件信息所在的邏輯塊號和與之對應的物理塊號。索引分配既可以滿足文件動態增長的要求,又可以方便而迅速地實現隨機存取。對一些大的文件,當索引表的大小超過一個物理塊時,會發生索引表的分配問題。一般采用多級(間接索引)技術,這時在由索引表指出的物理塊中存放的不是文件存放處而是存放文件信息的物理塊地址。如果一個物理塊能夠存儲 n 個地址,則一級間接索引,將可尋址的文件長度變為 【n 的二次方】塊。對于更大的文件可以采用二級甚至三級間接索引(例如, UNIX 操作系統采用三級索引結構)。

索引文件的優點是既適用于順序存取,又適用于隨機存取。缺點是索引表增加了存儲空間的開銷。另外,在存取文件時需要訪問兩次磁盤,一次是訪問索引表,另一次是根據索引表提供的物理塊號訪問文件信息。為了提高效率,一種改進的方法是,在對某個文件進行操作之前,預先把索引表調入內存。這樣,文件的存取就能直接從內存的索引表中確定相應的物理塊號,從而只需要訪問一次磁盤。
3 文件存儲設備管理(存儲空間管理)
文件存儲設備管理,就是操作系統要有效地進行存儲空間的管理。由于文件存儲設備是分成許多大小相同的物理塊,并以塊為單位交換信息,因此,文件存儲設備的管理實質上是對空閑塊的組織和管理問題。它包括空閑塊的組織,空閑塊的分配與空閑塊的回收等問題。
有 3 種不同的空閑塊管理方法,它們分別是索引法、鏈接法和位示圖法。
(1)索引法。索引法把空閑塊作為文件并采用索引技術。為了有效,索引對應于一個或由幾個空閑塊構成的空閑區。這樣,磁盤上每一個空閑塊區都對應于索引表中一個條目,這個方法能有效地支持每一種文件分配方法。
(2)鏈接法。鏈接法分為空閑盤塊鏈與空閑盤區鏈兩種:
【1】 空閑盤塊鏈:使用鏈表把空閑塊組織在一起,當申請者需要空閑塊時,分配程序從鏈首開始摘取所需的空閑塊。反之,管理程序把回收的空閑塊逐個掛入隊尾,這個方法適用于每一種文件分配方法。空閑塊的鏈接方法可以按釋放的先后順序鏈接,也可以按空閑塊區的大小順序鏈接。后者有利于獲得連續的空閑塊的請求,但在分配請求和回收空閑塊時系統開銷會多一點。
【2】空閑盤區鏈:將磁盤上所有空閑盤區拉成一條鏈,在每個盤區上包含若干用于指示下一個空閑盤區的指針,指明盤區大小的信息。分配盤塊時,通常采用首次適應算法 ( 顯式鏈接法 )。 在回收時,要將回收區與空閑盤區相合并 。
(3)位示圖法。該方法是在外存上建立一張位示圖(Bitmap),記錄文件存儲器的使用情況。每一位僅對應文件存儲器上的一個物理塊,取值 0 和 1 分別表示空閑和占用。文件存儲器上的物理塊依次編號為: 0、 1、 2、…。假如系統中的一個字的字長為 32 位,也就是說,一個字可以表示 32 個物理塊。假設有 4096 個物理塊,那么需要 128 個字(4096/32=128)來表示這些物理塊。
位示圖是利用二進制的一位來表示磁盤中一個盤塊的使用情況,如圖 2 所示。當其值為“0”時,表示對應的盤塊空閑;為“1”時表示已分配。由所有盤塊對應的位構成一個集合,稱為位示圖。

圖 2 位示圖
示例如下: 某磁盤盤組共有 10 個盤面,每個盤面上有 100個磁道,每個磁道有 32 個扇區,假定物理塊的大小為 2 個扇區,分配以物理塊為單位。
- 若使用位圖管理磁盤空間,則位圖需要占用多少字節空間?
- 若采用空白文件管理磁盤空間,且空白文件目錄的每個表項占用5個字節,則當空白文件數目大于多少時,空白文件目錄占用的字節數大于位圖占用的字節數?
分析過程:
- 總扇區數= 10 * 100 * 32=32000 個;每個物理塊 2 個扇區,則總物理塊數 = 32000/2=16000 塊。
- 假設采用位圖來管理磁盤空間。一個字節通常是 8 位,則所有這些物理塊需要 2000 (16000/8)字節空間。
- 假設采用空白文件來管理磁盤空間。一個表項占用 5 個字節,那么 2000/5=400,也就是說當空白文件數>400 時,文件目錄所占用的字節數就會大于位圖所占用的字節數。
(4)成組鏈接法 成組鏈接法是將空閑表和空閑鏈表法結合形成的一種空閑盤塊管理方法,適用于大型文件系統。
4 樹型目錄結構
在計算機的文件系統中,一般采用樹型目錄結構。在樹型目錄結構中,樹的根結點為根目錄,數據文件作為樹葉,其他所有目錄均作為樹的結點。
根目錄隱含于一個硬盤的一個分區中,根目錄在最頂層。它包含的子目錄是一級子目錄。每一個一級子目錄又可以包含若干二級子目錄,…,這樣的組織結構就叫作目錄樹。
當前盤和當前目錄是系統默認的操作對象。 如果用戶沒有指明操作對象,系統就將用戶命令指向當前盤和當前目錄。
路徑是指從根目錄或者當前目錄開始到訪問對象(目錄或者文件),在目錄樹中路經的所有目錄的序列。例如“c:emp”就是 Windows 系統中的一條路徑。在樹型目錄結構中,從根目錄到任何數據文件之間,只有一條唯一的通路,從樹根開始,把全部目錄文件名與數據文件名,依次用“ /”( UNIX/Linux 系統)或“ ”( Windows 系統)連接起來,構成該數據文件的路徑名,且每個數據文件的路徑名是唯一的。這樣,便可以解決文件重名問題。
從樹根開始的路徑為絕對路徑,如果文件系統有很多級時,使用不是很方便,所以引入相對路徑,即從當前目錄開始,再逐級通過中間的目錄文件,最后到達所要訪問的數據文件。
絕對路徑給出文件或目錄位置的完全描述,通常由層次結構的頂端開始(根目錄),通常第一個字符是“/”(UNIX/Linux 系統)或者是盤符(Windows 系統)。相對路徑通常由目錄結構中的當前位置開始,一般都比絕對路徑要短。
父目錄是指當前路徑的上一層目錄。每個目錄下都有代表當前目錄的“.”文件和代表當前目錄父目錄的“..”文件,相對路徑名一般就是從“..”開始的。
在 Windows 系統中,有兩種格式的文件,分別是 FAT32 ( FAT16 ) 文件和 NTFS 文件。 NTFS 在使用中產生的磁盤碎片要比 FAT32 少,安全性也更高,而且支持單個文件的容量更大,超過了 4GB , 特別適合現在的大容量存儲。 NTFS 可以支持的分區 ( 如果采用動態磁盤則稱為卷 ) 大小可以達到 2TB ,而 Windows 2000 中的 FAT32 支持分區的大小最大為 32GB。
作者:deniro
鏈接:https://www.jianshu.com/p/e94fc7d228d9
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。