操作系统实验文件管理_系统设计硬核知识(5)——操作系统的文件管理
操作系統(tǒng)對(duì)計(jì)算機(jī)的管理包括兩個(gè)方面:硬件資源和軟件資源。硬件資源的管理包括CPU 的管理、存儲(chǔ)器的管理、設(shè)備管理等,主要解決硬件資源的有效和合理利用問(wèn)題。
軟件資源包括各種系統(tǒng)程序、各種應(yīng)用程序、各種用戶(hù)程序,也包括大量的文檔材料、庫(kù)函數(shù)等。每一種軟件資源本身都是具有一定邏輯意義的相關(guān)信息的集合,在操作系統(tǒng)中它們以文件形式存儲(chǔ)。
計(jì)算機(jī)系統(tǒng)的重要作用之一是能快速處理大量信息,因此數(shù)據(jù)的組織、存取和保護(hù)成為一個(gè)極重要的內(nèi)容。文件系統(tǒng)是操作系統(tǒng)中組織、存取和保護(hù)數(shù)據(jù)的一個(gè)重要部分。
文件管理的功能包括:建立、修改、刪除文件;按文件名訪問(wèn)文件;決定文件信息的存放位置、存放形式及存取權(quán)限;管理文件間的聯(lián)系及提供對(duì)文件的共享、保護(hù)和保密等。允許多個(gè)用戶(hù)協(xié)同工作又不引起混亂。
- 文件的共享是指一個(gè)文件可以讓多個(gè)用戶(hù)共同使用,它可以減少用戶(hù)的重復(fù)性勞動(dòng),節(jié)省文件的存儲(chǔ)空間,減少輸入/輸出文件的次數(shù)等。
- 文件的保護(hù)主要是為防止由于錯(cuò)誤操作而對(duì)文件造成的破壞。
- 文件的保密是為了防止未經(jīng)授權(quán)的用戶(hù)對(duì)文件進(jìn)行訪問(wèn)。
文件的保護(hù)、保密實(shí)際上是用戶(hù)對(duì)文件的存取權(quán)限控制問(wèn)題。一般為文件的存取設(shè)置兩級(jí)控制:第 1 級(jí)是訪問(wèn)者的識(shí)別,即規(guī)定哪些人可以訪問(wèn);第 2 級(jí)是存取權(quán)限的識(shí)別,即有權(quán)參與訪問(wèn)者可對(duì)文件執(zhí)行何種操作。
1 文件的邏輯結(jié)構(gòu)
文件的結(jié)構(gòu)是指文件的組織形式,從用戶(hù)角度所看到的文件組織形式,稱(chēng)為文件的邏輯結(jié)構(gòu)。
文件的邏輯組織是為了方便用戶(hù)使用。一般文件的邏輯結(jié)構(gòu)可以分為兩種:無(wú)結(jié)構(gòu)的字符流文件和有結(jié)構(gòu)的記錄文件。記錄文件由記錄組成,即文件內(nèi)的信息劃分成多個(gè)記錄,以記錄為單位組織和使用信息。
記錄文件有順序文件、索引順序文件、索引文件和直接文件。 (1)順序文件。大多數(shù)文件是順序文件。順序文件的記錄定長(zhǎng),記錄中的數(shù)據(jù)項(xiàng)的類(lèi)型長(zhǎng)度與次序固定,一般還有一個(gè)可以唯一標(biāo)識(shí)記錄的數(shù)據(jù)項(xiàng),稱(chēng)為鍵(key),記錄是按鍵值的約定次序組織的。順序文件常用于批處理應(yīng)用,對(duì)于查詢(xún)或更新某個(gè)記錄的處理性能不太好。 (2)索引順序文件。索引順序文件是基于鍵的約定次序組織的,而且維護(hù)鍵的索引和溢出區(qū)域。鍵的索引也可以是多級(jí)索引。索引順序文件既適用于交互方式應(yīng)用,也適用于批處理方式應(yīng)用。 (3)索引文件。索引文件是基于記錄的一個(gè)鍵數(shù)據(jù)項(xiàng)組織的。許多應(yīng)用需按照別的數(shù)據(jù)項(xiàng)訪問(wèn)文件,為此,常采用索引文件方法,即對(duì)主文件中的記錄按需要的數(shù)據(jù)項(xiàng)(一個(gè)或幾個(gè))建索引,索引文件本身是順序文件組織。 (4)直接文件。直接文件又稱(chēng)哈希( Hash)文件。記錄以它們?cè)谥苯釉L問(wèn)存儲(chǔ)設(shè)備上的物理地址直接(隨機(jī)地)訪問(wèn)。直接文件常用于需要高速訪問(wèn)文件而且每次僅訪問(wèn)一條記錄的應(yīng)用中。
2 文件的物理結(jié)構(gòu)
文件的物理結(jié)構(gòu)是指文件在存儲(chǔ)設(shè)備上的存放方法。文件的物理結(jié)構(gòu)側(cè)重于提高存儲(chǔ)器的利用效率和降低存取時(shí)間。文件的存儲(chǔ)設(shè)備通常劃分為大小相同的物理塊,物理塊是分配和傳輸信息的基本單位。文件的物理結(jié)構(gòu)涉及文件存儲(chǔ)設(shè)備的組塊策略和文件分配策略,決定文件信息在存儲(chǔ)設(shè)備上的存儲(chǔ)位置。常用的文件分配策略有:
(1)順序分配(連續(xù)分配)。這是最簡(jiǎn)單的分配方法。在文件建立時(shí)預(yù)先分配一組連續(xù)的物理塊,然后,按照邏輯文件中的信息(或記錄)順序,依次把信息(或記錄)按順序存儲(chǔ)到物理塊中。這樣,只需知道文件在文件存儲(chǔ)設(shè)備上的起始位置和文件長(zhǎng)度,就能進(jìn)行存取,這種分配方法適合于順序存取,在連續(xù)存取相鄰信息時(shí),存取速度快。其缺點(diǎn)是在文件 建立時(shí)必須指定文件的信息長(zhǎng)度,以后不能動(dòng)態(tài)增長(zhǎng),一般不宜用于需要經(jīng)常修改的文件。
(2)鏈接分配(串聯(lián)分配)。這是按單個(gè)物理塊逐個(gè)進(jìn)行的。每個(gè)物理塊中(一般是最后一個(gè)單元)設(shè)有一個(gè)指針,指向其后續(xù)連接的下一個(gè)物理塊的地址,這樣,所有的物理塊都被鏈接起來(lái),形成一個(gè)鏈接隊(duì)列。在建立鏈接文件時(shí),不需要指定文件的長(zhǎng)度,在文件的說(shuō)明信息中,只需指出該文件的第一個(gè)物理塊塊號(hào),而且鏈接文件的文件長(zhǎng)度可以動(dòng)態(tài)地增 長(zhǎng)。只調(diào)整物理塊間的指針就可以插入或刪除一個(gè)信息塊。 鏈接分配的優(yōu)點(diǎn)是可以解決存儲(chǔ)器的碎片問(wèn)題,提高存儲(chǔ)空間利用率。由于鏈接文件只能按照隊(duì)列中的鏈接指針順序查找,因此搜索效率低,一般只適用于順序訪問(wèn),不適用于隨機(jī)存取。 (3)索引分配。這是另一種對(duì)文件存儲(chǔ)不連續(xù)分配的方法。采用索引分配方法的系統(tǒng),為每一個(gè)文件建立一張索引表,索引表中每一表項(xiàng)指出文件信息所在的邏輯塊號(hào)和與之對(duì)應(yīng)的物理塊號(hào)。索引分配既可以滿(mǎn)足文件動(dòng)態(tài)增長(zhǎng)的要求,又可以方便而迅速地實(shí)現(xiàn)隨機(jī)存取。對(duì)一些大的文件,當(dāng)索引表的大小超過(guò)一個(gè)物理塊時(shí),會(huì)發(fā)生索引表的分配問(wèn)題。一般采用多級(jí)(間接索引)技術(shù),這時(shí)在由索引表指出的物理塊中存放的不是文件存放處而是存放文件信息的物理塊地址。如果一個(gè)物理塊能夠存儲(chǔ) n 個(gè)地址,則一級(jí)間接索引,將可尋址的文件長(zhǎng)度變?yōu)?【n 的二次方】塊。對(duì)于更大的文件可以采用二級(jí)甚至三級(jí)間接索引(例如, UNIX 操作系統(tǒng)采用三級(jí)索引結(jié)構(gòu))。
索引文件的優(yōu)點(diǎn)是既適用于順序存取,又適用于隨機(jī)存取。缺點(diǎn)是索引表增加了存儲(chǔ)空間的開(kāi)銷(xiāo)。另外,在存取文件時(shí)需要訪問(wèn)兩次磁盤(pán),一次是訪問(wèn)索引表,另一次是根據(jù)索引表提供的物理塊號(hào)訪問(wèn)文件信息。為了提高效率,一種改進(jìn)的方法是,在對(duì)某個(gè)文件進(jìn)行操作之前,預(yù)先把索引表調(diào)入內(nèi)存。這樣,文件的存取就能直接從內(nèi)存的索引表中確定相應(yīng)的物理塊號(hào),從而只需要訪問(wèn)一次磁盤(pán)。
3 文件存儲(chǔ)設(shè)備管理(存儲(chǔ)空間管理)
文件存儲(chǔ)設(shè)備管理,就是操作系統(tǒng)要有效地進(jìn)行存儲(chǔ)空間的管理。由于文件存儲(chǔ)設(shè)備是分成許多大小相同的物理塊,并以塊為單位交換信息,因此,文件存儲(chǔ)設(shè)備的管理實(shí)質(zhì)上是對(duì)空閑塊的組織和管理問(wèn)題。它包括空閑塊的組織,空閑塊的分配與空閑塊的回收等問(wèn)題。
有 3 種不同的空閑塊管理方法,它們分別是索引法、鏈接法和位示圖法。
(1)索引法。索引法把空閑塊作為文件并采用索引技術(shù)。為了有效,索引對(duì)應(yīng)于一個(gè)或由幾個(gè)空閑塊構(gòu)成的空閑區(qū)。這樣,磁盤(pán)上每一個(gè)空閑塊區(qū)都對(duì)應(yīng)于索引表中一個(gè)條目,這個(gè)方法能有效地支持每一種文件分配方法。
(2)鏈接法。鏈接法分為空閑盤(pán)塊鏈與空閑盤(pán)區(qū)鏈兩種:
【1】 空閑盤(pán)塊鏈:使用鏈表把空閑塊組織在一起,當(dāng)申請(qǐng)者需要空閑塊時(shí),分配程序從鏈?zhǔn)组_(kāi)始摘取所需的空閑塊。反之,管理程序把回收的空閑塊逐個(gè)掛入隊(duì)尾,這個(gè)方法適用于每一種文件分配方法。空閑塊的鏈接方法可以按釋放的先后順序鏈接,也可以按空閑塊區(qū)的大小順序鏈接。后者有利于獲得連續(xù)的空閑塊的請(qǐng)求,但在分配請(qǐng)求和回收空閑塊時(shí)系統(tǒng)開(kāi)銷(xiāo)會(huì)多一點(diǎn)。
【2】空閑盤(pán)區(qū)鏈:將磁盤(pán)上所有空閑盤(pán)區(qū)拉成一條鏈,在每個(gè)盤(pán)區(qū)上包含若干用于指示下一個(gè)空閑盤(pán)區(qū)的指針,指明盤(pán)區(qū)大小的信息。分配盤(pán)塊時(shí),通常采用首次適應(yīng)算法 ( 顯式鏈接法 )。 在回收時(shí),要將回收區(qū)與空閑盤(pán)區(qū)相合并 。
(3)位示圖法。該方法是在外存上建立一張位示圖(Bitmap),記錄文件存儲(chǔ)器的使用情況。每一位僅對(duì)應(yīng)文件存儲(chǔ)器上的一個(gè)物理塊,取值 0 和 1 分別表示空閑和占用。文件存儲(chǔ)器上的物理塊依次編號(hào)為: 0、 1、 2、…。假如系統(tǒng)中的一個(gè)字的字長(zhǎng)為 32 位,也就是說(shuō),一個(gè)字可以表示 32 個(gè)物理塊。假設(shè)有 4096 個(gè)物理塊,那么需要 128 個(gè)字(4096/32=128)來(lái)表示這些物理塊。
位示圖是利用二進(jìn)制的一位來(lái)表示磁盤(pán)中一個(gè)盤(pán)塊的使用情況,如圖 2 所示。當(dāng)其值為“0”時(shí),表示對(duì)應(yīng)的盤(pán)塊空閑;為“1”時(shí)表示已分配。由所有盤(pán)塊對(duì)應(yīng)的位構(gòu)成一個(gè)集合,稱(chēng)為位示圖。
圖 2 位示圖
示例如下: 某磁盤(pán)盤(pán)組共有 10 個(gè)盤(pán)面,每個(gè)盤(pán)面上有 100個(gè)磁道,每個(gè)磁道有 32 個(gè)扇區(qū),假定物理塊的大小為 2 個(gè)扇區(qū),分配以物理塊為單位。
分析過(guò)程:
- 總扇區(qū)數(shù)= 10 * 100 * 32=32000 個(gè);每個(gè)物理塊 2 個(gè)扇區(qū),則總物理塊數(shù) = 32000/2=16000 塊。
- 假設(shè)采用位圖來(lái)管理磁盤(pán)空間。一個(gè)字節(jié)通常是 8 位,則所有這些物理塊需要 2000 (16000/8)字節(jié)空間。
- 假設(shè)采用空白文件來(lái)管理磁盤(pán)空間。一個(gè)表項(xiàng)占用 5 個(gè)字節(jié),那么 2000/5=400,也就是說(shuō)當(dāng)空白文件數(shù)>400 時(shí),文件目錄所占用的字節(jié)數(shù)就會(huì)大于位圖所占用的字節(jié)數(shù)。
(4)成組鏈接法 成組鏈接法是將空閑表和空閑鏈表法結(jié)合形成的一種空閑盤(pán)塊管理方法,適用于大型文件系統(tǒng)。
4 樹(shù)型目錄結(jié)構(gòu)
在計(jì)算機(jī)的文件系統(tǒng)中,一般采用樹(shù)型目錄結(jié)構(gòu)。在樹(shù)型目錄結(jié)構(gòu)中,樹(shù)的根結(jié)點(diǎn)為根目錄,數(shù)據(jù)文件作為樹(shù)葉,其他所有目錄均作為樹(shù)的結(jié)點(diǎn)。
根目錄隱含于一個(gè)硬盤(pán)的一個(gè)分區(qū)中,根目錄在最頂層。它包含的子目錄是一級(jí)子目錄。每一個(gè)一級(jí)子目錄又可以包含若干二級(jí)子目錄,…,這樣的組織結(jié)構(gòu)就叫作目錄樹(shù)。
當(dāng)前盤(pán)和當(dāng)前目錄是系統(tǒng)默認(rèn)的操作對(duì)象。 如果用戶(hù)沒(méi)有指明操作對(duì)象,系統(tǒng)就將用戶(hù)命令指向當(dāng)前盤(pán)和當(dāng)前目錄。
路徑是指從根目錄或者當(dāng)前目錄開(kāi)始到訪問(wèn)對(duì)象(目錄或者文件),在目錄樹(shù)中路經(jīng)的所有目錄的序列。例如“c:emp”就是 Windows 系統(tǒng)中的一條路徑。在樹(shù)型目錄結(jié)構(gòu)中,從根目錄到任何數(shù)據(jù)文件之間,只有一條唯一的通路,從樹(shù)根開(kāi)始,把全部目錄文件名與數(shù)據(jù)文件名,依次用“ /”( UNIX/Linux 系統(tǒng))或“ ”( Windows 系統(tǒng))連接起來(lái),構(gòu)成該數(shù)據(jù)文件的路徑名,且每個(gè)數(shù)據(jù)文件的路徑名是唯一的。這樣,便可以解決文件重名問(wèn)題。
從樹(shù)根開(kāi)始的路徑為絕對(duì)路徑,如果文件系統(tǒng)有很多級(jí)時(shí),使用不是很方便,所以引入相對(duì)路徑,即從當(dāng)前目錄開(kāi)始,再逐級(jí)通過(guò)中間的目錄文件,最后到達(dá)所要訪問(wèn)的數(shù)據(jù)文件。
絕對(duì)路徑給出文件或目錄位置的完全描述,通常由層次結(jié)構(gòu)的頂端開(kāi)始(根目錄),通常第一個(gè)字符是“/”(UNIX/Linux 系統(tǒng))或者是盤(pán)符(Windows 系統(tǒng))。相對(duì)路徑通常由目錄結(jié)構(gòu)中的當(dāng)前位置開(kāi)始,一般都比絕對(duì)路徑要短。
父目錄是指當(dāng)前路徑的上一層目錄。每個(gè)目錄下都有代表當(dāng)前目錄的“.”文件和代表當(dāng)前目錄父目錄的“..”文件,相對(duì)路徑名一般就是從“..”開(kāi)始的。
在 Windows 系統(tǒng)中,有兩種格式的文件,分別是 FAT32 ( FAT16 ) 文件和 NTFS 文件。 NTFS 在使用中產(chǎn)生的磁盤(pán)碎片要比 FAT32 少,安全性也更高,而且支持單個(gè)文件的容量更大,超過(guò)了 4GB , 特別適合現(xiàn)在的大容量存儲(chǔ)。 NTFS 可以支持的分區(qū) ( 如果采用動(dòng)態(tài)磁盤(pán)則稱(chēng)為卷 ) 大小可以達(dá)到 2TB ,而 Windows 2000 中的 FAT32 支持分區(qū)的大小最大為 32GB。
作者:deniro
鏈接:https://www.jianshu.com/p/e94fc7d228d9
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
總結(jié)
以上是生活随笔為你收集整理的操作系统实验文件管理_系统设计硬核知识(5)——操作系统的文件管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 谷歌翻译接口 破解
- 下一篇: Go语言实战抽奖系统