




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第6章 文 件 管 理 第6章 文件管理 6.1 文件管理概述6.2 Linux文件系統(tǒng) 6.3 Ext2文件系統(tǒng) 6.4 虛擬文件系統(tǒng) 習(xí)題 第6章 文 件 管 理 6.1 文件管理概述文件管理概述6.1.1 文件與文件系統(tǒng)文件與文件系統(tǒng)1. 文件文件文件是具有名字的一組相關(guān)信息的有序集合,存放在外部存儲(chǔ)器中。文件的名字稱為文件名,它是文件的標(biāo)識(shí)。文件的信息可以是各種各樣的,一個(gè)程序、一批數(shù)據(jù)、一張圖片、一段視頻等都可以作為文件的內(nèi)容。文件的存儲(chǔ)空間是具有長(zhǎng)久記憶特性的外部存儲(chǔ)器(如磁盤、磁帶等),因而文件是可以長(zhǎng)久保存的信息形式。所有需要在系統(tǒng)關(guān)機(jī)后仍能保留的信息都應(yīng)以文件的形式存在。第6
2、章 文 件 管 理 2. 文件系統(tǒng)文件系統(tǒng)文件系統(tǒng)是操作系統(tǒng)的一個(gè)重要組成部分,它負(fù)責(zé)管理系統(tǒng)中的文件,為用戶提供使用文件的操作接口。文件系統(tǒng)由實(shí)施文件管理的軟件和被管理的文件組成。文件系統(tǒng)軟件屬于系統(tǒng)內(nèi)核代碼,文件則按特定的格式存放在磁盤分區(qū)中。文件系統(tǒng)通常以磁盤分區(qū)劃分,每個(gè)分區(qū)對(duì)應(yīng)一個(gè)獨(dú)立的文件系統(tǒng)。歸納起來(lái),文件系統(tǒng)的功能包括以下幾項(xiàng): 實(shí)現(xiàn)文件的“按名存取”,包括按名建立、讀/寫、檢索、修改、刪除文件等操作。 管理分區(qū)存儲(chǔ)空間,實(shí)施存儲(chǔ)空間的分配、回收與重組。 實(shí)現(xiàn)對(duì)文件的共享、保密和保護(hù)措施。 提供文件訪問(wèn)接口。第6章 文 件 管 理 3. 文件的描述文件的描述為了實(shí)施和控制對(duì)文件
3、的各種訪問(wèn)操作,文件系統(tǒng)為每個(gè)文件都建立了一個(gè)文件控制塊(File Control Block,F(xiàn)CB)。文件的FCB的作用類似于進(jìn)程的PCB,它記錄了文件的使用者和管理者所關(guān)心的所有信息,包括文件名、屬主、文件大小、物理存儲(chǔ)位置、修改和訪問(wèn)時(shí)間、存取權(quán)限等。當(dāng)用戶創(chuàng)建一個(gè)新文件時(shí),文件系統(tǒng)就為這個(gè)文件建立起一個(gè)FCB。隨著文件的操作,F(xiàn)CB的內(nèi)容也相應(yīng)地變化。當(dāng)文件被刪除時(shí),它的FCB也就消失了。第6章 文 件 管 理 4. 文件目錄文件目錄計(jì)算機(jī)系統(tǒng)中通常存有大量的文件,系統(tǒng)須采用某種有效的形式來(lái)組織和管理這些文件。由于文件與文件的FCB一一對(duì)應(yīng),因此,管理文件就是管理文件的FCB。文件系
4、統(tǒng)采用目錄來(lái)組織文件。目錄是FCB的有序集合,通過(guò)目錄將所有的FCB分層分類地組織在一起,方便了文件的檢索操作。由于目錄的信息是需要長(zhǎng)久保存的,所以目錄也需以文件的形式存在。為此,系統(tǒng)定義了一種特殊的文件目錄文件,其內(nèi)容是一組FCB構(gòu)成的文件列表,每個(gè)表項(xiàng)是一個(gè)文件的FCB,在目錄里就稱為目錄項(xiàng)了。由于目錄本身也是文件,因此目錄的FCB也可以作為另一個(gè)目錄中的目錄項(xiàng),從而構(gòu)成目錄的層次關(guān)系。第6章 文 件 管 理 目錄的主要功能是實(shí)現(xiàn)文件的“按名存取”,即用戶只需提供文件名就可以對(duì)文件進(jìn)行各種操作。目錄實(shí)現(xiàn)了文件名到文件物理存放位置的映射。目錄的另一個(gè)功能是合理地組織文件?,F(xiàn)在,幾乎所有的操作
5、系統(tǒng)都采用樹形目錄結(jié)構(gòu),就是將文件分層分類地組織成一個(gè)樹狀結(jié)構(gòu),從根目錄開始向下延伸。樹形目錄結(jié)構(gòu)的特點(diǎn)是層次清楚,便于文件分類管理,可加快文件的檢索速度。另外,樹形目錄還允許文件重名,即只要文件不在同一目錄下便可以使用相同的名字。第6章 文 件 管 理 5. 文件的結(jié)構(gòu)文件的結(jié)構(gòu)文件結(jié)構(gòu)是文件內(nèi)容的組織方式。從不同層面上看到的文件結(jié)構(gòu)有所不同。圖6-1所示是文件在三個(gè)不同抽象層次上的結(jié)構(gòu)。第6章 文 件 管 理 圖6-1 文件的結(jié)構(gòu) 第6章 文 件 管 理 第6章 文 件 管 理 1) 文件的格式終端用戶是通過(guò)應(yīng)用程序來(lái)使用文件的,從他們的角度看到的是文件的應(yīng)用結(jié)構(gòu),也就是文件的格式。文件的
6、格式由處理文件的應(yīng)用程序定義和使用,通常以后綴名相區(qū)分。如“.doc”文件是由Word程序使用的格式,“.bmp”是圖片處理程序使用的格式。根據(jù)文件格式的結(jié)構(gòu)類型,文件大致可分為結(jié)構(gòu)化文件(如列表文件、數(shù)據(jù)庫(kù)文件等)、半結(jié)構(gòu)化文件(如Web文檔、圖片、圖像等)和無(wú)結(jié)構(gòu)文件(如純文本文件等)。第6章 文 件 管 理 2) 文件的邏輯結(jié)構(gòu)文件的邏輯結(jié)構(gòu)是文件系統(tǒng)的直接用戶(也就是應(yīng)用程序)所看到的文件結(jié)構(gòu)。文件的邏輯結(jié)構(gòu)取決于文件系統(tǒng)接口的設(shè)計(jì),它決定了文件存取的方式。應(yīng)用程序按邏輯結(jié)構(gòu)訪問(wèn)文件系統(tǒng)中的文件,并在此基礎(chǔ)上構(gòu)造出各種應(yīng)用結(jié)構(gòu)呈現(xiàn)給應(yīng)用程序的用戶。也就是說(shuō),應(yīng)用程序負(fù)責(zé)文件的格式與邏輯
7、結(jié)構(gòu)之間的映射。文件的邏輯結(jié)構(gòu)有記錄式文件和流式文件兩種,具體介紹見6.1.2小節(jié)。第6章 文 件 管 理 3) 文件的物理結(jié)構(gòu)文件的物理結(jié)構(gòu)又稱為存儲(chǔ)結(jié)構(gòu),是指文件在外存上的存儲(chǔ)組織形式。文件系統(tǒng)負(fù)責(zé)文件的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的映射。文件的物理結(jié)構(gòu)分為連續(xù)文件、鏈接文件和索引文件3種,具體介紹見6.1.3小節(jié)。操作系統(tǒng)所關(guān)心的是文件的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)。邏輯結(jié)構(gòu)是供文件系統(tǒng)的用戶使用的,物理結(jié)構(gòu)是文件系統(tǒng)內(nèi)部使用的。將邏輯結(jié)構(gòu)與物理結(jié)構(gòu)相區(qū)分,是為了向用戶屏蔽有關(guān)文件存儲(chǔ)的細(xì)節(jié),使用戶可以只憑簡(jiǎn)單的邏輯結(jié)構(gòu)來(lái)使用文件。第6章 文 件 管 理 6.1.2 文件的邏輯結(jié)構(gòu)與存取方式文件的邏輯結(jié)
8、構(gòu)與存取方式1. 文件的邏輯結(jié)構(gòu)文件的邏輯結(jié)構(gòu)文件的邏輯結(jié)構(gòu)是從文件的使用者角度所看到的文件信息的組織形式,它獨(dú)立于文件的物理存儲(chǔ)特性。文件的邏輯結(jié)構(gòu)主要分為兩種類型:一種是記錄式文件,另一種是流式文件。第6章 文 件 管 理 1) 記錄式文件記錄式文件由若干記錄組成,記錄具有固定的長(zhǎng)度和一致的內(nèi)部結(jié)構(gòu),其中有一個(gè)用于標(biāo)識(shí)記錄的記錄號(hào)字段。用戶程序預(yù)先定義好文件記錄的格式,文件系統(tǒng)就按此格式創(chuàng)建文件。訪問(wèn)文件時(shí)要向文件系統(tǒng)提供記錄號(hào),文件系統(tǒng)則以記錄為單位進(jìn)行文件的定位和讀/寫。記錄式文件是結(jié)構(gòu)化的文件,它就像一張表格,用戶程序要按預(yù)先規(guī)定的格式填寫數(shù)據(jù)和讀取數(shù)據(jù),使用起來(lái)不夠靈活,也不便于構(gòu)
9、造不規(guī)則的應(yīng)用格式。另外,記錄的大小與存儲(chǔ)塊的大小難以匹配,讀/寫操作的復(fù)雜度較高。由于這些原因,記錄式文件已漸被淘汰。第6章 文 件 管 理 2) 流式文件流式文件是由字節(jié)序列組成的文件,是無(wú)結(jié)構(gòu)的文件。用戶程序訪問(wèn)文件時(shí)只要指定文件的偏移位置和要讀/寫的字節(jié)數(shù),文件系統(tǒng)即可方便地存取指定部分的文件內(nèi)容。流式文件就像一張白紙,沒(méi)有任何格式上的限制。用戶程序可任意地在字節(jié)流上構(gòu)造自己的應(yīng)用格式。寫文件時(shí),用戶程序按自己定義的結(jié)構(gòu)來(lái)組織數(shù)據(jù),然后把它們作為字節(jié)流寫入文件;讀文件時(shí),將讀出的字節(jié)流再解釋成自己使用的結(jié)構(gòu)。因此說(shuō),無(wú)結(jié)構(gòu)實(shí)際上就是不限制結(jié)構(gòu)的意思,這為應(yīng)用程序提供了很大的靈活性,同時(shí)
10、又簡(jiǎn)化了文件系統(tǒng)的操作。所以現(xiàn)代流行的操作系統(tǒng),如Unix、Linux、Windows、OS/2等均采用流式文件作為文件的邏輯結(jié)構(gòu)。第6章 文 件 管 理 2. 文件的操作文件的操作對(duì)文件的操作主要有建立/刪除、打開/關(guān)閉、讀/寫、修改屬性等。建立文件時(shí)用戶要為文件指定一個(gè)文件名,文件系統(tǒng)以文件名為標(biāo)識(shí)建立文件的FCB,并為文件分配存儲(chǔ)空間等資源。刪除文件的操作與此相反,用戶指定要?jiǎng)h除的文件名,文件系統(tǒng)刪除該文件的FCB,并釋放其占用的存儲(chǔ)空間等資源。對(duì)文件的讀/寫操作都要經(jīng)過(guò)文件的FCB來(lái)進(jìn)行。由于FCB存放在外存空間中,如果每次讀/寫文件都要訪問(wèn)外存FCB的話,存取速度將很低。因此在對(duì)文件
11、進(jìn)行任何讀/寫操作前,需要先打開文件。打開文件就是在內(nèi)存中生成文件的FCB,并返回一個(gè)標(biāo)識(shí)其內(nèi)存FCB的文件標(biāo)識(shí)符,隨后的讀/寫操作將通過(guò)此文件標(biāo)識(shí)符進(jìn)行。所有讀/寫完成后應(yīng)關(guān)閉文件。關(guān)閉文件操作將內(nèi)存FCB的內(nèi)容寫回外存FCB,回收文件描述符,并刪除內(nèi)存中的文件FCB。第6章 文 件 管 理 3. 文件的存取方式文件的存取方式不論是記錄式文件還是流式文件,其邏輯結(jié)構(gòu)都是一維的,但存取方式有所不同。這里針對(duì)流式文件的存取方式介紹如何根據(jù)邏輯結(jié)構(gòu)存取文件。存取文件指的是對(duì)文件的讀/寫操作。每個(gè)打開的文件都有一個(gè)指示讀/寫位置的指針offset,如圖6-2所示。文件剛打開時(shí),讀/寫位置位于文件頭0
12、字節(jié)處。每次讀/寫文件時(shí)(比如用C函數(shù)read()和write()等),根據(jù)給定的長(zhǎng)度參數(shù)讀/寫count個(gè)字節(jié),完成后位置指針會(huì)自動(dòng)移到讀/寫完的位置之后,這樣下次讀/寫就接著本次的位置順序地進(jìn)行下去。必要時(shí),也可以通過(guò)設(shè)置讀/寫位置指針來(lái)改變讀/寫的次序。例如,需要追加寫入時(shí),需先將位置指針定位到文件尾。應(yīng)用程序?qū)α魇轿募拇嫒》绞接袃煞N,即順序存取和隨機(jī)存取。第6章 文 件 管 理 圖6 2 流式文件的存取 第6章 文 件 管 理 1) 順序存取順序存取就是從文件頭開始順序地訪問(wèn)文件的每一段信息,直到文件尾。應(yīng)用程序在加載、保存、傳輸文件時(shí),或?qū)ξ募瞿承┻^(guò)濾性處理時(shí),都要對(duì)文件進(jìn)行順序
13、存取操作。順序存取的通常做法是在一個(gè)循環(huán)中調(diào)用文件讀/寫函數(shù),直到遇到文件結(jié)束符(EOF)。第6章 文 件 管 理 2) 隨機(jī)存取隨機(jī)存取也稱為直接存取,就是從文件的指定位置開始存取一段數(shù)據(jù)。很多應(yīng)用場(chǎng)合需要隨機(jī)存取,例如,數(shù)據(jù)庫(kù)管理程序從數(shù)據(jù)庫(kù)表文件中讀取或修改一個(gè)記錄就是一種隨機(jī)存取。隨機(jī)存取的方法是:先將讀/寫指針定位到文件的指定位移處(比如用C函數(shù)lseek()等),然后從此位置開始存取指定字節(jié)數(shù)的一段數(shù)據(jù)。第6章 文 件 管 理 6.1.3 文件的物理結(jié)構(gòu)與存儲(chǔ)方式文件的物理結(jié)構(gòu)與存儲(chǔ)方式文件的物理結(jié)構(gòu)是文件在外存中的組織和存放形式,是文件系統(tǒng)底層所使用的文件結(jié)構(gòu)。文件的物理結(jié)構(gòu)與存
14、儲(chǔ)介質(zhì)的物理特性有關(guān)。在介紹文件的物理結(jié)構(gòu)之前有必要了解一些存儲(chǔ)設(shè)備的知識(shí)和存儲(chǔ)空間的結(jié)構(gòu)。文件的存儲(chǔ)設(shè)備包括磁帶、磁盤、閃存、光盤等,典型的存儲(chǔ)設(shè)備是磁盤。下面簡(jiǎn)單介紹磁盤的物理結(jié)構(gòu)及磁盤空間的邏輯結(jié)構(gòu)。第6章 文 件 管 理 1. 磁盤的物理結(jié)構(gòu)磁盤的物理結(jié)構(gòu)磁盤的結(jié)構(gòu)如圖6-3所示。磁盤由一組盤片組成,每個(gè)盤片有兩個(gè)盤面,在對(duì)磁盤進(jìn)行物理格式化時(shí),在盤面上劃分出多個(gè)同心圓,稱為磁道(track)。所有盤面的相同位置的磁道組成的圓柱體,稱為柱面(cylinder)。每個(gè)磁道又劃分為多個(gè)弧段,稱為扇區(qū)(sector),通常的大小是512字節(jié)。扇區(qū)是磁盤的物理塊,是磁盤上可尋址的最小存儲(chǔ)單位。
15、文件的數(shù)據(jù)就存儲(chǔ)在一系列扇區(qū)中。第6章 文 件 管 理 圖6-3 磁盤結(jié)構(gòu)示意圖(上為俯視圖,下為側(cè)視圖) 第6章 文 件 管 理 磁盤在啟動(dòng)后高速旋轉(zhuǎn)。每個(gè)磁面上有一個(gè)磁頭,可以在不同磁道之間來(lái)回移動(dòng)。扇區(qū)的定位參數(shù)有三個(gè),即柱面號(hào)、磁頭號(hào)和扇區(qū)號(hào)。訪問(wèn)磁盤時(shí),先將磁頭移動(dòng)到指定的柱面上,等待要訪問(wèn)的扇區(qū)轉(zhuǎn)到磁頭下,然后指定的磁頭開始讀/寫數(shù)據(jù)。第6章 文 件 管 理 2. 磁盤空間的邏輯結(jié)構(gòu)磁盤空間的邏輯結(jié)構(gòu)由于磁盤是高速設(shè)備,一次讀/寫操作可以同時(shí)訪問(wèn)多個(gè)相鄰的扇區(qū)(通常是在同一柱面上)。因此,文件系統(tǒng)在讀/寫磁盤時(shí)不是以扇區(qū)為單位,而是以塊為單位的。塊(block)由若干個(gè)相鄰的扇區(qū)組
16、成,它是對(duì)存儲(chǔ)空間的邏輯劃分。塊的大小依賴于文件系統(tǒng)的設(shè)置和磁盤容量,但必須是扇區(qū)大小的2的整數(shù)倍,并且要小于內(nèi)存頁(yè)幀的大小。通常塊的大小是512B、1KB或4KB。在文件系統(tǒng)看來(lái),磁盤的存儲(chǔ)空間是由許多在邏輯上連續(xù)的塊組成的,它們從0到n編號(hào),如圖6-4所示。文件系統(tǒng)以塊為單位保存文件數(shù)據(jù),也以塊為單位傳輸數(shù)據(jù)。所以稱這類存儲(chǔ)設(shè)備為塊設(shè)備。訪問(wèn)文件時(shí),只要指定塊號(hào)即可,不必關(guān)心它對(duì)應(yīng)的扇區(qū)的位置,磁盤驅(qū)動(dòng)程序會(huì)進(jìn)行邏輯塊到物理塊(扇區(qū))的轉(zhuǎn)換。第6章 文 件 管 理 圖6-4 磁盤存儲(chǔ)空間的邏輯結(jié)構(gòu) 第6章 文 件 管 理 3. 文件的物理結(jié)構(gòu)文件的物理結(jié)構(gòu)文件的物理結(jié)構(gòu)主要有3種:連續(xù)文件
17、、鏈接文件和索引文件。 1) 連續(xù)文件連續(xù)文件的存儲(chǔ)方案是將文件的內(nèi)容按邏輯順序存放在連續(xù)的存儲(chǔ)塊中,這是最簡(jiǎn)單的存儲(chǔ)分配方案,如圖6-5所示。假設(shè)磁盤空間采用4K大小的塊,文件A的大小為25K,系統(tǒng)為它分配了連續(xù)的7塊。文件B的大小為10K,系統(tǒng)為它分配了連續(xù)的3塊。它們的存儲(chǔ)空間是連續(xù)的,起始?jí)K號(hào)和占用的塊數(shù)都記錄在它們各自的目錄項(xiàng)中。第6章 文 件 管 理 圖6-5 連續(xù)文件的存儲(chǔ)結(jié)構(gòu)示意圖 第6章 文 件 管 理 連續(xù)存儲(chǔ)方案的優(yōu)點(diǎn)是簡(jiǎn)單、存取速度快。由于文件內(nèi)容是連續(xù)存放的,訪問(wèn)時(shí)磁頭移動(dòng)較少,因而無(wú)論順序存取還是隨機(jī)存取,其性能都很好。它的缺點(diǎn)之一是限制了文件的動(dòng)態(tài)增長(zhǎng)。另一個(gè)缺點(diǎn)
18、是磁盤碎片問(wèn)題,即經(jīng)過(guò)一系列的文件空間分配和回收操作后,空閑空間逐漸變得支離破碎,無(wú)法容納新文件。磁盤碎片降低了外存空間的利用率,需要經(jīng)常進(jìn)行磁盤壓縮整理。由于這些缺點(diǎn),連續(xù)文件不適合用于磁盤等直接存取設(shè)備。它主要用于在順序存取設(shè)備(如磁帶)或只讀存儲(chǔ)設(shè)備(如只讀光盤)上存儲(chǔ)文件。第6章 文 件 管 理 2) 鏈接文件鏈接文件的存儲(chǔ)思想是:文件內(nèi)容可以存放在彼此不連續(xù)的存儲(chǔ)塊中,用指針拉鏈的方式表示文件內(nèi)容的邏輯順序。做法是:每個(gè)塊留出一個(gè)空間來(lái)存放指向下一塊地址的指針。在目錄項(xiàng)中記錄了文件首塊的磁盤地址,從首塊出發(fā)可以依次找到其他各塊,如圖6-6所示。圖中,文件A占用了4個(gè)存儲(chǔ)塊,依次是12
19、911;文件B占用了5個(gè)存儲(chǔ)塊,依次是5631518。第6章 文 件 管 理 與連續(xù)存儲(chǔ)方案相比,鏈接存儲(chǔ)中不再有磁盤碎片問(wèn)題,因?yàn)槊總€(gè)塊都可以被利用。然而,鏈接文件的主要缺點(diǎn)是存取效率問(wèn)題。由于不是連續(xù)存放,造成訪問(wèn)時(shí)磁頭移動(dòng)次數(shù)較多,順序存取還算方便,但直接存取就相當(dāng)緩慢了。另外,由于指針占去了一些字節(jié),每個(gè)塊的字節(jié)數(shù)不再是2的冪,增加了讀/寫操作的復(fù)雜度。因?yàn)榇蠖鄶?shù)程序都是以2的冪為長(zhǎng)度來(lái)讀/寫塊的。第6章 文 件 管 理 圖6-6 鏈接文件的存儲(chǔ)結(jié)構(gòu)示意圖 第6章 文 件 管 理 目前,實(shí)際使用的鏈接文件是針對(duì)以上問(wèn)題進(jìn)行了改進(jìn)的方案。改進(jìn)的思想是將指針部分從存儲(chǔ)塊中提出來(lái),單獨(dú)存放在
20、一個(gè)鏈接表中。鏈接表的每一項(xiàng)對(duì)應(yīng)一個(gè)存儲(chǔ)塊,其內(nèi)容是該塊所鏈接的下一個(gè)塊的塊號(hào)。圖6-7所示是文件分配鏈接表方案的示意圖。圖中描述了與圖的分配情形相同的兩條塊號(hào)鏈,一條是文件A的鏈,從表項(xiàng)1開始;另一條是文件B的鏈,從表項(xiàng)5開始。第6章 文 件 管 理 圖6-7 文件分配鏈接表示意圖 第6章 文 件 管 理 鏈接表占用的空間小,可以放在內(nèi)存中。當(dāng)需要訪問(wèn)文件時(shí),只要在表中順著鏈進(jìn)行查找即可,不需要訪問(wèn)磁盤,因而提高了文件定位的速度。Windows的FAT文件系統(tǒng)采用的就是這種改進(jìn)的鏈接文件結(jié)構(gòu)。鏈接文件的優(yōu)點(diǎn)是允許文件長(zhǎng)度動(dòng)態(tài)變化,外存空間利用率高;缺點(diǎn)是存取效率(尤其是直接存取的效率)較連續(xù)
21、文件低。對(duì)小文件來(lái)說(shuō)沒(méi)有問(wèn)題,但文件越大存取效率就越低。因此,鏈接文件更適合于小型文件系統(tǒng)。第6章 文 件 管 理 雖然在建立文件時(shí)文件系統(tǒng)會(huì)盡量為文件分配連續(xù)的區(qū)域,但經(jīng)過(guò)一段時(shí)間的文件動(dòng)態(tài)增長(zhǎng)或縮減操作后,文件的各存儲(chǔ)塊可能會(huì)變得過(guò)度分散,各文件的塊鏈穿插交錯(cuò),使存取效率大大降低。為解決這個(gè)問(wèn)題,Windows的FAT文件系統(tǒng)采用了磁盤整理的方法。當(dāng)文件訪問(wèn)效率下降時(shí),通過(guò)磁盤整理來(lái)重新調(diào)整文件在存儲(chǔ)空間中的分布,使其盡可能連續(xù)。第6章 文 件 管 理 3) 索引文件索引文件的存儲(chǔ)方案也是允許將文件內(nèi)容存放在不連續(xù)的存儲(chǔ)塊中,但它是用索引表來(lái)建立文件內(nèi)容與存儲(chǔ)塊之間的聯(lián)系的。索引文件的分配
22、思想與頁(yè)式內(nèi)存分配很相似,索引表就如同頁(yè)表的作用。圖6-8所示為索引文件的存儲(chǔ)結(jié)構(gòu)示意圖,文件A占用了4塊,依次是第7、0、9、14塊。通過(guò)文件的索引表可以直接找到各塊。第6章 文 件 管 理 圖6-8 索引文件的存儲(chǔ)結(jié)構(gòu)示意圖 第6章 文 件 管 理 第6章 文 件 管 理 索引文件具有鏈接文件的優(yōu)點(diǎn),文件定位速度更快,順序存取和隨機(jī)存取效率都比較高。索引文件的缺點(diǎn)是占用的存儲(chǔ)空間較多,因?yàn)樗饕肀旧硇枵加靡欢ǖ拇鎯?chǔ)空間。對(duì)于只有12塊的小文件來(lái)說(shuō),雖然其索引表很小,但也要占用同樣的存儲(chǔ)空間。因此,對(duì)于小文件較多的系統(tǒng)來(lái)說(shuō),空間的浪費(fèi)比較明顯,索引表的查找速度優(yōu)勢(shì)也并不明顯。總的說(shuō)來(lái),索引文
23、件更適合于追求性能的大中型文件系統(tǒng),如Unix、Linux的文件系統(tǒng)都采用了一種多重索引的文件結(jié)構(gòu),具體介紹見6.3.1小節(jié)。第6章 文 件 管 理 6.1.4 文件的共享與保護(hù)文件的共享與保護(hù)1. 文件共享文件共享在多用戶系統(tǒng)中,有時(shí)會(huì)有多個(gè)用戶需要使用同一個(gè)文件的情況,比如一個(gè)項(xiàng)目組成員都要用到某些項(xiàng)目文件。如果每個(gè)用戶都保存一個(gè)文件副本則會(huì)浪費(fèi)很多的存儲(chǔ)空間。文件共享是指允許一個(gè)文件被多個(gè)用戶或進(jìn)程共同使用。這樣可以節(jié)省存儲(chǔ)空間和傳輸時(shí)間,并可避免因存在多個(gè)文件副本而可能發(fā)生的不一致的現(xiàn)像。第6章 文 件 管 理 實(shí)現(xiàn)文件共享的方法是鏈接法。當(dāng)需要共享某個(gè)已存在的文件時(shí),可以建立一個(gè)特殊
24、的文件,稱為鏈接文件。這個(gè)文件有獨(dú)立的文件名,但并無(wú)實(shí)際的文件內(nèi)容,它的作用是建立一條到共享文件的通路。因此,鏈接文件名可以看做原共享文件的別名,它們都指向相同的文件內(nèi)容,訪問(wèn)鏈接文件就是在訪問(wèn)共享文件本身。在Linux系統(tǒng)中,鏈接文件被作為一種特殊的文件類型來(lái)對(duì)待,關(guān)于鏈接法的更詳細(xì)的介紹見6.3.1小節(jié)。對(duì)于共享文件,可能會(huì)發(fā)生多個(gè)進(jìn)程同時(shí)存取同一文件的情況,文件系統(tǒng)必須提供同步控制機(jī)制,以保證文件內(nèi)容的完整性。第6章 文 件 管 理 2. 文件的保護(hù)文件的保護(hù)文件保護(hù)的目的是防止文件被未授權(quán)的用戶訪問(wèn),造成泄密或意外的破壞。在多用戶系統(tǒng)環(huán)境下,文件保護(hù)特重要。保護(hù)文件的主要手段是控制用戶
25、對(duì)文件的存取權(quán)限。文件的存取權(quán)限包括讀、寫和執(zhí)行權(quán)。適當(dāng)?shù)卦O(shè)置存取權(quán)限可以防止文件泄密、毀壞和被非法使用。不同的用戶對(duì)文件的權(quán)限要求也是不同的,因此在權(quán)限分配時(shí)要根據(jù)用戶的性質(zhì)、職能、需求等對(duì)用戶進(jìn)行分類,對(duì)不同種類的用戶分別授權(quán)。當(dāng)用戶進(jìn)行文件操作時(shí),系統(tǒng)根據(jù)用戶的身份和文件的權(quán)限設(shè)置判斷用戶是否有權(quán)執(zhí)行這個(gè)操作。符合存取權(quán)限的操作將被執(zhí)行,違反權(quán)限的操作系統(tǒng)將拒絕執(zhí)行。第6章 文 件 管 理 通常有兩種用戶分類方法:一是將用戶分為系統(tǒng)管理員和普通用戶兩類,所有普通用戶具有相同的訪問(wèn)權(quán)限。這是一種比較粗糙的分類,一般用于個(gè)人操作系統(tǒng)。另一種是Unix/Linux采用的分類方法,將用戶分為超級(jí)
26、用戶、文件屬主、組用戶和其他用戶4類??梢詾槊款愑脩粼O(shè)置不同的訪問(wèn)權(quán)限,從而實(shí)現(xiàn)了細(xì)粒度的權(quán)限控制。第6章 文 件 管 理 6.1.5 文件存儲(chǔ)空間的管理文件存儲(chǔ)空間的管理文件系統(tǒng)要對(duì)文件的存儲(chǔ)空間進(jìn)行管理,管理工作包括:建立文件時(shí)為文件分配存儲(chǔ)空間;刪除文件時(shí)回收文件占用的存儲(chǔ)空間;修改文件時(shí)動(dòng)態(tài)地分配和回收文件的存儲(chǔ)空間。不同的文件系統(tǒng)對(duì)文件存儲(chǔ)空間的管理方案也不同,常用的管理方案有以下3種:第6章 文 件 管 理 1. 位示圖位示圖位示圖是由若干個(gè)字節(jié)組成的一張表,如圖6-9所示。每個(gè)字節(jié)的每一位對(duì)應(yīng)一個(gè)存儲(chǔ)塊的狀態(tài),為“1”表示該塊已被占用,“0”表示該塊空閑。位示圖法適合于索引文件。
27、分配時(shí),先掃描位示圖,找到足夠的空閑塊(對(duì)應(yīng)位為“0”),分配給文件,并將對(duì)應(yīng)的位改為“1”;回收時(shí),將對(duì)應(yīng)的位改為“0”即可。由于位示圖的體積較小,可以全部或部分保存的內(nèi)存中,因此可實(shí)現(xiàn)高速的分配算法。第6章 文 件 管 理 圖6-9 位示圖 第6章 文 件 管 理 2. 空閑區(qū)表空閑區(qū)表空閑區(qū)表是記錄連續(xù)的空閑區(qū)域的表格,表格中的每一項(xiàng)記錄一個(gè)空閑區(qū)的起始?jí)K號(hào)和塊數(shù),如圖6-10所示??臻e塊表法適合于連續(xù)文件。分配時(shí),依次掃描空閑區(qū)表,查找大小合適的空閑區(qū),分配給文件。如果空閑區(qū)大小正好是文件需要的塊數(shù),則刪去該表項(xiàng);否則修改該表項(xiàng),扣除被文件占用的區(qū)域。回收時(shí),將文件釋放的區(qū)域填入空閑區(qū)
28、表。如果與其他空閑區(qū)發(fā)生鄰接,則將鄰接區(qū)域的表項(xiàng)合并。第6章 文 件 管 理 圖6-10 空閑塊表 第6章 文 件 管 理 3. 空閑塊鏈表空閑塊鏈表將所有空閑塊的塊號(hào)用鏈表形式鏈在一起就形成了一個(gè)空閑塊鏈表,如圖6-11所示。空閑塊鏈表法適合于鏈?zhǔn)轿募?。分配時(shí),從鏈表頭取下若干鏈表節(jié)點(diǎn),將對(duì)應(yīng)的空閑塊分配給文件使用;回收時(shí),將文件釋放的空閑塊的塊號(hào)鏈入鏈表中。第6章 文 件 管 理 圖6-11 空閑塊鏈表 第6章 文 件 管 理 6.2 Linux文件系統(tǒng)文件系統(tǒng)6.2.1 Linux文件系統(tǒng)的特點(diǎn)文件系統(tǒng)的特點(diǎn)Linux繼承了Unix文件系統(tǒng)的優(yōu)秀設(shè)計(jì),并結(jié)合了一些現(xiàn)代文件系統(tǒng)的先進(jìn)技術(shù),
29、在開放性、可擴(kuò)展性和性能方面都十分出色。以下介紹Linux文件系統(tǒng)的幾個(gè)主要特征。第6章 文 件 管 理 1. 支持多種文件系統(tǒng)支持多種文件系統(tǒng)許多操作系統(tǒng)(如DOS、Windows等)只支持一種或幾種專用的文件系統(tǒng),而Linux系統(tǒng)則可以支持幾乎所有流行的文件系統(tǒng)。這使得Linux可以和許多其他操作系統(tǒng)共存,允許用戶訪問(wèn)其他操作系統(tǒng)分區(qū)中的文件。用戶可以使用標(biāo)準(zhǔn)的系統(tǒng)調(diào)用操作各個(gè)文件系統(tǒng)中的文件,并可在它們之間自由地復(fù)制和移動(dòng)文件。這種兼容性帶來(lái)的另一個(gè)好處是Linux用戶可以根據(jù)應(yīng)用需要選擇最適合的文件系統(tǒng),并可體驗(yàn)眾多文件系統(tǒng)新產(chǎn)品的先進(jìn)特色。第6章 文 件 管 理 2. 樹型可掛裝目錄
30、結(jié)構(gòu)樹型可掛裝目錄結(jié)構(gòu)Linux系統(tǒng)采用了樹型目錄和分區(qū)掛裝的概念,系統(tǒng)分區(qū)上的文件系統(tǒng)稱為根文件系統(tǒng),其他所有分區(qū)的文件系統(tǒng)都要掛裝(mount)到根文件系統(tǒng)下的某個(gè)目錄下,然后通過(guò)根目錄來(lái)訪問(wèn)。因此,與Windows系統(tǒng)將每個(gè)分區(qū)獨(dú)立為一棵樹不同,Linux文件系統(tǒng)總是只有一棵樹,不管掛入的是本地磁盤分區(qū)還是網(wǎng)絡(luò)上的文件系統(tǒng),它們都與根文件系統(tǒng)無(wú)縫結(jié)合,用戶訪問(wèn)這些分區(qū)就如同訪問(wèn)根文件系統(tǒng)所在分區(qū)一樣。另外,Linux支持動(dòng)態(tài)地掛裝和卸載文件系統(tǒng),允許用戶靈活地組織和擴(kuò)充存儲(chǔ)空間。第6章 文 件 管 理 3. 文件、設(shè)備統(tǒng)一管理文件、設(shè)備統(tǒng)一管理Linux將設(shè)備也抽象為文件來(lái)處理,使用戶可
31、以像讀/寫文件一樣地操作設(shè)備進(jìn)行I/O操作。這樣做既簡(jiǎn)化了系統(tǒng)結(jié)構(gòu)和代碼,又方便了用戶對(duì)設(shè)備的使用。在第7章中將介紹Linux如何通過(guò)文件系統(tǒng)來(lái)管理設(shè)備。第6章 文 件 管 理 6.2.2 Linux文件系統(tǒng)的結(jié)構(gòu)文件系統(tǒng)的結(jié)構(gòu)Linux文件系統(tǒng)采用了分層結(jié)構(gòu)的設(shè)計(jì),如圖6-12所示。Linux文件系統(tǒng)由以下幾個(gè)主要部分組成:第6章 文 件 管 理 圖6-12 Linux文件系統(tǒng)的結(jié)構(gòu) 第6章 文 件 管 理 1. 設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序文件系統(tǒng)需要利用存儲(chǔ)設(shè)備來(lái)存儲(chǔ)文件,因此,存儲(chǔ)設(shè)備是文件系統(tǒng)的物質(zhì)基礎(chǔ)。除此之外,Linux系統(tǒng)中的其他設(shè)備也是作為文件由文件系統(tǒng)統(tǒng)一管理的。所有這些設(shè)備都
32、由特定的設(shè)備驅(qū)動(dòng)程序直接控制,它們負(fù)責(zé)設(shè)備的啟動(dòng)、數(shù)據(jù)傳輸控制和中斷處理等工作。Linux的各種設(shè)備驅(qū)動(dòng)程序都通過(guò)統(tǒng)一的接口與文件系統(tǒng)連接。文件系統(tǒng)向用戶提供使用文件的接口,設(shè)備驅(qū)動(dòng)程序則控制設(shè)備實(shí)現(xiàn)具體的文件I/O操作。第6章 文 件 管 理 2. 實(shí)際文件系統(tǒng)文件系統(tǒng)是以磁盤分區(qū)來(lái)劃分的,每個(gè)磁盤分區(qū)由一個(gè)具體的文件系統(tǒng)管理,不同分區(qū)的文件系統(tǒng)可以不同。Linux系統(tǒng)支持多種不同格式的文件系統(tǒng),除了專為L(zhǎng)inux設(shè)計(jì)的Ext2/Ext3、JFS、XFS、ReiserFS和NFS之外,還支持Unix系統(tǒng)的sysv、ufs、bfs,Minix系統(tǒng)的minx、XIA,Windows系統(tǒng)的FAT3
33、2、NTFS,DOS系統(tǒng)的FAT16,以及OS/2系統(tǒng)的hpfs等。這些文件系統(tǒng)都可以在Linux系統(tǒng)中工作。Linux默認(rèn)使用的文件系統(tǒng)是Ext2/Ext3。第6章 文 件 管 理 3. 虛擬文件系統(tǒng)虛擬文件系統(tǒng)實(shí)際文件系統(tǒng)通常是為不同的操作系統(tǒng)設(shè)計(jì)和使用的,它們具有不同的組織結(jié)構(gòu)和文件操作接口函數(shù),相互之間往往差別很大。為了屏蔽各個(gè)文件系統(tǒng)之間的差異,為用戶提供訪問(wèn)文件的統(tǒng)一接口,Linux在具體的文件系統(tǒng)上增加了一個(gè)稱為虛擬文件系統(tǒng)(Virtual File System,VFS)的抽象層。虛擬文件系統(tǒng)運(yùn)行在最上層,它采用一致的文件描述結(jié)構(gòu)和文件操作函數(shù),使得不同的文件系統(tǒng)按照同樣的模式
34、呈現(xiàn)在用戶面前。有了VFS,用戶覺(jué)察不到文件系統(tǒng)之間的差異,可以使用同樣的命令和系統(tǒng)調(diào)用來(lái)操作不同文件系統(tǒng),并可以在它們之間自由地復(fù)制文件。第6章 文 件 管 理 4. 緩存機(jī)制緩存機(jī)制文件系統(tǒng)和存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)傳輸時(shí)采用了緩存技術(shù)來(lái)提高外存數(shù)據(jù)的訪問(wèn)效率。緩存區(qū)是在內(nèi)存中劃分的特定區(qū)域。每次從外設(shè)讀取的數(shù)據(jù)都暫時(shí)存放在這里。下次讀取數(shù)據(jù)時(shí),首先搜索緩存區(qū),如果有需要的數(shù)據(jù),則直接從這里讀?。蝗绻彺鎱^(qū)中沒(méi)有,則再啟動(dòng)設(shè)備讀取相應(yīng)的數(shù)據(jù)。對(duì)于寫入磁盤的數(shù)據(jù),也先放入到緩存區(qū)中,然后再分批寫出到磁盤中。使用緩存技術(shù)使得大多數(shù)數(shù)據(jù)傳輸都直接在進(jìn)程的內(nèi)存空間和緩存區(qū)之間進(jìn)行,減少了外部設(shè)備的訪問(wèn)次數(shù)
35、,提高了系統(tǒng)的整體性能。VFS文件系統(tǒng)使用了緩沖區(qū)緩存、目錄項(xiàng)緩存以及i節(jié)點(diǎn)緩存等技術(shù),使得整個(gè)文件系統(tǒng)具有相當(dāng)高的效率。第6章 文 件 管 理 6.3 Ext2文件系統(tǒng)文件系統(tǒng)Ext2(Extended-2)文件系統(tǒng)是專為L(zhǎng)inux系統(tǒng)設(shè)計(jì)的一種文件系統(tǒng)。它采用的是Unix文件系統(tǒng)的設(shè)計(jì)思想,運(yùn)行穩(wěn)定,存取效率也很高,可支持最大4TB(1T=1024G)的磁盤分區(qū)。2000年以前,它一直是幾乎所有的Linux發(fā)行版的默認(rèn)的文件系統(tǒng)。Ext2的弱點(diǎn)在于它是一個(gè)非日志文件系統(tǒng)。日志文件系統(tǒng)可以在系統(tǒng)發(fā)生斷電或者其他系統(tǒng)故障時(shí)保證文件數(shù)據(jù)的完整性,這對(duì)關(guān)鍵行業(yè)的應(yīng)用是十分重要的。近年來(lái)Ext2已逐
36、漸被它的升級(jí)版Ext3取代。Ext3是一個(gè)基于Ext2開發(fā)的日志文件系統(tǒng)。它具有健全的日志功能,可靠性很高。在非正常關(guān)機(jī)后,文件系統(tǒng)可在數(shù)十秒鐘內(nèi)自行修復(fù)。另外,Ext3文件系統(tǒng)的容量有了很大的提高,可以支持最大32TB的文件系統(tǒng)和最大2TB的文件。目前Ext3已被許多Linux發(fā)行版作為默認(rèn)安裝的文件系統(tǒng)。第6章 文 件 管 理 目前,第4代Ext文件系統(tǒng)Ext4正處于試用階段。Ext4最為顯著的改進(jìn)是文件和文件系統(tǒng)的大小。Ext4文件系統(tǒng)的容量達(dá)到1024PB(1P=1024T),而文件大小則可達(dá)到16TB。本節(jié)對(duì)Ext2文件系統(tǒng)進(jìn)行分析和介紹,其基本結(jié)構(gòu)和操作同樣也適用于Ext3和Ext
37、4。第6章 文 件 管 理 6.3.1 Ext2文件的結(jié)構(gòu)文件的結(jié)構(gòu)Ext2文件的邏輯結(jié)構(gòu)是無(wú)結(jié)構(gòu)的流式文件?;谧止?jié)流的概念,使得Linux系統(tǒng)可以把目錄、設(shè)備等都當(dāng)作文件來(lái)統(tǒng)一對(duì)待。Ext2文件的物理結(jié)構(gòu)采用易于擴(kuò)展的多重索引方式,便于文件動(dòng)態(tài)增長(zhǎng),同時(shí)也可以方便地實(shí)現(xiàn)順序和隨機(jī)訪問(wèn)。第6章 文 件 管 理 1. Ext2文件的描述文件的描述Ext2文件系統(tǒng)采用了改進(jìn)的FCB結(jié)構(gòu)來(lái)描述文件。FCB要描述的信息比較多,所以一般要占較多的空間。當(dāng)目錄下的文件很多時(shí),目錄文件(其內(nèi)容是目錄項(xiàng)列表)就會(huì)很大,往往需要占用多個(gè)存儲(chǔ)塊,這將導(dǎo)致目錄檢索的效率下降。改進(jìn)的方法是將FCB分解為兩個(gè)部分:主
38、部和次部。FCB主部包含除文件名之外的全部信息,稱為索引節(jié)點(diǎn)或i節(jié)點(diǎn)。次部只包含文件名和主部的標(biāo)識(shí)號(hào)碼(即i節(jié)點(diǎn)號(hào))。文件目錄由各文件的FCB次部組成,主要實(shí)現(xiàn)按名檢索的目的。由于目錄項(xiàng)(即FCB次部)很小, 目錄文件也就很小, 按文件名檢索的速度很快,檢索到后就可以立即找到文件的i節(jié)點(diǎn)了。第6章 文 件 管 理 Ext2目錄項(xiàng)(directory entry)主要包括文件名和i節(jié)點(diǎn)號(hào)兩部分。i節(jié)點(diǎn)號(hào)用于指示i節(jié)點(diǎn)的存放位置,文件名用于文件檢索。Ext2文件系統(tǒng)支持最長(zhǎng)255個(gè)字符的長(zhǎng)文件名。Ext2文件系統(tǒng)采用索引節(jié)點(diǎn)(inode)方式來(lái)描述文件,系統(tǒng)中的所有文件(包括目錄和設(shè)備)都對(duì)應(yīng)一個(gè)
39、唯一的i節(jié)點(diǎn)。i節(jié)點(diǎn)的內(nèi)容包含文件說(shuō)明信息和索引表兩部分,文件說(shuō)明信息部分包括模式(訪問(wèn)權(quán)限與類型)、所有者(屬主和屬組)、長(zhǎng)度、時(shí)間戳、連接數(shù)等信息。索引表部分是指向文件存儲(chǔ)塊的索引指針。圖6-13是Ext2文件的目錄項(xiàng)和索引節(jié)點(diǎn)的結(jié)構(gòu)。第6章 文 件 管 理 圖6-13 Ext2文件的描述 第6章 文 件 管 理 2. Ext2索引結(jié)構(gòu)索引結(jié)構(gòu)Ext2文件采用了多重索引的物理結(jié)構(gòu),用i節(jié)點(diǎn)中的索引表描述,見圖6-14。索引表中前12個(gè)表項(xiàng)是直接指針,直接指向文件的數(shù)據(jù)塊。這些塊稱為直接塊。第13個(gè)表項(xiàng)是一個(gè)一級(jí)間接指針,它指向一個(gè)索引塊。索引塊中存放的是間接索引表,通過(guò)間接索引表中的指針再
40、指向數(shù)據(jù)塊。這些由間接指針指向的塊稱為間接塊。類似的,索引表的第14項(xiàng)和第15項(xiàng)提供了一個(gè)二次間接和一個(gè)三次間接指針,可提供對(duì)更多的間接塊的索引。提供多級(jí)間接指針的目的是為了表達(dá)大型文件的結(jié)構(gòu)。第6章 文 件 管 理 圖6-14 Ext2文件的多重索引結(jié)構(gòu) 第6章 文 件 管 理 Ext2文件系統(tǒng)的默認(rèn)塊大小是1KB。對(duì)于12K以下的小文件,不需要使用間接索引,所有信息均在i節(jié)點(diǎn)中,因此訪問(wèn)的速度非常快。大一些的文件,需要用到一個(gè)間接索引塊。一個(gè)間接索引表含有256個(gè)間接指針(每個(gè)指針占4字節(jié),則1K大的塊可容納256個(gè)指針),可以索引256個(gè)間接塊。因此,大小在12K268K的文件需要一次間
41、接,訪問(wèn)速度會(huì)有所降低。而對(duì)于大型的文件,可以使用二次間接甚至三次間接指針,得到最大約16GB的文件。第6章 文 件 管 理 3. Ext2目錄文件的描述目錄文件的描述目錄文件的描述結(jié)構(gòu)與普通文件一樣,每個(gè)目錄文件對(duì)應(yīng)一個(gè)目錄項(xiàng)(在其父目錄中)以及一個(gè)i節(jié)點(diǎn)。不同之處在于目錄文件的內(nèi)容數(shù)據(jù)塊中存放的是一個(gè)目錄項(xiàng)列表,包含了該目錄下的所有文件的目錄項(xiàng),頭兩個(gè)目錄項(xiàng)是“.”和“.”。Ext2目錄結(jié)構(gòu)如圖6-15所示。第6章 文 件 管 理 圖6-15Ext2目錄結(jié)構(gòu) 第6章 文 件 管 理 目錄文件A的內(nèi)容是一個(gè)含有6個(gè)目錄項(xiàng)的列表,其中“.”文件就是本文件的別名,它的i節(jié)點(diǎn)域指向了本文件的i節(jié)點(diǎn)
42、,“.”文件是父目錄文件的別名,它的i節(jié)點(diǎn)域指向了父目錄文件的i節(jié)點(diǎn)(根目錄的“.”就是其自身)。其余4個(gè)表項(xiàng)分別對(duì)應(yīng)了目錄A下的B、C、D、E子文件,其中文件B是一個(gè)子目錄,文件C是一個(gè)普通文件。文件D和E是一個(gè)共享文件。第6章 文 件 管 理 4. Ext2文件的定位文件的定位按名查找是文件系統(tǒng)要提供的一項(xiàng)重要功能。當(dāng)用戶需要打開某個(gè)文件時(shí),只要指定文件的路徑和名稱即可。文件系統(tǒng)根據(jù)路徑和文件名,從根目錄開始逐級(jí)向下找到文件所在的目錄,再找到文件的索引節(jié)點(diǎn),然后就可以通過(guò)索引節(jié)點(diǎn)訪問(wèn)文件中的數(shù)據(jù)了。這個(gè)過(guò)程就是文件的定位。例如,要查找文件/home/zhuge/memo文件,定位過(guò)程如下:
43、(1) 在超級(jí)塊中找到根目錄“/”的索引節(jié)點(diǎn)(1號(hào)i節(jié)點(diǎn)),通過(guò)它找到根目錄文件的內(nèi)容,即根目錄項(xiàng)列表,如圖6-16(a)所示。第6章 文 件 管 理 (2) 在根目錄項(xiàng)列表中查找home目錄文件的索引節(jié)點(diǎn)(6號(hào)i節(jié)點(diǎn)),通過(guò)它找到/home目錄的目錄項(xiàng)列表,如圖6-16(b)所示。(3) 在/home目錄項(xiàng)列表中查找zhuge目錄文件的索引節(jié)點(diǎn)(17號(hào)i節(jié)點(diǎn)),通過(guò)它找到/home/zhuge目錄的目錄項(xiàng)列表,如圖6-16(c)所示。(4) 在/home/zhuge目錄項(xiàng)列表中查找memo文件的索引節(jié)點(diǎn)(60號(hào)i節(jié)點(diǎn)),這就是目標(biāo)文件的索引節(jié)點(diǎn)。通過(guò)它找到/home/zhuge/memo文件
44、的內(nèi)容,如圖6-16(d)所示。隨后的文件訪問(wèn)操作都將通過(guò)這個(gè)索引節(jié)點(diǎn)進(jìn)行。第6章 文 件 管 理 圖6-16 文件的定位過(guò)程 第6章 文 件 管 理 5. 文件的鏈接文件的鏈接文件鏈接是實(shí)現(xiàn)文件共享的主要方式。Linux系統(tǒng)提供了兩種文件鏈接方式,即符號(hào)鏈接和硬鏈接,用link()系統(tǒng)調(diào)用實(shí)現(xiàn)。用戶可以用ln命令建立文件鏈接。符號(hào)鏈接(symbolic link)很像Windows系統(tǒng)中的快捷方式,即建立一個(gè)符號(hào)鏈接文件,其內(nèi)容是到一個(gè)實(shí)際存在的文件的路徑描述。訪問(wèn)符號(hào)鏈接文件時(shí),系統(tǒng)將根據(jù)其記載的內(nèi)容轉(zhuǎn)去訪問(wèn)那個(gè)實(shí)際文件。符號(hào)鏈接文件與目標(biāo)文件是兩個(gè)獨(dú)立的文件,有著各自的i節(jié)點(diǎn)和數(shù)據(jù)塊。它
45、們之間通過(guò)文件內(nèi)容而邏輯地鏈接在一起。第6章 文 件 管 理 硬鏈接(hard link)則是將兩個(gè)或多個(gè)文件通過(guò)i節(jié)點(diǎn)物理地鏈接在一起。硬鏈接的文件具有不同的文件名和同一個(gè)i節(jié)點(diǎn),通過(guò)其中任何一個(gè)文件名訪問(wèn)得到的都是同一內(nèi)容,這就如同是一個(gè)文件具有多個(gè)別名。圖中的文件D和E就是硬鏈接的一個(gè)例子。硬鏈接文件的目錄項(xiàng)可以在同一目錄下,也可以在不同的目錄下,但不能跨越文件系統(tǒng)(即分區(qū))。文件的i節(jié)點(diǎn)中記錄了該文件的連接數(shù),用ls -l命令可以顯示出文件的連接數(shù)。連接數(shù)表示連接到該i節(jié)點(diǎn)的文件目錄項(xiàng)的數(shù)目。新建的普通文件的連接數(shù)為1,每建立一個(gè)與它相連的硬鏈接文件時(shí)其連接數(shù)就增1。圖中的文件C的連接
46、數(shù)是1,文件D和E的連接數(shù)都是2。刪除一個(gè)文件時(shí),實(shí)際是刪除它的目錄項(xiàng)并將其i節(jié)點(diǎn)的連接數(shù)減1,若連接數(shù)為0才真正釋放文件的i節(jié)點(diǎn)和數(shù)據(jù)塊。第6章 文 件 管 理 新建目錄的連接數(shù)為2,對(duì)應(yīng)了兩個(gè)文件名,即本目錄名與“.”。每當(dāng)在其下建立一個(gè)子目錄時(shí),它的連接數(shù)就增1,因?yàn)樗谧幽夸浵掠钟辛怂牧硪粋€(gè)文件名,即“.”。例如,圖中的目錄A的連接數(shù)為3,目錄B的連接數(shù)為2。第6章 文 件 管 理 6.3.2 Ext2文件系統(tǒng)的格式文件系統(tǒng)的格式Ext2文件系統(tǒng)在格式化時(shí)把它所占用的磁盤分區(qū)分為一個(gè)引導(dǎo)塊和若干個(gè)塊組。每一個(gè)塊組都由超級(jí)塊、組描述符表、塊位圖、i節(jié)點(diǎn)位圖、i節(jié)點(diǎn)區(qū)和數(shù)據(jù)塊區(qū)組成,如圖
47、6-17所示。第6章 文 件 管 理 圖6-17 Ext2文件系統(tǒng)的物理布局 第6章 文 件 管 理 1. 引導(dǎo)塊與塊組引導(dǎo)塊與塊組引導(dǎo)塊位于磁盤主分區(qū)的頭部,一般占用一個(gè)扇區(qū),用來(lái)存放引導(dǎo)程序。引導(dǎo)程序負(fù)責(zé)加載操作系統(tǒng),它不是文件系統(tǒng)的組成部分。除引導(dǎo)塊外,分區(qū)的其他存儲(chǔ)空間以存儲(chǔ)塊為單位劃分。Ext2文件系統(tǒng)的存儲(chǔ)塊大小可以是1KB、2KB或4KB,在創(chuàng)建文件系統(tǒng)的時(shí)候指定。塊大小的選取要合適,過(guò)大會(huì)降低存儲(chǔ)空間的利用率,過(guò)小則會(huì)降低文件系統(tǒng)的時(shí)間效率,默認(rèn)值是1KB。第6章 文 件 管 理 大型磁盤分區(qū)包含的存儲(chǔ)塊數(shù)量眾多,為便于管理,Ext2文件系統(tǒng)它們劃分為若干個(gè)塊組(block g
48、roup),每個(gè)塊組中包含一定數(shù)量的連續(xù)的存儲(chǔ)塊。塊組的大小取決于磁盤分區(qū)的大小。在軟盤等一些小容量分區(qū)里一般只使用一個(gè)塊組,它包含了文件系統(tǒng)里所有的塊。而在大磁盤分區(qū)里通常會(huì)劃分出許多個(gè)塊組。每個(gè)塊組中有一部分塊是用來(lái)保存該塊組的管理信息的,包括超級(jí)塊、組描述符、塊位圖和i節(jié)點(diǎn)位圖。其余的塊是用于保存文件的,包括i節(jié)點(diǎn)區(qū)和數(shù)據(jù)塊區(qū)。第6章 文 件 管 理 2. 超級(jí)塊和組描述符超級(jí)塊和組描述符每個(gè)Ext2的磁盤分區(qū)有一個(gè)超級(jí)塊(super block),它占用一個(gè)存儲(chǔ)塊,用來(lái)記錄整個(gè)文件系統(tǒng)的基本管理信息,如文件系統(tǒng)類型標(biāo)識(shí)、數(shù)據(jù)塊大小、塊組大小、空閑塊和空閑i節(jié)點(diǎn)數(shù)量、第一個(gè)i節(jié)點(diǎn)(即根目
49、錄的i節(jié)點(diǎn))的塊號(hào)等。這些都是文件系統(tǒng)掛裝、檢查、分配、檢索等操作的基本參數(shù),是文件系統(tǒng)中最重要的數(shù)據(jù)。若超級(jí)塊損壞則整個(gè)分區(qū)的文件系統(tǒng)不再可用。第6章 文 件 管 理 Ext2文件系統(tǒng)的每個(gè)塊組都有一個(gè)組描述符(group descriptor),用來(lái)記錄該塊組的使用信息,包括塊組中的塊位圖、i節(jié)點(diǎn)位圖和i節(jié)點(diǎn)區(qū)的位置、塊組內(nèi)存儲(chǔ)塊的分配情況等。所有塊組的組描述符集中在一起就形成了組描述符表,它是文件系統(tǒng)管理和訪問(wèn)各塊組的依據(jù)。組描述符表位于超級(jí)塊之后,可能占用多個(gè)存儲(chǔ)塊。為提高文件系統(tǒng)的可靠性,每個(gè)塊組中都保存有超級(jí)塊和組描述符表的一個(gè)副本。文件系統(tǒng)只使用第一個(gè)塊組中的超級(jí)塊和組描述符表,
50、其他塊組中的則作為冗余備份,以便在系統(tǒng)崩潰時(shí)用來(lái)恢復(fù)文件系統(tǒng)。第6章 文 件 管 理 3. i節(jié)點(diǎn)區(qū)節(jié)點(diǎn)區(qū)塊組中所有可用的i節(jié)點(diǎn)都集中存放在一起,形成i節(jié)點(diǎn)區(qū),或稱為索引節(jié)點(diǎn)表。塊組中的每個(gè)文件都在此表中占有一個(gè)i節(jié)點(diǎn),通過(guò)i節(jié)點(diǎn)號(hào)檢索。索引節(jié)點(diǎn)表要占用多個(gè)連續(xù)的存儲(chǔ)塊。4. 數(shù)據(jù)塊區(qū)數(shù)據(jù)塊區(qū)數(shù)據(jù)塊區(qū)包含了大量的存儲(chǔ)塊,用于存放文件的內(nèi)容以及各級(jí)間接索引表。每個(gè)文件根據(jù)大小不同在數(shù)據(jù)塊區(qū)占有1至多個(gè)存儲(chǔ)塊。第6章 文 件 管 理 5. 位示圖位示圖Ext2系統(tǒng)采用位示圖方式來(lái)管理空閑空間,一個(gè)位示圖用于記錄數(shù)據(jù)塊的分配情況,稱為“塊位圖”;另一個(gè)位示圖用于記錄i節(jié)點(diǎn)的分配情況,稱為“i節(jié)點(diǎn)位圖
51、”。它們各占用1個(gè)存儲(chǔ)塊。位示圖中每一位代表一個(gè)塊的使用情況,為“0”表示相應(yīng)的塊或i節(jié)點(diǎn)空閑,為“1”則表示已經(jīng)分配。第6章 文 件 管 理 6.3.3 Ext2文件存儲(chǔ)分配策略文件存儲(chǔ)分配策略當(dāng)建立一個(gè)新的文件時(shí),文件系統(tǒng)要為它分配一個(gè)i節(jié)點(diǎn)和一定數(shù)目的數(shù)據(jù)塊。當(dāng)該文件被刪除時(shí),文件系統(tǒng)將回收其占有的i節(jié)點(diǎn)和數(shù)據(jù)塊。當(dāng)文件在讀/寫過(guò)程中擴(kuò)充或縮減了內(nèi)容時(shí),文件系統(tǒng)也需要?jiǎng)討B(tài)地為它分配或回收數(shù)據(jù)塊。分配時(shí)根據(jù)位示圖的記錄為文件分配i節(jié)點(diǎn)和數(shù)據(jù)塊。分配策略在一定程度上決定著文件系統(tǒng)的整體效率。系統(tǒng)會(huì)盡可能把同一個(gè)文件所使用的塊、同一個(gè)目錄所關(guān)聯(lián)的i節(jié)點(diǎn)存放在相鄰的單元中,至少是在同一個(gè)塊組內(nèi),
52、以提高文件的訪問(wèn)效率。第6章 文 件 管 理 另外,Ext2文件系統(tǒng)還采用稱為預(yù)分配的機(jī)制來(lái)保證文件內(nèi)容擴(kuò)展時(shí)塊的分配效率和效果。在文件建立的時(shí)候,如果有足夠的空閑塊,就在相鄰的位置為文件分配多于當(dāng)前使用的塊,稱為預(yù)分配塊。當(dāng)文件內(nèi)容擴(kuò)展時(shí),優(yōu)先使用這些塊,可以提高分配效率,也可以保證這些塊具有連續(xù)關(guān)系。如果預(yù)分配的塊用完或者是根本沒(méi)有啟動(dòng)預(yù)分配機(jī)制,分配新塊時(shí)也要盡可能保證與原有塊相鄰。第6章 文 件 管 理 6.4 虛擬文件系統(tǒng)虛擬文件系統(tǒng)虛擬文件系統(tǒng)(VFS)位于整個(gè)文件系統(tǒng)的最上層。向下,它與實(shí)際的文件系統(tǒng)接口,通過(guò)它們實(shí)現(xiàn)具體的文件操作;向上,它為用戶進(jìn)程及內(nèi)核其他模塊提供使用文件系
53、統(tǒng)的統(tǒng)一接口。VFS接受來(lái)自上層的有關(guān)文件系統(tǒng)的系統(tǒng)調(diào)用,把用戶所請(qǐng)求的文件操作進(jìn)行適當(dāng)?shù)霓D(zhuǎn)換,轉(zhuǎn)交給具體的文件系統(tǒng)進(jìn)行處理,然后再把具體的操作結(jié)果返回給上層的調(diào)用者。此外,VFS還要負(fù)責(zé)管理文件系統(tǒng)的各種緩沖區(qū),保證文件系統(tǒng)的整體效率。第6章 文 件 管 理 虛擬文件系統(tǒng)之所以稱為虛擬,是因?yàn)樗淮嬖谟趦?nèi)存中,在系統(tǒng)啟動(dòng)時(shí)建立起來(lái),在系統(tǒng)關(guān)閉時(shí)消失。VFS不能直接操作文件,所有對(duì)文件的實(shí)際操作都要通過(guò)實(shí)際存在于磁盤分區(qū)的文件系統(tǒng)來(lái)完成。因此,虛擬文件系統(tǒng)必須和某個(gè)或某些實(shí)際的文件系統(tǒng)一起才能實(shí)現(xiàn)完整的文件管理功能。引入虛擬文件系統(tǒng)的目的是為了屏蔽各種文件系統(tǒng)的差異。它對(duì)實(shí)際文件系統(tǒng)進(jìn)行抽像,
54、采用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中描述所有實(shí)際的文件系統(tǒng),向用戶提供一組標(biāo)準(zhǔn)的文件操作函數(shù)。VFS負(fù)責(zé)將標(biāo)準(zhǔn)文件操作映射到實(shí)際文件系統(tǒng)的操作。正是這種抽像和映射,保證了Linux系統(tǒng)可以支持多種不同的文件系統(tǒng),使所有文件系統(tǒng)都具有基本相同的外部表現(xiàn)。第6章 文 件 管 理 6.4.1 VFS的文件對(duì)象的文件對(duì)象VFS雖然是用C語(yǔ)言寫成的,但它其實(shí)是采用了面向?qū)ο蟮脑O(shè)計(jì)思想。VFS使用一族數(shù)據(jù)結(jié)構(gòu)來(lái)描述通用的文件對(duì)象,這些結(jié)構(gòu)體除了包含有一些數(shù)據(jù)外還包含了操作這些數(shù)據(jù)的函數(shù)指針。構(gòu)成VFS文件系統(tǒng)的基本對(duì)象有以下4類: VFS超級(jí)塊(super block),描述一個(gè)文件系統(tǒng); VFS目錄項(xiàng)(dentr
55、y),描述一個(gè)文件的邏輯屬性; VFS索引節(jié)點(diǎn)(inode),描述一個(gè)文件的物理屬性; VFS文件(file),描述一個(gè)文件的當(dāng)前使用信息。第6章 文 件 管 理 VFS的對(duì)象存在于內(nèi)存。它們?cè)谶m當(dāng)?shù)臅r(shí)候被建立起來(lái)。建立時(shí),結(jié)構(gòu)體的數(shù)據(jù)由實(shí)際文件系統(tǒng)的相應(yīng)的數(shù)據(jù)來(lái)填充,操作函數(shù)由實(shí)際的文件系統(tǒng)實(shí)現(xiàn)。VFS依據(jù)這些對(duì)象提供的信息和操作函數(shù)來(lái)完成將用戶的文件請(qǐng)求映射到實(shí)際文件系統(tǒng)的操作。Unix/Linux風(fēng)格的文件系統(tǒng)與VFS文件系統(tǒng)有著相同的概念和很好的對(duì)應(yīng)關(guān)系,可以直接從它們的對(duì)應(yīng)結(jié)構(gòu)中構(gòu)造出VFS文件系統(tǒng)的對(duì)象。但像FAT或NTFS這樣的非Unix風(fēng)格的文件系統(tǒng)則必須經(jīng)過(guò)封裝,使其符合Un
56、ix文件系統(tǒng)的概念結(jié)構(gòu)并滿足VFS的要求,這樣它們就可以像Ext2文件系統(tǒng)那樣和VFS一起工作了,只是在性能上多少會(huì)受些影響。第6章 文 件 管 理 1. VFS超級(jí)塊超級(jí)塊VFS超級(jí)塊對(duì)應(yīng)實(shí)際文件系統(tǒng)的超級(jí)塊,它代表一個(gè)實(shí)際的文件系統(tǒng)。VFS超級(jí)塊的內(nèi)容包括:設(shè)備標(biāo)識(shí)符、文件系統(tǒng)標(biāo)志、數(shù)據(jù)塊大小、文件系統(tǒng)的特殊信息、文件系統(tǒng)的使用信息以及超級(jí)塊操作集等。設(shè)備標(biāo)識(shí)符用來(lái)標(biāo)識(shí)一個(gè)文件系統(tǒng);文件系統(tǒng)類型和數(shù)據(jù)塊大小用來(lái)描述這個(gè)文件系統(tǒng)的基本特征;文件系統(tǒng)的特殊信息對(duì)應(yīng)著該文件系統(tǒng)的實(shí)際超級(jí)塊,在掛裝時(shí)被復(fù)制過(guò)來(lái);文件系統(tǒng)的使用信息描述文件系統(tǒng)的當(dāng)前狀態(tài)和緩沖區(qū)指針等;超級(jí)塊操作集由一組函數(shù)指針組成
57、,主要實(shí)現(xiàn)對(duì)文件系統(tǒng)和i節(jié)點(diǎn)的各種管理操作。第6章 文 件 管 理 VFS為每個(gè)已掛裝的文件系統(tǒng)建立一個(gè)VFS超級(jí)塊,通過(guò)它來(lái)訪問(wèn)和管理實(shí)際文件系統(tǒng)。VFS超級(jí)塊在掛裝文件系統(tǒng)時(shí)建立,在文件系統(tǒng)卸載后撤銷。在此期間,由于文件操作會(huì)修改VFS超級(jí)塊的內(nèi)容,造成與磁盤上的超級(jí)塊內(nèi)容不一致,VFS通過(guò)周期性地將所有發(fā)生改變的超級(jí)塊寫回磁盤來(lái)實(shí)現(xiàn)超級(jí)塊的同步更新。第6章 文 件 管 理 2. VFS索引節(jié)點(diǎn)索引節(jié)點(diǎn)VFS i節(jié)點(diǎn)對(duì)應(yīng)于實(shí)際文件系統(tǒng)中的i節(jié)點(diǎn),它代表虛擬文件系統(tǒng)中的一個(gè)具體的文件。VFS i節(jié)點(diǎn)的內(nèi)容包括了實(shí)際的磁盤i節(jié)點(diǎn)的信息,如i節(jié)點(diǎn)號(hào)(i_no)、訪問(wèn)權(quán)限(i_mode)等,另外還
58、包括了當(dāng)前文件打開狀態(tài)(i_state)以及i節(jié)點(diǎn)操作集指針(i_op)等信息。i節(jié)點(diǎn)操作集用inode_operations結(jié)構(gòu)描述,它由一組函數(shù)指針組成,包含了針對(duì)具體文件的各種操作,如建立和打開文件(create)、鏈接文件(link)等。第6章 文 件 管 理 系統(tǒng)為每個(gè)打開的文件都建立一個(gè)VFS i節(jié)點(diǎn)。在一個(gè)文件被打開時(shí),VFS讀入該文件的磁盤i節(jié)點(diǎn)的信息,為它在內(nèi)存建立一個(gè)VFS i節(jié)點(diǎn),并通過(guò)它來(lái)訪問(wèn)這個(gè)文件。文件關(guān)閉后它的VFS i節(jié)點(diǎn)被撤銷。與超級(jí)塊相同,i節(jié)點(diǎn)也存在同步更新的問(wèn)題,所以,VFS也會(huì)周期性地將所有發(fā)生改變的i節(jié)點(diǎn)寫回磁盤。第6章 文 件 管 理 3. VFS
59、目錄項(xiàng)目錄項(xiàng)從圖6-16所示例子可以看出,在定位一個(gè)文件時(shí)需要沿該文件的路徑逐級(jí)訪問(wèn)路徑中的各個(gè)目錄。如果每次都要從磁盤讀取目錄文件的話,訪問(wèn)文件的效率就會(huì)很低。為了方便查找操作,VFS引入了目錄項(xiàng)(dentry)的概念。目錄項(xiàng)代表的是一個(gè)路徑分量。路徑由一系列的分量組成,每個(gè)分量都是一個(gè)目錄或文件。例如,路徑名/home/zhuge/memo中包含了“/”、“home”、“zhuge”和“memo”4個(gè)分量。當(dāng)VFS首次解析一個(gè)路徑名時(shí),它依次讀取路徑中的每個(gè)目錄或文件,為它建立一個(gè)dentry結(jié)構(gòu),每個(gè)dentry結(jié)構(gòu)都與一個(gè)VFS i節(jié)點(diǎn)相連。VFS將這些已建立的dentry結(jié)構(gòu)按目錄關(guān)
60、系鏈接在一起,在后續(xù)的文件查找操作中,VFS只需沿dentry的鏈接結(jié)構(gòu)進(jìn)行查找,可以很快地找到目標(biāo)文件的dentry結(jié)構(gòu),然后得到它的VFS i節(jié)點(diǎn)。第6章 文 件 管 理 dentry的內(nèi)容包含目錄項(xiàng)的文件名(d_name)以及構(gòu)成結(jié)構(gòu)關(guān)系的各種指針,還有指向i節(jié)點(diǎn)的指針(d_inode)和目錄項(xiàng)操作集的指針(d_op)等。目錄項(xiàng)操作集用dentry_operations結(jié)構(gòu)描述,它包含了對(duì)目錄項(xiàng)的各種操作,如文件名比較(d_compare)、刪除(d_delete)、釋放(d_release)等。概括地講,目錄項(xiàng)是對(duì)文件的邏輯描述,它描述的是文件的邏輯標(biāo)識(shí)(文件名)以及該文件與其他文件的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 橋梁施工方案對(duì)比
- 纜索吊拱橋施工方案
- 2025年防雷防爆及弱電工程設(shè)備項(xiàng)目建議書
- 拆除溫感煙感探頭施工方案
- 酒店弱電養(yǎng)護(hù)方案
- 滁州商場(chǎng)指示牌施工方案
- 氣盾壩施工方案
- 軌道交通二號(hào)線施工方案
- 武漢出入庫(kù)擋水板施工方案
- 步長(zhǎng)制藥四川瀘州步長(zhǎng)生物制藥有限公司擬股權(quán)轉(zhuǎn)讓涉及的其公司股東全部權(quán)益價(jià)值資產(chǎn)評(píng)估報(bào)告
- (二模)2025年寶雞市高考模擬檢測(cè)試題(二)物理試卷(含答案)
- 基地種植合作合同范本
- 露天煤礦安全生產(chǎn)技術(shù)露天煤礦安全管理培訓(xùn)
- 2025年安徽警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 2025年湖南大眾傳媒職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)學(xué)生專用
- YB-T 6121-2023 鋼的晶間氧化深度測(cè)定方法
- 2025屆中交投資有限公司全球校園招聘來(lái)了筆試參考題庫(kù)附帶答案詳解
- 【2025年衛(wèi)生健康宣傳日】世界防治結(jié)核病日
- 新版《醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范》(2024)培訓(xùn)試題及答案
- 2025年人教版數(shù)學(xué)五年級(jí)下冊(cè)教學(xué)計(jì)劃(含進(jìn)度表)
- 2025年初級(jí)社會(huì)工作者綜合能力全國(guó)考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論