操作系統(tǒng)文件系統(tǒng)_第1頁
操作系統(tǒng)文件系統(tǒng)_第2頁
操作系統(tǒng)文件系統(tǒng)_第3頁
操作系統(tǒng)文件系統(tǒng)_第4頁
操作系統(tǒng)文件系統(tǒng)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.1第五章 文件管理.2用戶總是把長期要保存的或暫時(shí)要保存的大量信息,組織成文件的形式存放在輔助存儲(chǔ)器中,成為計(jì)算機(jī)系統(tǒng)中的軟件資源。用戶希望的是能夠“按名存取”。操作系統(tǒng)給我們提供了第五個(gè)功能-文件管理,主要有以下內(nèi)容:5.1 文件管理基本理論5.2 Linux文件系統(tǒng) 5.3 Ext系列文件系統(tǒng) 5.4 虛擬文件系統(tǒng) .35.15.1 文件管理基本理論文件管理基本理論文件是具有名字的一組相關(guān)信息的有序集合,存放在外部存儲(chǔ)器中。l 組成:文件名 + 屬性 + 文件體 文件名:有限長度的字符串(注意DOS、Windows、Linux系統(tǒng)文件名) 文件屬性:包括文件類型、大小、物理位置、存取控制

2、、建立或修改日期 文件體:.4文件分類不同的系統(tǒng)對(duì)文件的管理方式不同。 按文件的性質(zhì)和用途:系統(tǒng)文件,庫文件、用戶文件 按文件中的數(shù)據(jù)形式:源文件,目標(biāo)文件,可執(zhí)行文件 按存取權(quán)限:r,w,x 按照文件的內(nèi)容:普通文件,目錄文件,特別文件(Linux系統(tǒng)中將設(shè)備也當(dāng)作文件對(duì)待) .5文件系統(tǒng)是操作系統(tǒng)的一個(gè)重要組成部分,實(shí)現(xiàn)文件管理的一組程序和所管理的全部文件(文件與目錄的集合)以及管理文件所需要的一些數(shù)據(jù)結(jié)構(gòu)的集合。 文件系統(tǒng)通常以磁盤分區(qū)劃分,每個(gè)分區(qū)對(duì)應(yīng)一個(gè)獨(dú)立的文件系統(tǒng)。 文件系統(tǒng)管理的對(duì)象:文件+目錄+磁盤存儲(chǔ)空間 對(duì)對(duì)象操縱和管理的軟件集合:文件管理系統(tǒng)的核心部分。文件系統(tǒng)的功能(

3、按名存取、存儲(chǔ)空間管理、共享和保護(hù)等)大多是在這一層實(shí)現(xiàn)的。.6.71 1 文件控制塊文件控制塊為了管理文件,文件系統(tǒng)為每個(gè)文件建立一個(gè)文件控制塊(File Control Block,F(xiàn)CB)。n FCB記錄了其的使用者和管理者所關(guān)心的所有信息(PCB?),包括文件名、大小、存儲(chǔ)位置、修改和訪問時(shí)間、權(quán)限等。n 一個(gè)FCB就是一個(gè)文件目錄項(xiàng)。n 創(chuàng)建新文件時(shí),建立FCB,隨著文件的操作,F(xiàn)CB的內(nèi)容動(dòng)態(tài)更新,文件被刪除時(shí),其FCB刪除。.8計(jì)算機(jī)系統(tǒng)中通常存有大量的文件,系統(tǒng)須采用某種有效的形式來組織和管理這些文件。由于文件與文件的FCB一一對(duì)應(yīng),因此,管理文件就是管理文件的FCB。2 2

4、目錄目錄n 文件系統(tǒng)采用目錄來組織文件。n 目錄是FCB的有序集合,通過目錄將所有的FCB分層分類地組織在一起,方便了文件的檢索操作。n 目錄本身需要長久保存的,也需以文件的形式存在,即目錄文件,內(nèi)容是一組FCB列表,每個(gè)表項(xiàng)(目錄項(xiàng))是一個(gè)文件的FCB。n 由于目錄本身也是文件,因此目錄的FCB也可以作為另一個(gè)目錄中的目錄項(xiàng),從而構(gòu)成目錄的層次關(guān)系。.9目錄的主要功能之一 實(shí)現(xiàn)文件的“按名存取”n 即用戶只需提供文件名就可以對(duì)文件進(jìn)行各種操作。在查找目錄過程中,先將存放目錄文件的第一個(gè)盤塊中目錄調(diào)入內(nèi)存然后把用戶所給定的文件名與目錄項(xiàng)(每個(gè)文件的FCB)中的文件名逐一比較,若未找到指定文件,

5、便將下一個(gè)盤塊中的目錄項(xiàng)調(diào)入內(nèi)存。.10很顯然,如果存放FCB的目錄文件過大(占多個(gè)磁盤塊),將會(huì)導(dǎo)致匹配文件名的過程要多次訪問磁盤,導(dǎo)致問題產(chǎn)生的原因就是目錄文件的每個(gè)目錄項(xiàng)即FCB占空間,如何改善?!檢索目錄文件過程中只用到文件名,僅當(dāng)找到一個(gè)目錄項(xiàng)時(shí)才從該目錄項(xiàng)中讀出該文件的物理地址,而其它一些對(duì)該文件進(jìn)行描述的信息在檢索目錄時(shí)不會(huì)用到,故這些信息不需調(diào)入內(nèi)存。于是,可以將文件名和文件描述信息分開。引入索引結(jié)點(diǎn)!將文件目錄中的每個(gè)目錄項(xiàng)組成改為文件名和指向該文件所對(duì)應(yīng)結(jié)點(diǎn)(索引結(jié)點(diǎn),Index Node,I節(jié)點(diǎn),其中存放文件描述信息單獨(dú)形成)的指針?biāo)鶚?gòu)成。.11引入I結(jié)點(diǎn)后,文件目錄僅由

6、文件名及指向該文件所對(duì)應(yīng)的i結(jié)點(diǎn)的指針?biāo)鶚?gòu)成。.12目錄的主要功能之二 合理地組織文件。n 單級(jí)目錄:最簡(jiǎn)單的文件目錄結(jié)構(gòu)是在系統(tǒng)中建立一張目錄線性表,每個(gè)文件占一表目,由文件名和文件的說明和管理信息組成(即其FCB或文件目錄項(xiàng))。單級(jí)目錄能夠單級(jí)目錄能夠?qū)崿F(xiàn)實(shí)現(xiàn)“按名存取按名存取”,但存在,但存在查找速度慢;查找速度慢;不允許重名(主要問題);不便于共享不允許重名(主要問題);不便于共享等問題。等問題。.13n 兩級(jí)目錄:系統(tǒng)設(shè)置一個(gè)主目錄(MFD )后,再為每個(gè)用戶設(shè)立一個(gè)用戶目錄(UFD)。MFD的每一項(xiàng)對(duì)應(yīng)一個(gè)用戶的目錄文件,UFD每一項(xiàng)對(duì)應(yīng)一個(gè)文件的FCB。.14n 多級(jí)目錄結(jié)構(gòu):將

7、兩級(jí)目錄結(jié)構(gòu)的層次關(guān)系加以推廣,就形成了多級(jí)目錄結(jié)構(gòu),即樹形目錄結(jié)構(gòu)。 系統(tǒng)中有一個(gè)根目錄(或根目錄文件),在這個(gè)目錄中可登記一般文件,也可以登記目錄文件,在每個(gè)目錄文件中可以登記一般文件,也可以登記目錄文件, 現(xiàn)在,幾乎所有的操作系統(tǒng)都采用樹形目錄結(jié)構(gòu).153 3 文件的組織文件的組織文件的組織有兩種:n 文件的邏輯結(jié)構(gòu)-用戶對(duì)文件的組織方式,是指用戶思維中文件的結(jié)構(gòu)。n 文件的物理結(jié)構(gòu)-文件在存儲(chǔ)介質(zhì)上的組織形式,主要是指磁盤上文件的結(jié)構(gòu)。.16 記 錄 號(hào) 學(xué) 號(hào) 姓 名 班 級(jí) 各 科 成 績(jī) 外 語 數(shù) 學(xué) 操 作 系 統(tǒng) 0 981001 章 城 冰 980701 86 93 90

8、 1 981002 李 偉 業(yè) 980701 99 76 85 2 981003 袁 中 春 980701 77 94 85 文件的邏輯結(jié)構(gòu)n 記錄式文件(有結(jié)構(gòu)式文件):文件是記錄的集合,每個(gè)記錄由彼此相關(guān)的域構(gòu)成,記錄可按順序編號(hào)為記錄1,記錄2,又分定/不定長記錄文件。n 流式文件(無結(jié)構(gòu)文件):是相關(guān)的有序字符的集合,在其內(nèi)部不再對(duì)信息進(jìn)行組織劃分,文件的長度為所含字符數(shù)。.17.18文件的物理結(jié)構(gòu)一個(gè)文件存儲(chǔ)介質(zhì),格式化后就分成許多大小相等的單位存儲(chǔ)塊(物理盤塊),在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,一般來說,每個(gè)物理塊是一個(gè)磁盤的扇區(qū),512字節(jié)。并給每個(gè)存儲(chǔ)塊有個(gè)編號(hào),稱為物理塊號(hào)。.19文件的

9、物理結(jié)構(gòu)目前有三種基本結(jié)構(gòu),即連續(xù)文件結(jié)構(gòu)、串聯(lián)文件結(jié)構(gòu)和索引文件結(jié)構(gòu)。l 連續(xù)文件結(jié)構(gòu):文件的數(shù)據(jù)存放在連續(xù)的物理存儲(chǔ)塊中。n優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)單、實(shí)現(xiàn)容易n缺點(diǎn):不利于文件動(dòng)態(tài)擴(kuò)充;創(chuàng)建文件時(shí)要求給出文件大小,用戶不方便.20l 串聯(lián)文件結(jié)構(gòu):文件信息存于若干不一定連續(xù)的磁盤塊中。每個(gè)物理塊的最末一個(gè)字(或第一個(gè)字)作為鏈接字,指出后繼塊號(hào)。鏈?zhǔn)字羔槾嬖谖募﨔CB中,文件的結(jié)尾塊的指針為“”。n優(yōu)點(diǎn):文件動(dòng)態(tài)擴(kuò)充和修改容易(圖中藍(lán)線);外存空間利用率高;n缺點(diǎn):順序存取效率高,隨機(jī)存取效率太低,如果訪問文件最后的內(nèi)容,實(shí)際上是訪問整個(gè)文件。(參考上圖,理解這句話)n鏈接文件更適合于小型文件系統(tǒng)。

10、.21為了克服串聯(lián)文件的存取效率太低的問題,引入文件映照技術(shù),即把串聯(lián)文件中的鏈接字集中在一結(jié)構(gòu)中。n DOS、WINDOWS系統(tǒng)采用(文件分配表)n 文件分配表(File Allocation Table,F(xiàn)AT) 磁盤格式化后建立,用于記錄外存分配,F(xiàn)AT每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)盤塊(標(biāo)記為0至N-1),其中用來存放分配給文件的下一個(gè)盤塊號(hào); 放在內(nèi)存中,整個(gè)系統(tǒng)一張F(tuán)AT; 分配給某文件的所有物理塊都在該表中標(biāo)出,文件的首塊號(hào)記入FCB。 顯示鏈接。.22引入FAT的問題:FAT需占用較大的內(nèi)存空間,只有將整個(gè)FAT表調(diào)入內(nèi)存才能找到對(duì)應(yīng)的盤塊號(hào)。示例:若磁盤大小為1.2M,每個(gè)物理塊大小為51

11、2B,則共有2.4K個(gè)FAT表項(xiàng),則(回顧存儲(chǔ)管理的單級(jí)頁表的問題).23l 索引結(jié)構(gòu):不連續(xù)分配。每個(gè)文件建立一張索引表,每個(gè)表目指出文件內(nèi)容與磁盤塊號(hào)的對(duì)應(yīng)關(guān)系 n 索引結(jié)構(gòu)是當(dāng)代計(jì)算機(jī)操作系統(tǒng)中普遍采用的結(jié)構(gòu),如UNIX系統(tǒng)、LINUX系統(tǒng)。n 優(yōu)點(diǎn):具備串聯(lián)結(jié)構(gòu)所有的優(yōu)點(diǎn),適合與隨機(jī)存放n 缺點(diǎn):增加了索引的開銷,存取文件時(shí)首先要取得索引表,這樣就要增加一次訪盤操作,降低了文件訪問的速度.24索引表是在建立文件時(shí)由文件管理機(jī)構(gòu)自動(dòng)建立的,并存放在與文件相同的文件卷(如同一磁帶或同一盤片)上。乍一看來,存取索引文件要訪問2次外存(why?)。In fact! 在訪問索引文件之前,總是首先

12、“打開”其對(duì)應(yīng)的索引表文件,把其索引表文件的一部分讀入主存,因此其后對(duì)文件的絕大多數(shù)訪問只要1次訪外。 僅當(dāng)更新索引表到另一部分時(shí),才發(fā)生1次二度訪外的情況。(回顧快表機(jī)制) (回顧頁表地址映射) 第1次訪問索引表文件,第2次根據(jù)索引得到的物理塊號(hào)再度訪問外存。.25索引表是在建立文件時(shí)由文件管理機(jī)構(gòu)自動(dòng)建立的,并存放在與文件相同的文件卷(如同一磁帶或同一盤片)上。乍一看來,存取索引文件要訪問2次外存(why?)。In fact! 在訪問索引文件之前,總是首先“打開”其對(duì)應(yīng)的索引表文件,把其索引表文件的一部分讀入主存,因此其后對(duì)文件的絕大多數(shù)訪問只要1次訪外。 僅當(dāng)更新索引表到另一部分時(shí),才發(fā)

13、生1次二度訪外的情況。(回顧快表機(jī)制) (回顧頁表地址映射) 第1次訪問索引表文件,第2次根據(jù)索引得到的物理塊號(hào)再度訪問外存。.26Another Question! (回顧多級(jí)頁表) 引入多級(jí)索引和混合索引。.27混合索引應(yīng)用 UNIX system 系統(tǒng)l UNIX system 混合索引動(dòng)畫演示l 按文件的長度(占據(jù)數(shù)據(jù)塊的個(gè)數(shù))分為小文件、中文件、大文件、巨文件,分別對(duì)應(yīng)直接、一次間接、二次間接、三次間接的編址方式。系統(tǒng)支持的最大文件=(10+256+2562+2563)512B.284 4 文件存儲(chǔ)空間的管理文件存儲(chǔ)空間的管理無論程序還是數(shù)據(jù)都是以文件形式存放在外存上,外存上文件存放

14、的空間叫作“文件存儲(chǔ)空間”。l 回顧內(nèi)存空間的管理l 對(duì)文件存儲(chǔ)空間的管理工作包括:建立文件時(shí)為文件分配存儲(chǔ)空間;刪除文件時(shí)去配;以及修改文件時(shí)動(dòng)態(tài)更新外存空間。l 系統(tǒng)將外存空間分成若干大小相等的物理塊,以塊(or簇)為單位來交換信息。l 文件存儲(chǔ)空間的管理,實(shí)際上就是一個(gè)空閑塊的組織和管理問題。 三種常用的管理方法:空閑塊表、空閑塊鏈、位示圖。.29空閑塊表用空閑區(qū)表來管理文件存儲(chǔ)空間,做法是系統(tǒng)設(shè)置一張表格,表中的每一個(gè)表目記錄磁盤空間中的一個(gè)連續(xù)空閑盤區(qū)的信息。l 表目的內(nèi)容至少包括:空閑塊區(qū)首塊地址(物理塊號(hào))、空白塊個(gè)數(shù)。.30l 空閑塊表適合于連續(xù)組織的文件,因?yàn)樵诜峙湮募r(shí)按文

15、件尺寸申請(qǐng)一組連續(xù)的空閑塊,撤消文件時(shí)歸還這組連續(xù)的空閑塊區(qū)。l 與可變分區(qū)分配算法相似(回顧!),可采用最先適應(yīng)、最壞適應(yīng)、最佳適應(yīng)算法。l 由于空閑塊區(qū)的個(gè)數(shù)是動(dòng)態(tài)改變的,導(dǎo)致空閑塊表目個(gè)數(shù)不能預(yù)先確定,因此可能會(huì)產(chǎn)生表目溢出(表較小時(shí))或表目浪費(fèi)(表較大時(shí))。 .31空閑塊鏈把所有空閑塊的塊號(hào)用鏈表的形式連接在一起,適用于各種物理組織的文件。l 注意,對(duì)空閑塊鏈操作時(shí)應(yīng)互斥。l 需要分配空白塊時(shí)從鏈?zhǔn)走M(jìn)行,所以在主存中要保存一個(gè)鏈?zhǔn)字羔槪赶虻谝粋€(gè)空白塊,當(dāng)回收時(shí),把回收塊掛在空白塊鏈尾上。 .32位示圖(bit map)位示圖是外存空間的存儲(chǔ)映射圖,是系統(tǒng)在內(nèi)存中劃分出的若干字節(jié)的集

16、合,用來指示磁盤存儲(chǔ)情況。n 采用位示圖的具體做法是:為所要管理的磁盤設(shè)置一張位示圖,位示圖的大小,由磁盤的總塊數(shù)決定。n 位示圖中的每一位(bit)對(duì)應(yīng)外存空間的一個(gè)物理塊。若該位為“1”,表示對(duì)應(yīng)塊被占用;“0”表示空閑。設(shè)整個(gè)文件空間有n塊,那么可用n位構(gòu)成位示圖。01100位n - 1位第i塊已分配.33例:設(shè)某磁盤組共有16個(gè)柱面,每個(gè)柱面有16個(gè)磁頭尋道,每個(gè)磁道分16個(gè)扇區(qū),整個(gè)磁盤空間的扇區(qū)數(shù)為:16*16*16=4096個(gè) 若一個(gè)扇區(qū)被定義為一個(gè)存儲(chǔ)塊,用字長16位的存儲(chǔ)單元來構(gòu)造位示圖,共需要256個(gè)字。n 分配:掃描位示圖,找到足夠的空閑塊(對(duì)應(yīng)位為“0”)分配,并將對(duì)應(yīng)

17、位改為“1”;n 回收:將對(duì)應(yīng)的位改為“0”即可。n 位示圖較小,系統(tǒng)啟動(dòng)時(shí)進(jìn)入內(nèi)存(全部或部分),因此可實(shí)現(xiàn)高速的分配。NOTE!:必須定時(shí)地把主存中的位示圖復(fù)制到外存保存,以防萬一文件系統(tǒng)發(fā)生故障,可以依據(jù)外存的位示圖副本修復(fù)文件系統(tǒng)。.34UNIX系統(tǒng)系列磁盤空間管理方法 成組鏈接法UNIX系統(tǒng)采用空閑塊成組鏈接法對(duì)磁盤空間的空閑塊加以組織。l 每100個(gè)空閑塊劃歸1組,將各組中的盤塊號(hào)存放在其前組中的第1個(gè)空閑塊中,第1組的空閑盤塊號(hào)放入系統(tǒng)專用的超級(jí)塊(superblock)中。l 第1組不足100塊,文件存儲(chǔ)空間不會(huì)恰好為100的整數(shù)倍,所以第1組小于100。l 最后組99塊,若把

18、超級(jí)塊看作是最后組的成員,則最后組也是100塊。l 其他各組均為100塊。.35.36Important!l 各組第1塊和超級(jí)塊:登記了下一組的盤塊號(hào)。 對(duì)應(yīng)設(shè)置一個(gè)容量為100的堆棧,另設(shè)一個(gè)棧指針指向棧0單元,棧1單元,其內(nèi)保存空閑塊號(hào)。 如果當(dāng)前棧頂上升到棧99,那么意味著下1組有100個(gè)空閑塊被鏈接在一起。l 最后組第一塊:null標(biāo)志。其他堆棧指針塊號(hào)塊號(hào)塊號(hào)其他棧1棧0棧99棧頂.37空閑塊的分配和回收通過棧指針的變化(棧0棧99)來體現(xiàn)。l 分配超級(jí)塊是否上鎖,是則等待,否則上鎖后轉(zhuǎn);從棧指針指向的棧頂取得空閑塊號(hào),若當(dāng)前棧頂不是棧0單元,則轉(zhuǎn)。否則該塊是組中的第1塊。而第1塊不

19、能直接分配,故轉(zhuǎn);棧指針退1,置超級(jí)塊修改標(biāo)記并解鎖,分配該空閑塊號(hào)給調(diào)用者,返回;把該塊內(nèi)容復(fù)制到超級(jí)塊中,置超級(jí)塊修改標(biāo)記并解鎖,把該塊分配給調(diào)用者,返回。 .38l 回收超級(jí)塊是否上鎖,是則等待,否則上鎖后轉(zhuǎn)若棧未滿(棧指針棧99)則轉(zhuǎn),否則轉(zhuǎn)棧指針進(jìn)1,空閑塊號(hào)存入棧頂單元,置超級(jí)塊修改標(biāo)記并解鎖后返回;把超級(jí)塊內(nèi)的棧復(fù)制到當(dāng)前回收的空閑塊中,再將該新空閑塊號(hào)填入超級(jí)塊中棧0單元,使棧指針指向棧底,置超級(jí)塊修改標(biāo)記并解鎖后返回。注意,此時(shí)形成了1個(gè)新的空閑塊組,該組的第1塊正是剛回收的空閑塊。.39成組鏈接法-動(dòng)畫演示.40成組鏈接法的優(yōu)勢(shì)l 空閑塊成組鏈接法不占用額外空間,只是臨時(shí)借

20、用每組的第1塊登記下一組的空閑塊號(hào)。l 分配與回收工作幾乎都在主存(超級(jí)塊)中進(jìn)行,僅當(dāng)分完1組或收回滿1組時(shí)才啟動(dòng)I/O通道工作。所以該方法在空間、時(shí)間開銷方面相當(dāng)節(jié)省。 .415.2 Linux文件系統(tǒng) Linux繼承了Unix文件系統(tǒng)的優(yōu)秀設(shè)計(jì),并結(jié)合了一些現(xiàn)代文件系統(tǒng)的先進(jìn)技術(shù),在開放性、可擴(kuò)展性和性能方面都十分出色。Linux文件系統(tǒng)的幾個(gè)主要特征。n 支持多種文件系統(tǒng):DOS、Windows等OS只支持一種或幾種專用的文件系統(tǒng),而Linux可以支持幾乎所有流行的文件系統(tǒng),使得Linux可以和許多其他OS共存,允許訪問其他OS分區(qū)中的文件。n 樹型可掛載目錄結(jié)構(gòu):Linux采用樹型目

21、錄,并引入分區(qū)掛載的概念,系統(tǒng)分區(qū)上的文件系統(tǒng)稱為根文件系統(tǒng),其他所有分區(qū)的文件系統(tǒng)都要掛載(mount)到根文件系統(tǒng)的某個(gè)目錄下。n 文件、設(shè)備統(tǒng)一管理:Linux將設(shè)備抽象為文件。.42Linux使用標(biāo)準(zhǔn)的樹型目錄結(jié)構(gòu),無論操作系統(tǒng)管理幾個(gè)磁盤分區(qū),這樣的目錄樹只有一個(gè)。.43EXT系列是Linux的標(biāo)準(zhǔn)文件系統(tǒng),系統(tǒng)把它的磁盤分區(qū)做為系統(tǒng)的根文件系統(tǒng),EXT以外的文件系統(tǒng)則安裝(mount)在某個(gè)目錄下,成為系統(tǒng)樹型結(jié)構(gòu)中的一個(gè)分枝。 .441 Linux文件系統(tǒng)的結(jié)構(gòu)設(shè)計(jì) Linux文件系統(tǒng)采用分層結(jié)構(gòu)的設(shè)計(jì),包括:n 磁盤I/O系統(tǒng)層n 磁盤高速緩存n 磁盤文件系統(tǒng)層(也稱實(shí)際文件系

22、統(tǒng))n 虛擬文件系統(tǒng).45n 磁盤I/O系統(tǒng)層:是文件系統(tǒng)所依賴的底層模塊,用于實(shí)現(xiàn)對(duì)存儲(chǔ)在磁盤上的文件數(shù)據(jù)的I/O操作,由通用塊層、I/O調(diào)度程序和設(shè)備驅(qū)動(dòng)程序構(gòu)成。n 實(shí)際文件系統(tǒng):Linux默認(rèn)FS是Ext2-4,支持多種FS。 Linux專用:Ext2-4、JFS、XFS、RFS和NFS; Unix:sysv、ufs、bfs; Minix:minix、XIA; Windows或DOS:FAT、NTFSn 虛擬文件系統(tǒng):為了屏蔽各個(gè)文件系統(tǒng)之間的差異,為用戶提供訪問文件的統(tǒng)一接口,Linux在具體的文件系統(tǒng)上增加了一個(gè)稱為虛擬文件系統(tǒng)(Virtual File System,VFS)的抽

23、象層,使得不同的文件系統(tǒng)按照同樣的模式呈現(xiàn)在用戶面前。n 磁盤高速緩存:回顧前述知識(shí)。.465.3 Ext系列文件系統(tǒng) n Ext2(Extended-2):是專為Linux系統(tǒng)設(shè)計(jì)的,采用的是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)發(fā)生斷電或者其他系統(tǒng)故障時(shí)保證文件數(shù)據(jù)的完整性。n Ext3:是一個(gè)基于Ext2開發(fā)的日志文件系統(tǒng),具有健全的日志功能,可靠性很高。在非正常關(guān)機(jī)后,文件系統(tǒng)可在數(shù)十秒鐘內(nèi)自行修復(fù)。

24、Ext3容量達(dá)到32TB,單個(gè)文件最大2TB。目前Ext3已被許多Linux發(fā)行版作為默認(rèn)安裝的文件系統(tǒng)。n Ext4:最顯著的改進(jìn)是文件和文件系統(tǒng)的大小。Ext4容量達(dá)到1024PB(1P=1024T),而文件大小則可達(dá)到16TB。.471 Ext文件的結(jié)構(gòu)Ext文件的邏輯結(jié)構(gòu)是無結(jié)構(gòu)的流式文件。基于字節(jié)流的概念,使得Linux系統(tǒng)可以把目錄、設(shè)備等都當(dāng)作文件來統(tǒng)一對(duì)待。Ext文件的物理結(jié)構(gòu)采用易于擴(kuò)展的多重索引方式,便于文件動(dòng)態(tài)增長,同時(shí)也可以方便地實(shí)現(xiàn)順序和隨機(jī)訪問。.48Ext文件系統(tǒng)引入索引節(jié)點(diǎn)(i節(jié)點(diǎn))來描述文件,Ext文件的FCB分為i節(jié)點(diǎn)和目錄項(xiàng)兩部分描述。n 目錄文件的各目錄

25、項(xiàng)(directory entry)僅由文件名和i節(jié)點(diǎn)號(hào)(指向該文件的其它屬性)構(gòu)成。n i節(jié)點(diǎn)占用一個(gè)單獨(dú)的存儲(chǔ)塊,包含文件說明信息(屬性)和索引表(指向磁盤塊)兩部分,i節(jié)點(diǎn)毀壞則整個(gè)文件不可用。.49Ext3文件的物理結(jié)構(gòu)采用了多重索引方式,i節(jié)點(diǎn)中的索引表描述如右圖。n 索引表011項(xiàng)直接指向磁盤塊,稱為直接塊。n 12項(xiàng)是一個(gè)指針,指向一個(gè)間接索引表,間接索引表中的指針指向數(shù)據(jù)塊(稱為間接塊)。n 同理13項(xiàng)(二次間接)、14項(xiàng)(三次間接)。示例:Ext2文件系統(tǒng)的默認(rèn)塊大小1KB,則12K以下的小文件,不需要使用間接索引。大的文件,需要用到間接索。設(shè)每個(gè)指針占4字節(jié),則一個(gè)間接索引

26、表含有256個(gè)指針,對(duì)應(yīng)256個(gè)間接塊。因此,大小在12K268K的文件需要一次間接,同理,更大的文件使用二次間接甚至三次間接指針,得到最大約16GB的文件。.502 Ext目錄文件同普通文件一樣,每個(gè)目錄文件對(duì)應(yīng)一個(gè)目錄項(xiàng)(在其父目錄中)以及一個(gè)i節(jié)點(diǎn),不同的是,其數(shù)據(jù)塊中存放的不是文件內(nèi)容而是目錄項(xiàng)集合,包含了該目錄下的所有文件的目錄項(xiàng)(i節(jié)點(diǎn)號(hào)和文件名)。n 頭兩個(gè)目錄項(xiàng)是“.”和“.”。示例:目錄A下含有子目錄B和文件C 、D、E。注意:文件D和E共享.513 Ext文件定位以查找Linux系統(tǒng)中/home/zhuge/memo文件為例,實(shí)現(xiàn)按名查找。.525.4 虛擬文件系統(tǒng)(VFS

27、)虛擬文件系統(tǒng)是Linux內(nèi)核中的一個(gè)軟件層,用于給用戶空間程序提供文件系統(tǒng)接口。它也提供了內(nèi)核中的一個(gè)抽象功能 允許不同的文件系統(tǒng)共存。n VFS只存在于內(nèi)存中,在系統(tǒng)啟動(dòng)之后才建立完成,并在系統(tǒng)關(guān)閉時(shí)撤銷。VFS必須和實(shí)際文件系統(tǒng)一起才能構(gòu)成一個(gè)完整的文件系統(tǒng)。n VFS屏蔽了各種實(shí)際文件系統(tǒng)的差異,為用戶提供了一種標(biāo)準(zhǔn)的文件操作接口。.531 VFS構(gòu)成VFS用C語言編寫,采用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中描述各種實(shí)際文件系統(tǒng),包括:n VFS超級(jí)塊(super block):描述文件系統(tǒng)的基本信息,對(duì)應(yīng)實(shí)際文件系統(tǒng)的超級(jí)塊。n VFS目錄項(xiàng)(dentry):描述文件的

28、路經(jīng)分量。n VFS索引節(jié)點(diǎn)(inode):描述文件的信息,對(duì)應(yīng)文件的磁盤i節(jié)點(diǎn)。n VFS文件(file):描述一個(gè)打開的文件,包括文件的當(dāng)前使用信息。.54.55.562 VFS與進(jìn)程接口VFS為進(jìn)程提供了訪問文件系統(tǒng)的統(tǒng)一接口。接口由fs_struct和file_struct結(jié)構(gòu)構(gòu)成。n fs_struct用于建立進(jìn)程與文件系統(tǒng)間的聯(lián)系,主要包括文件系統(tǒng)的根目錄和當(dāng)前目錄等信息。n file_struct用于建立進(jìn)程和所有該進(jìn)程打開的文件之間的聯(lián)系。.573 VFS緩存機(jī)制緩存是在內(nèi)存中開辟的存儲(chǔ)區(qū),用于存放那些可能會(huì)重復(fù)使用的數(shù)據(jù),提高效率。n 當(dāng)VFS需要構(gòu)造某個(gè)對(duì)象或存取磁盤數(shù)據(jù)時(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論