OS2013_UNIT9 文件系統(tǒng)的實現(xiàn)_第1頁
OS2013_UNIT9 文件系統(tǒng)的實現(xiàn)_第2頁
OS2013_UNIT9 文件系統(tǒng)的實現(xiàn)_第3頁
OS2013_UNIT9 文件系統(tǒng)的實現(xiàn)_第4頁
OS2013_UNIT9 文件系統(tǒng)的實現(xiàn)_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Unit 9操作系統(tǒng)原理操作系統(tǒng)原理馮耀霖馮耀霖文件管理之二文件管理之二內(nèi)容內(nèi)容文件的物理組織文件的物理組織文件目錄的實現(xiàn)文件目錄的實現(xiàn)磁盤空間的管理磁盤空間的管理文件共享文件共享文件的訪問控制文件的訪問控制文件的注冊與掛載文件的注冊與掛載內(nèi)核的文件管理機(jī)制內(nèi)核的文件管理機(jī)制通過上一章的學(xué)習(xí),我們對文件和文件系統(tǒng)已有了一通過上一章的學(xué)習(xí),我們對文件和文件系統(tǒng)已有了一些感性認(rèn)識。但對于操作系統(tǒng)的設(shè)計來說,光有感性認(rèn)識些感性認(rèn)識。但對于操作系統(tǒng)的設(shè)計來說,光有感性認(rèn)識是不夠的,需要進(jìn)一步了解文件系統(tǒng)的實現(xiàn)細(xì)節(jié),這些細(xì)是不夠的,需要進(jìn)一步了解文件系統(tǒng)的實現(xiàn)細(xì)節(jié),這些細(xì)節(jié)問題包括:節(jié)問題包括:文件的物

2、理組織文件的物理組織文件目錄的結(jié)構(gòu)文件目錄的結(jié)構(gòu)文件的共享文件的共享磁盤空間的管理磁盤空間的管理文件的訪問控制文件的訪問控制文件系統(tǒng)的注冊與掛載文件系統(tǒng)的注冊與掛載內(nèi)核的文件管理機(jī)制內(nèi)核的文件管理機(jī)制1 連續(xù)結(jié)構(gòu)連續(xù)結(jié)構(gòu)鏈接結(jié)構(gòu)鏈接結(jié)構(gòu)索引結(jié)構(gòu)索引結(jié)構(gòu)一個文件的空間在邏輯上可看成是連續(xù)的,即一個文一個文件的空間在邏輯上可看成是連續(xù)的,即一個文件由若干連續(xù)的盤塊所組成。但在磁盤上可以有多種方式件由若干連續(xù)的盤塊所組成。但在磁盤上可以有多種方式來組成一個文件,換言之,文件有多種物理的存儲結(jié)構(gòu),來組成一個文件,換言之,文件有多種物理的存儲結(jié)構(gòu),常用的是:連續(xù)結(jié)構(gòu)、鏈接結(jié)構(gòu)、索引結(jié)構(gòu)。常用的是:連續(xù)結(jié)

3、構(gòu)、鏈接結(jié)構(gòu)、索引結(jié)構(gòu)。文件的物理存儲結(jié)構(gòu)決定了文件的邏輯地址空間到文文件的物理存儲結(jié)構(gòu)決定了文件的邏輯地址空間到文件的物理地址空間的映射方法。件的物理地址空間的映射方法。1.1 連續(xù)結(jié)構(gòu)連續(xù)結(jié)構(gòu) 又稱順序結(jié)構(gòu)。指一個文件由若干相鄰的盤塊所組成。又稱順序結(jié)構(gòu)。指一個文件由若干相鄰的盤塊所組成。稱這種結(jié)構(gòu)的文件為連續(xù)(順序)文件。稱這種結(jié)構(gòu)的文件為連續(xù)(順序)文件。這是一種最簡單的文件物理結(jié)構(gòu),且讀寫效率很高,這是一種最簡單的文件物理結(jié)構(gòu),且讀寫效率很高,因為一次尋道就可完成整個文件的讀寫。數(shù)據(jù)庫文件就要因為一次尋道就可完成整個文件的讀寫。數(shù)據(jù)庫文件就要求是連續(xù)結(jié)構(gòu),所以裝數(shù)據(jù)庫的話最好是在一個

4、空的卷上求是連續(xù)結(jié)構(gòu),所以裝數(shù)據(jù)庫的話最好是在一個空的卷上裝,如果裝在一個已裝了很多文件的卷上,就會發(fā)現(xiàn)該數(shù)裝,如果裝在一個已裝了很多文件的卷上,就會發(fā)現(xiàn)該數(shù)據(jù)庫系統(tǒng)運行很慢。圖據(jù)庫系統(tǒng)運行很慢。圖9-1為文件的連續(xù)結(jié)構(gòu)示意圖。為文件的連續(xù)結(jié)構(gòu)示意圖。連續(xù)結(jié)構(gòu)的優(yōu)點是保證了文件的邏輯塊的順序與物理連續(xù)結(jié)構(gòu)的優(yōu)點是保證了文件的邏輯塊的順序與物理塊的順序相一致,支持隨機(jī)存取,讀寫速度快。缺點是:塊的順序相一致,支持隨機(jī)存取,讀寫速度快。缺點是: 要求在建立文件時給定文件的最大長度,以便系要求在建立文件時給定文件的最大長度,以便系統(tǒng)分配足夠的地址連續(xù)的盤塊,顯然這不利于文件的動態(tài)統(tǒng)分配足夠的地址連續(xù)

5、的盤塊,顯然這不利于文件的動態(tài)增長;增長;在頻繁的文件創(chuàng)建和刪除之后,存在卷空間的外碎片在頻繁的文件創(chuàng)建和刪除之后,存在卷空間的外碎片問題,使得卷空間的利用率不高。問題,使得卷空間的利用率不高。首物理塊號首物理塊號8080 81 82 83 0 1 2 3物理塊號:物理塊號:邏輯塊號:邏輯塊號:FCB圖圖9-1 文件的連續(xù)結(jié)構(gòu)示意圖文件的連續(xù)結(jié)構(gòu)示意圖1.2 鏈接結(jié)構(gòu)鏈接結(jié)構(gòu)這是一種非連續(xù)結(jié)構(gòu)。一個文件可由若干離散的盤塊這是一種非連續(xù)結(jié)構(gòu)。一個文件可由若干離散的盤塊所組成,但需為每塊設(shè)置一個鏈接字,用于指出下一塊的所組成,但需為每塊設(shè)置一個鏈接字,用于指出下一塊的塊號。稱這種結(jié)構(gòu)的文件為鏈接文

6、件。塊號。稱這種結(jié)構(gòu)的文件為鏈接文件。其優(yōu)點是:其優(yōu)點是:一個文件不要求占用連續(xù)的卷空間,因此消除了外一個文件不要求占用連續(xù)的卷空間,因此消除了外碎片問題,文件卷的利用率較高;碎片問題,文件卷的利用率較高;一個文件可以以塊為單位動態(tài)地增長和刪除,易于一個文件可以以塊為單位動態(tài)地增長和刪除,易于文件的動態(tài)增刪。文件的動態(tài)增刪。鏈接結(jié)構(gòu)又分為隱式鏈接和顯式鏈接兩種:鏈接結(jié)構(gòu)又分為隱式鏈接和顯式鏈接兩種:(1)隱式鏈接隱式鏈接在文件的在文件的FCB中指明該文件的首塊號,并在每個盤塊中指明該文件的首塊號,并在每個盤塊內(nèi)設(shè)置一個鏈接字內(nèi)設(shè)置一個鏈接字next。 FCB首盤塊首盤塊號號8090100110

7、盤塊盤塊80盤塊盤塊90盤塊盤塊100盤塊盤塊110邏輯塊邏輯塊0邏輯塊邏輯塊1邏輯塊邏輯塊2邏輯塊邏輯塊3圖圖9-2 9-2 文件的隱式鏈接結(jié)構(gòu)文件的隱式鏈接結(jié)構(gòu)這種結(jié)構(gòu)的缺點是:這種結(jié)構(gòu)的缺點是:難于隨機(jī)訪問文件中的信息,為了讀寫文件中某邏難于隨機(jī)訪問文件中的信息,為了讀寫文件中某邏輯塊的信息,必須從鏈頭開始,逐一讀取每個盤塊,以取輯塊的信息,必須從鏈頭開始,逐一讀取每個盤塊,以取得下一邏輯塊的盤塊號;得下一邏輯塊的盤塊號;在每個盤塊中都設(shè)置了一個鏈接字,破壞了盤塊數(shù)在每個盤塊中都設(shè)置了一個鏈接字,破壞了盤塊數(shù)據(jù)的完整性。據(jù)的完整性。 (2)顯式鏈接顯式鏈接把一個文件系統(tǒng)中所有盤塊的鏈接字

8、集中存放在一個把一個文件系統(tǒng)中所有盤塊的鏈接字集中存放在一個專門設(shè)置的專門設(shè)置的“塊鏈接表塊鏈接表”中,表目數(shù)為該文件系統(tǒng)的盤塊中,表目數(shù)為該文件系統(tǒng)的盤塊總數(shù),表目號對應(yīng)盤塊號,表目內(nèi)容是該盤塊的鏈接字??倲?shù),表目號對應(yīng)盤塊號,表目內(nèi)容是該盤塊的鏈接字。顯式鏈接較之隱式鏈接明顯減少了訪盤次數(shù),因為對顯式鏈接較之隱式鏈接明顯減少了訪盤次數(shù),因為對盤塊的尋址只需在塊鏈接表上進(jìn)行,故容易實現(xiàn)對文件的盤塊的尋址只需在塊鏈接表上進(jìn)行,故容易實現(xiàn)對文件的隨機(jī)存取,但塊鏈接表本身相當(dāng)大,調(diào)入內(nèi)存后需占較大隨機(jī)存取,但塊鏈接表本身相當(dāng)大,調(diào)入內(nèi)存后需占較大的內(nèi)存空間。例如,對于一個的內(nèi)存空間。例如,對于一個

9、2GB的磁盤文件系統(tǒng),設(shè)盤的磁盤文件系統(tǒng),設(shè)盤塊的大小為塊的大小為2KB,則共有,則共有1M塊,塊號需用長整型數(shù)(塊,塊號需用長整型數(shù)(32位,占位,占4個字節(jié))表示,于是一個盤塊可存放個字節(jié))表示,于是一個盤塊可存放256個塊號,個塊號,而塊鏈接表需占而塊鏈接表需占4096個盤塊,調(diào)入內(nèi)存需占個盤塊,調(diào)入內(nèi)存需占4096個實頁個實頁面。面。顯式鏈接結(jié)構(gòu),也稱塊鏈接表結(jié)構(gòu),是被廣泛采用的顯式鏈接結(jié)構(gòu),也稱塊鏈接表結(jié)構(gòu),是被廣泛采用的文件物理結(jié)構(gòu)之一。文件物理結(jié)構(gòu)之一。DOS、Windows 2000/XP均支持均支持這種結(jié)構(gòu),并稱塊鏈接表為這種結(jié)構(gòu),并稱塊鏈接表為“文件分配表文件分配表”(FA

10、T),稱),稱采用這種結(jié)構(gòu)的文件系統(tǒng)為采用這種結(jié)構(gòu)的文件系統(tǒng)為FAT文件系統(tǒng)。文件系統(tǒng)。FAT文件系統(tǒng)又分為文件系統(tǒng)又分為FAT12、FAT16、FAT32三種。三種。它們的區(qū)別在于用來表示磁盤地址的內(nèi)存字位數(shù)。如果用它們的區(qū)別在于用來表示磁盤地址的內(nèi)存字位數(shù)。如果用12位來表示磁盤地址,則是位來表示磁盤地址,則是FAT12,用,用16位表示就是位表示就是FAT16。不過。不過FAT32卻并不是使用卻并不是使用32位來表示磁盤地址,位來表示磁盤地址,實際上是用了實際上是用了28位。位。8-11151201234567891011121314文件文件A起始地址起始地址物理盤塊號物理盤塊號圖圖9-

11、3 文件分配表文件分配表FAT示例示例FAT1.3 索引結(jié)構(gòu)索引結(jié)構(gòu)這也是一種非連續(xù)結(jié)構(gòu),通過這也是一種非連續(xù)結(jié)構(gòu),通過為每個文件建立一張索為每個文件建立一張索引表引表來實現(xiàn)文件的邏輯空間與物理空間之間的映射。來實現(xiàn)文件的邏輯空間與物理空間之間的映射。索引表的格式類似于內(nèi)存管理中的頁表。表目數(shù)為該索引表的格式類似于內(nèi)存管理中的頁表。表目數(shù)為該文件占用的盤塊數(shù),表目號對應(yīng)文件自然排序的邏輯塊號,文件占用的盤塊數(shù),表目號對應(yīng)文件自然排序的邏輯塊號,表目內(nèi)容是盤塊號。表目內(nèi)容是盤塊號。邏輯塊號邏輯塊號盤塊號盤塊號012n圖圖9-4 文件的索引表文件的索引表索引表是在文件建立時由文件系統(tǒng)動態(tài)建立的,且

12、與索引表是在文件建立時由文件系統(tǒng)動態(tài)建立的,且與該文件一起存儲在同一文件卷上。在該文件一起存儲在同一文件卷上。在FCB中指出索引表所中指出索引表所占用盤塊的塊號(索引塊號)。對于一個較大的文件,其占用盤塊的塊號(索引塊號)。對于一個較大的文件,其索引表可能要占用幾個盤塊,解決方案可采用二級索引,索引表可能要占用幾個盤塊,解決方案可采用二級索引,如圖如圖9-5所示。一級索引表占所示。一級索引表占1個盤塊,它的每個表項的個盤塊,它的每個表項的內(nèi)容為一個二級索引表的指針,設(shè)內(nèi)容為一個二級索引表的指針,設(shè)1個盤塊可裝有個盤塊可裝有n個索個索引表表項,于是一共可有引表表項,于是一共可有n個二級索引表,因

13、此,一個二個二級索引表,因此,一個二級索引文件最多可含有級索引文件最多可含有nn個盤塊。個盤塊。對于超大型文件,可進(jìn)一步采用多級索引表。對于超大型文件,可進(jìn)一步采用多級索引表。索引結(jié)構(gòu)的優(yōu)點是訪問速度快,文件長度可以動態(tài)變索引結(jié)構(gòu)的優(yōu)點是訪問速度快,文件長度可以動態(tài)變化。缺點是存儲開銷大,因為每個文件有一個索引表,而化。缺點是存儲開銷大,因為每個文件有一個索引表,而索引表亦由盤塊存儲,故需要占用額外的卷空間。另外,索引表亦由盤塊存儲,故需要占用額外的卷空間。另外,當(dāng)文件被打開時,索引表需要讀入內(nèi)存,故又需要占用額當(dāng)文件被打開時,索引表需要讀入內(nèi)存,故又需要占用額外的內(nèi)存空間,當(dāng)同時打開的文件很

14、多時,內(nèi)存開銷是可外的內(nèi)存空間,當(dāng)同時打開的文件很多時,內(nèi)存開銷是可觀的。觀的。索引表指針?biāo)饕碇羔楩CB一級索引表一級索引表二級索引表二級索引表圖圖9-5 文件的二級索引結(jié)構(gòu)文件的二級索引結(jié)構(gòu) 2 目錄項的內(nèi)容目錄項的內(nèi)容目錄結(jié)構(gòu)目錄結(jié)構(gòu)文件目錄是實現(xiàn)按名存取文件的關(guān)鍵機(jī)制,是文件系文件目錄是實現(xiàn)按名存取文件的關(guān)鍵機(jī)制,是文件系統(tǒng)的核心,通過目錄才能完成從抽象到現(xiàn)實的轉(zhuǎn)換。文件統(tǒng)的核心,通過目錄才能完成從抽象到現(xiàn)實的轉(zhuǎn)換。文件目錄的實現(xiàn)要解決兩個問題:目錄的實現(xiàn)要解決兩個問題:目錄項內(nèi)容的設(shè)計目錄項內(nèi)容的設(shè)計目錄結(jié)構(gòu)的設(shè)計目錄結(jié)構(gòu)的設(shè)計2.1 目錄項的內(nèi)容目錄項的內(nèi)容一個目錄由若干等長的目錄

15、項(記錄)組成,目錄本一個目錄由若干等長的目錄項(記錄)組成,目錄本身也作為文件來處理,它是一種等長記錄式文件。身也作為文件來處理,它是一種等長記錄式文件。目錄項的組成有兩種方式:目錄項的組成有兩種方式:FCB目錄項和名號目錄項。目錄項和名號目錄項。1. FCB目錄項目錄項這是簡單直觀的目錄項組成方式,目錄項就是這是簡單直觀的目錄項組成方式,目錄項就是FCB,即一個目錄由若干順序排列的即一個目錄由若干順序排列的FCB所構(gòu)成。當(dāng)用路徑名和所構(gòu)成。當(dāng)用路徑名和文件名訪問某個文件時,文件系統(tǒng)對目錄進(jìn)行線性檢索,文件名訪問某個文件時,文件系統(tǒng)對目錄進(jìn)行線性檢索,找到文件名對應(yīng)的找到文件名對應(yīng)的FCB,

16、就可獲取該文件的物理位置等信,就可獲取該文件的物理位置等信息,完成文件名到文件物理位置的映射。息,完成文件名到文件物理位置的映射。這種方式對于小規(guī)模的文件系統(tǒng)還可以,但對于較大這種方式對于小規(guī)模的文件系統(tǒng)還可以,但對于較大規(guī)模的文件系統(tǒng)存在如下問題:規(guī)模的文件系統(tǒng)存在如下問題:目錄跟普通文件一樣也存放在文件系統(tǒng)中。對于較大的文目錄跟普通文件一樣也存放在文件系統(tǒng)中。對于較大的文件系統(tǒng),當(dāng)有很多文件時,目錄需要占用大量的盤塊。在件系統(tǒng),當(dāng)有很多文件時,目錄需要占用大量的盤塊。在檢索目錄的過程中,先將目錄的第一個盤塊調(diào)入內(nèi)存,然檢索目錄的過程中,先將目錄的第一個盤塊調(diào)入內(nèi)存,然后用給定的文件名逐一與

17、該盤塊里的各后用給定的文件名逐一與該盤塊里的各FCB中的文件名進(jìn)中的文件名進(jìn)行比較,若未找到指定文件的行比較,若未找到指定文件的FCB,便將目錄的下一個盤,便將目錄的下一個盤塊調(diào)入內(nèi)存,以此類推。設(shè)目錄占用的盤塊數(shù)為塊調(diào)入內(nèi)存,以此類推。設(shè)目錄占用的盤塊數(shù)為N,則查,則查找一個找一個FCB平均需要調(diào)入盤塊平均需要調(diào)入盤塊(N+1)/2次。次。假如一個假如一個FCB為為128字節(jié),盤塊大小為字節(jié),盤塊大小為1KB,則每個,則每個盤塊只能存放盤塊只能存放8個個FCB;另如果一個目錄含有;另如果一個目錄含有200個目錄個目錄項,它就需要占用項,它就需要占用25個盤塊。于是,在該目錄中線性查個盤塊。于

18、是,在該目錄中線性查找一個目錄項平均需要啟動磁盤找一個目錄項平均需要啟動磁盤1213次。次。2. 名號目錄項名號目錄項對對FCB目錄項方式稍加分析可以發(fā)現(xiàn),在檢索目錄的目錄項方式稍加分析可以發(fā)現(xiàn),在檢索目錄的過程中只用到了文件名,僅當(dāng)找到一個過程中只用到了文件名,僅當(dāng)找到一個FCB時才需要從時才需要從該該FCB中讀出文件的物理地址,而中讀出文件的物理地址,而FCB中的其他信息在檢中的其他信息在檢索目錄時一概不用,顯然,這些信息在檢索目錄時不需索目錄時一概不用,顯然,這些信息在檢索目錄時不需要調(diào)入內(nèi)存。為此,要調(diào)入內(nèi)存。為此,UNIX率先采用了名號目錄項的目錄率先采用了名號目錄項的目錄項組成方法

19、。項組成方法。UNIX把文件名從把文件名從FCB中分離出來,把這種不含文件中分離出來,把這種不含文件名的名的FCB稱為稱為i-Node,并把所有文件的,并把所有文件的i-Node集中順序集中順序存放在文件系統(tǒng)的固定區(qū)域(存放在文件系統(tǒng)的固定區(qū)域(i-Node區(qū))中。這里的區(qū))中。這里的i 意為索引(意為索引(index),故中文稱),故中文稱索引節(jié)點索引節(jié)點或或 i 節(jié)點節(jié)點。不過。不過也有人認(rèn)為也有人認(rèn)為i 是指是指information。UNIX最初定義的目錄項如下:最初定義的目錄項如下: 這種目錄項僅占這種目錄項僅占16個字節(jié),其中,個字節(jié),其中,“文件名文件名”字段字段占占14字節(jié);字

20、節(jié);“i 節(jié)點號節(jié)點號”指示該文件對應(yīng)的指示該文件對應(yīng)的i 節(jié)點在索引節(jié)點在索引節(jié)點區(qū)中的位置序號,即它是第節(jié)點區(qū)中的位置序號,即它是第 i 號索引節(jié)點,該字段號索引節(jié)點,該字段占占2字節(jié)。這種目錄項就是名號目錄項。于是在字節(jié)。這種目錄項就是名號目錄項。于是在1KB的盤的盤塊中可存放塊中可存放64個目錄項,從而大大壓縮了文件目錄的規(guī)個目錄項,從而大大壓縮了文件目錄的規(guī)模,加快了目錄檢索的速度。模,加快了目錄檢索的速度。例如,對于一個含有例如,對于一個含有200個名號目錄項的目錄文件,個名號目錄項的目錄文件,它需占用它需占用4個盤塊。檢索該目錄中的一個文件時,需要個盤塊。檢索該目錄中的一個文件時

21、,需要2個步驟:首先,在該目錄中找出文件的個步驟:首先,在該目錄中找出文件的i 節(jié)點號,平均需節(jié)點號,平均需文件名文件名i 節(jié)點號節(jié)點號要啟動磁盤要啟動磁盤2次;然后,根據(jù)得到的次;然后,根據(jù)得到的i 節(jié)點號可以直接計節(jié)點號可以直接計算出對應(yīng)的算出對應(yīng)的i 節(jié)點在索引節(jié)點區(qū)中的位置,即盤塊號,于節(jié)點在索引節(jié)點區(qū)中的位置,即盤塊號,于是,再一次讀盤即可獲取所需的是,再一次讀盤即可獲取所需的i 節(jié)點,從而完成文件名節(jié)點,從而完成文件名到文件物理位置的映射。即一次目錄檢索平均啟動了磁盤到文件物理位置的映射。即一次目錄檢索平均啟動了磁盤3次。次。較新版本的較新版本的UNIX和和Linux對名號目錄項進(jìn)

22、行了擴(kuò)展:對名號目錄項進(jìn)行了擴(kuò)展:增加了增加了“文件類型文件類型”,放寬了對文件名長度的限制。,放寬了對文件名長度的限制。當(dāng)然,名號目錄項方式也是要付出代價的,它是一種當(dāng)然,名號目錄項方式也是要付出代價的,它是一種空間換時間的方法。為什么?請同學(xué)們自己分析??臻g換時間的方法。為什么?請同學(xué)們自己分析。2.2 目錄結(jié)構(gòu)目錄結(jié)構(gòu)除了目錄項的組成方式外,目錄結(jié)構(gòu)的組織方式也直除了目錄項的組成方式外,目錄結(jié)構(gòu)的組織方式也直接影響到文件的讀寫速度,并關(guān)系到文件的共享性和安全接影響到文件的讀寫速度,并關(guān)系到文件的共享性和安全性。因此組織好文件的目錄是設(shè)計文件系統(tǒng)的重要環(huán)節(jié)。性。因此組織好文件的目錄是設(shè)計文

23、件系統(tǒng)的重要環(huán)節(jié)。常見的目錄結(jié)構(gòu)有三種:常見的目錄結(jié)構(gòu)有三種:單級目錄結(jié)構(gòu)單級目錄結(jié)構(gòu)二級目錄結(jié)構(gòu)二級目錄結(jié)構(gòu)多級目錄結(jié)構(gòu)多級目錄結(jié)構(gòu)1. 單級目錄結(jié)構(gòu)單級目錄結(jié)構(gòu)文件系統(tǒng)中只設(shè)置一個目錄,它包含了該文件系統(tǒng)中文件系統(tǒng)中只設(shè)置一個目錄,它包含了該文件系統(tǒng)中的所有文件的目錄項,要查找任一文件都需要在該目錄中的所有文件的目錄項,要查找任一文件都需要在該目錄中進(jìn)行線性檢索。進(jìn)行線性檢索。單級目錄結(jié)構(gòu)的特點是實現(xiàn)簡單,但當(dāng)目錄中含有大單級目錄結(jié)構(gòu)的特點是實現(xiàn)簡單,但當(dāng)目錄中含有大量目錄項時,要查找一個文件相當(dāng)費時,且它無法解決文量目錄項時,要查找一個文件相當(dāng)費時,且它無法解決文件重名問題,這對用戶是很

24、不方便的。因此,這種目錄結(jié)件重名問題,這對用戶是很不方便的。因此,這種目錄結(jié)構(gòu)只用在單用戶環(huán)境中。構(gòu)只用在單用戶環(huán)境中。2. 二級目錄結(jié)構(gòu)二級目錄結(jié)構(gòu)文件系統(tǒng)為每個用戶建立一個目錄,稱為用戶文件目文件系統(tǒng)為每個用戶建立一個目錄,稱為用戶文件目錄錄UFD。一個用戶的所有文件的目錄項都并列在該目錄中。一個用戶的所有文件的目錄項都并列在該目錄中。文件系統(tǒng)又設(shè)置一個根目錄,也稱主文件目錄文件系統(tǒng)又設(shè)置一個根目錄,也稱主文件目錄MFD,每個每個UFD在其中占有一個目錄項,目錄項的內(nèi)容為:用戶在其中占有一個目錄項,目錄項的內(nèi)容為:用戶名、名、UFD指針。指針。圖圖9-6 9-6 二級目錄結(jié)構(gòu)二級目錄結(jié)構(gòu)一

25、個一個MFD和若干并列的和若干并列的UFD便構(gòu)成了二級目錄結(jié)構(gòu)。便構(gòu)成了二級目錄結(jié)構(gòu)。當(dāng)要訪問一個文件時,先根據(jù)用戶名檢索當(dāng)要訪問一個文件時,先根據(jù)用戶名檢索MFD,找出相應(yīng),找出相應(yīng)的的UFD;再用文件名檢索;再用文件名檢索UFD,找出對應(yīng)的,找出對應(yīng)的FCB,從而就,從而就可以得到文件的具體物理地址??梢缘玫轿募木唧w物理地址。二級目錄結(jié)構(gòu)基本上克服了單目錄結(jié)構(gòu)的缺點,其優(yōu)二級目錄結(jié)構(gòu)基本上克服了單目錄結(jié)構(gòu)的缺點,其優(yōu)點如下:點如下:提高了檢索目錄的速度提高了檢索目錄的速度假設(shè)在假設(shè)在MFD中有中有n個目錄項,每個個目錄項,每個UFD有有m個目錄項,個目錄項,則找到一指定的目錄項,最多需要

26、檢索則找到一指定的目錄項,最多需要檢索n+m個目錄項,個目錄項,平均檢索次數(shù)為平均檢索次數(shù)為n/2+m/2=(n+m)/2。但如果采用單級。但如果采用單級目錄結(jié)構(gòu),則最多需檢索目錄結(jié)構(gòu),則最多需檢索nm個目錄項,平均檢索次數(shù)個目錄項,平均檢索次數(shù)為為(nm)/2。不妨設(shè)。不妨設(shè)n=m,可見,采用二級目錄,可見,采用二級目錄結(jié)構(gòu)可使檢索效率提高約結(jié)構(gòu)可使檢索效率提高約n/2倍。倍。較好地解決了文件重名問題較好地解決了文件重名問題在不同的在不同的UFD中可以使用相同的文件名。中可以使用相同的文件名。缺點是不能對文件進(jìn)行分類,當(dāng)一用戶的文件很多時,缺點是不能對文件進(jìn)行分類,當(dāng)一用戶的文件很多時,文件

27、檢索仍然較費時。文件檢索仍然較費時。3. 多級目錄結(jié)構(gòu)多級目錄結(jié)構(gòu)也稱樹形目錄結(jié)構(gòu),是被現(xiàn)代操作系統(tǒng)普遍采用的目也稱樹形目錄結(jié)構(gòu),是被現(xiàn)代操作系統(tǒng)普遍采用的目錄結(jié)構(gòu)。它按照倒掛樹的形式把目錄構(gòu)造成一棵目錄樹,錄結(jié)構(gòu)。它按照倒掛樹的形式把目錄構(gòu)造成一棵目錄樹,如圖如圖9-7所示。所示。在目錄樹中,一個非終極節(jié)點(矩形)表示一個目錄在目錄樹中,一個非終極節(jié)點(矩形)表示一個目錄文件,一個葉節(jié)點(圓圈)表示一個非目錄文件。從一個文件,一個葉節(jié)點(圓圈)表示一個非目錄文件。從一個非終極節(jié)點出發(fā)的分支(直線)數(shù)表示一個目錄所含的目非終極節(jié)點出發(fā)的分支(直線)數(shù)表示一個目錄所含的目錄項個數(shù)。任一目錄項都可

28、以說明一個非目錄文件,也可錄項個數(shù)。任一目錄項都可以說明一個非目錄文件,也可以指向一個次一級的子目錄。整個目錄樹有一個作為起始以指向一個次一級的子目錄。整個目錄樹有一個作為起始點的點的根目錄根目錄(ROOT)。)。從根出發(fā)遍歷若干非終極節(jié)點到某個指定節(jié)點而形成從根出發(fā)遍歷若干非終極節(jié)點到某個指定節(jié)點而形成了一條檢索路徑,該路徑中的所有節(jié)點的名字組合成了指了一條檢索路徑,該路徑中的所有節(jié)點的名字組合成了指定節(jié)點的定節(jié)點的路徑名路徑名,路徑名中的各節(jié)點名之間用一特殊符號,路徑名中的各節(jié)點名之間用一特殊符號分隔(如分隔(如Windows中的中的“”,UNIX/Linux中的中的“/”)。)。在目錄樹

29、中查找一個文件需要按路徑名逐層檢索。檢索時在目錄樹中查找一個文件需要按路徑名逐層檢索。檢索時可以按絕對路徑名進(jìn)行,也可以按相對路徑名進(jìn)行。可以按絕對路徑名進(jìn)行,也可以按相對路徑名進(jìn)行。絕對絕對路徑名路徑名即從根開始的路徑名,即從根開始的路徑名,相對路徑名相對路徑名則是從工作目錄則是從工作目錄(當(dāng)前目錄)開始的路徑名。(當(dāng)前目錄)開始的路徑名。目錄樹使得對文件的管理和使用都十分方便。它支持目錄樹使得對文件的管理和使用都十分方便。它支持將文件按類型、用途等進(jìn)行分類,建立多個分類目錄,而將文件按類型、用途等進(jìn)行分類,建立多個分類目錄,而且可按需要隨意擴(kuò)展目錄結(jié)構(gòu)的層次。每個用戶都可以在且可按需要隨意

30、擴(kuò)展目錄結(jié)構(gòu)的層次。每個用戶都可以在目錄樹中建立自己的目錄子樹。路徑名的引入完全解決了目錄樹中建立自己的目錄子樹。路徑名的引入完全解決了文件重名問題。此外,目錄樹結(jié)構(gòu)較之二級目錄結(jié)構(gòu)進(jìn)一文件重名問題。此外,目錄樹結(jié)構(gòu)較之二級目錄結(jié)構(gòu)進(jìn)一步提高了檢索目錄的速度。步提高了檢索目錄的速度。例如,在圖例如,在圖9-7中,目錄中,目錄ABA下的文件下的文件a的路徑名是的路徑名是“(ROOT)/A/AB/ABA/a”(ROOT一般可缺?。夸浺话憧扇笔。?,目錄BA下也有一個文件下也有一個文件a,其路徑名為,其路徑名為“(ROOT)/B/BA/a”,雖然它們的文件名相同,但它們各自的路徑不同,前者是雖然它

31、們的文件名相同,但它們各自的路徑不同,前者是“/A/AB/ABA/”,后者是,后者是“/B/BA/”,故它們是兩個不,故它們是兩個不同的文件。同的文件。 又如,假設(shè)又如,假設(shè)ROOT中有中有n1個目錄項,目錄個目錄項,目錄A中有中有n2個個目錄項,目錄目錄項,目錄AA中有中有n3個目錄項,目錄個目錄項,目錄AB中有中有n4個目錄個目錄項,目錄項,目錄AC中有中有n5個目錄項,目錄個目錄項,目錄ABA中有中有n6個目錄項,個目錄項,目錄目錄ABB中有中有n7個目錄項。則檢索文件個目錄項。則檢索文件a的平均檢索次數(shù)的平均檢索次數(shù)為為(n1+n2+n4+n6)/2。而如果采用二級目錄結(jié)構(gòu),則。而如果

32、采用二級目錄結(jié)構(gòu),則檢索目錄檢索目錄A下的文件下的文件a,平均檢索次數(shù)需要,平均檢索次數(shù)需要(n1+n2+n3+n4+n5+n6+n7)/2。圖圖9-7 多級目錄結(jié)構(gòu)多級目錄結(jié)構(gòu)ROOTABCAAABACBACACBABAABBCAACABCBAaabcCABA 3 空閑分區(qū)表空閑分區(qū)表空閑塊鏈空閑塊鏈位示圖位示圖空閑塊的成組鏈接空閑塊的成組鏈接文件系統(tǒng)要解決的重要問題之一是如何為新創(chuàng)建的文文件系統(tǒng)要解決的重要問題之一是如何為新創(chuàng)建的文件分配磁盤空間,其解決方法與內(nèi)存的分配情況有許多相件分配磁盤空間,其解決方法與內(nèi)存的分配情況有許多相似之處,即同樣可以采取連續(xù)分配方式或離散分配方式。似之處,即

33、同樣可以采取連續(xù)分配方式或離散分配方式。前者可提供較高的文件訪問速度,但可能產(chǎn)生較多的外碎前者可提供較高的文件訪問速度,但可能產(chǎn)生較多的外碎片;后者能有效地利用磁盤空間,但文件的訪問速度較慢。片;后者能有效地利用磁盤空間,但文件的訪問速度較慢。不論哪種分配方式,磁盤空間的基本分配單位都是塊不論哪種分配方式,磁盤空間的基本分配單位都是塊(block)而非字節(jié),)而非字節(jié),Windows稱這種塊為簇。塊或者稱這種塊為簇。塊或者簇的大小在超級塊中定義。簇的大小在超級塊中定義。為了實現(xiàn)磁盤空間的分配,文件系統(tǒng)首先必須能保持為了實現(xiàn)磁盤空間的分配,文件系統(tǒng)首先必須能保持磁盤空間使用情況的記錄,即哪些空間

34、被占用,哪些空間磁盤空間使用情況的記錄,即哪些空間被占用,哪些空間為閑置。下面是幾種常用的磁盤空間的管理方法。為閑置。下面是幾種常用的磁盤空間的管理方法。3.1 空閑分區(qū)表空閑分區(qū)表該方法屬于連續(xù)分配方式。它與內(nèi)存的可變分區(qū)方式該方法屬于連續(xù)分配方式。它與內(nèi)存的可變分區(qū)方式雷同,它為每個文件分配一個包含有若干編號連續(xù)的盤塊雷同,它為每個文件分配一個包含有若干編號連續(xù)的盤塊所組成的所組成的“盤分區(qū)盤分區(qū)”。為此,文件系統(tǒng)須建立一個空閑分。為此,文件系統(tǒng)須建立一個空閑分區(qū)表,通常采用鏈表形式,每個空閑盤分區(qū)對應(yīng)一個表結(jié)區(qū)表,通常采用鏈表形式,每個空閑盤分區(qū)對應(yīng)一個表結(jié)點,表結(jié)點內(nèi)容包括:首盤塊號、

35、盤塊數(shù)、點,表結(jié)點內(nèi)容包括:首盤塊號、盤塊數(shù)、next??臻e盤分區(qū)的分配與內(nèi)存的可變分區(qū)分配類似,同樣空閑盤分區(qū)的分配與內(nèi)存的可變分區(qū)分配類似,同樣是采用最先適配法等?;厥毡P分區(qū)時同樣要考慮回收區(qū)是是采用最先適配法等?;厥毡P分區(qū)時同樣要考慮回收區(qū)是否有前鄰分區(qū)或后鄰分區(qū),若有的話則需進(jìn)行合并。否有前鄰分區(qū)或后鄰分區(qū),若有的話則需進(jìn)行合并。3.2 空閑塊鏈空閑塊鏈該方法屬于離散分配方式,它將卷上的所有空閑盤塊該方法屬于離散分配方式,它將卷上的所有空閑盤塊鏈接起來。當(dāng)為文件分配磁盤空間時,系統(tǒng)從空閑塊鏈的鏈接起來。當(dāng)為文件分配磁盤空間時,系統(tǒng)從空閑塊鏈的鏈?zhǔn)组_始,依次摘下所需數(shù)目的盤塊分配之。當(dāng)因

36、刪除文鏈?zhǔn)组_始,依次摘下所需數(shù)目的盤塊分配之。當(dāng)因刪除文件而釋放文件空間時,系統(tǒng)將回收的盤塊依次插入空閑塊件而釋放文件空間時,系統(tǒng)將回收的盤塊依次插入空閑塊鏈的鏈?zhǔn)谆蜴溛病f湹逆準(zhǔn)谆蜴溛病?臻e塊鏈法的優(yōu)點是節(jié)省內(nèi)存,但分配和回收速度較空閑塊鏈法的優(yōu)點是節(jié)省內(nèi)存,但分配和回收速度較慢,實現(xiàn)效率較低。慢,實現(xiàn)效率較低。3.3 位示圖位示圖位示圖,也稱盤圖。這是一種簡單和低開銷的方案,位示圖,也稱盤圖。這是一種簡單和低開銷的方案,它只利用一個二進(jìn)制位它只利用一個二進(jìn)制位(bit)來表示一個盤塊的分配狀態(tài):來表示一個盤塊的分配狀態(tài):0 表示空閑塊,表示空閑塊,1 表示占用塊。表示占用塊。系統(tǒng)將一文件系

37、統(tǒng)中的每一個盤塊都用一個對應(yīng)的二系統(tǒng)將一文件系統(tǒng)中的每一個盤塊都用一個對應(yīng)的二進(jìn)制位來標(biāo)記它,所有這些二進(jìn)制位組成的序列稱為該文進(jìn)制位來標(biāo)記它,所有這些二進(jìn)制位組成的序列稱為該文件系統(tǒng)的位示圖。一個二進(jìn)制位在圖中的坐標(biāo)位置對應(yīng)于件系統(tǒng)的位示圖。一個二進(jìn)制位在圖中的坐標(biāo)位置對應(yīng)于自然線性排序的盤塊塊號。自然線性排序的盤塊塊號。位示圖的大小依文件系統(tǒng)的大小和盤塊的長度而定。位示圖的大小依文件系統(tǒng)的大小和盤塊的長度而定。例如,對于一個例如,對于一個2GB的磁盤文件系統(tǒng),如盤塊的長度為的磁盤文件系統(tǒng),如盤塊的長度為1KB,則該文件系統(tǒng)共有,則該文件系統(tǒng)共有2M(2,097,152)個盤塊,因)個盤塊,

38、因此它需要用此它需要用262144個字節(jié)(個字節(jié)(256KB)來構(gòu)建位示圖,即來構(gòu)建位示圖,即該圖需占用該圖需占用256個盤塊。(較之個盤塊。(較之FAT需要需要4096個盤塊,個盤塊,其存儲開銷要小的多)。其存儲開銷要小的多)。當(dāng)分配一個盤塊時,從圖中找出一個值為當(dāng)分配一個盤塊時,從圖中找出一個值為0的二進(jìn)制的二進(jìn)制位,如果該二進(jìn)制位在圖中的位置為第位,如果該二進(jìn)制位在圖中的位置為第 i 個字(或字節(jié))個字(或字節(jié))的第的第 j 列,則它對應(yīng)的盤塊號列,則它對應(yīng)的盤塊號 b ,可由以下公式求出:,可由以下公式求出:b = w * i + j /* w是字長是字長 */同時將該二進(jìn)制位置同時將

39、該二進(jìn)制位置“1”,表示第,表示第 b 號盤塊已分配。號盤塊已分配。當(dāng)回收一個盤塊時,將該塊的塊號當(dāng)回收一個盤塊時,將該塊的塊號 b 轉(zhuǎn)換成字序號轉(zhuǎn)換成字序號i 和列序號和列序號 j ,即有:,即有:i = b / w j = b % w然后將坐標(biāo)為(然后將坐標(biāo)為(i , j)的該二進(jìn)制位置為)的該二進(jìn)制位置為“0”,表示空閑。,表示空閑。的第的第 j 列,則它對應(yīng)的盤塊號列,則它對應(yīng)的盤塊號 b ,可由以下公式求出:,可由以下公式求出:b = w * i + j /* w是字長是字長 */同時將該二進(jìn)制位置同時將該二進(jìn)制位置“1”,表示第,表示第 b 號盤塊已分配。號盤塊已分配。當(dāng)回收一個盤

40、塊時,將該塊的塊號當(dāng)回收一個盤塊時,將該塊的塊號 b 轉(zhuǎn)換成字序號轉(zhuǎn)換成字序號i 和列序號和列序號 j ,即有:,即有:i = b / w j = b % w然后將坐標(biāo)為(然后將坐標(biāo)為(i , j)的該二進(jìn)制位置為)的該二進(jìn)制位置為“0”,表示空閑。,表示空閑。3.4 空閑塊的成組鏈接空閑塊的成組鏈接這是這是UNIX率先使用的一種方法。它把文件系統(tǒng)中的率先使用的一種方法。它把文件系統(tǒng)中的所有空閑盤塊按固定數(shù)量分組,例如:每所有空閑盤塊按固定數(shù)量分組,例如:每50個空閑盤塊個空閑盤塊為一組。第一組的盤塊數(shù)和為一組。第一組的盤塊數(shù)和50個盤塊號放在第二組的最個盤塊號放在第二組的最末一塊中,第二組的

41、盤塊數(shù)和末一塊中,第二組的盤塊數(shù)和50個盤塊號又放在第三組個盤塊號又放在第三組的最末一塊中,以此類推,由各組的最后一個盤塊可鏈接的最末一塊中,以此類推,由各組的最后一個盤塊可鏈接成一條鏈。最后一組的盤塊數(shù)(可能不足成一條鏈。最后一組的盤塊數(shù)(可能不足50)和盤塊號)和盤塊號放在內(nèi)存的一個盤塊棧中。如圖放在內(nèi)存的一個盤塊棧中。如圖9-8所示。所示。當(dāng)系統(tǒng)要為文件分配所需的盤塊時,須調(diào)用當(dāng)系統(tǒng)要為文件分配所需的盤塊時,須調(diào)用“文件分文件分配配”系統(tǒng)調(diào)用來完成。該系統(tǒng)調(diào)用首先檢查盤塊棧是否上系統(tǒng)調(diào)用來完成。該系統(tǒng)調(diào)用首先檢查盤塊棧是否上鎖(盤塊棧是臨界資源),如未上鎖,則對盤塊棧執(zhí)行鎖(盤塊棧是臨界

42、資源),如未上鎖,則對盤塊棧執(zhí)行pop操作,獲取一個空閑盤塊的塊號并分配之;如果該盤操作,獲取一個空閑盤塊的塊號并分配之;如果該盤塊號已是棧底,這是當(dāng)前棧中最后一個可分配的盤塊號,塊號已是棧底,這是當(dāng)前棧中最后一個可分配的盤塊號,由于該盤塊中記有下一組可用的盤塊數(shù)和盤塊號,因此須由于該盤塊中記有下一組可用的盤塊數(shù)和盤塊號,因此須將該盤塊的內(nèi)容讀入塊號棧中,作為新的塊號棧的內(nèi)容,將該盤塊的內(nèi)容讀入塊號棧中,作為新的塊號棧的內(nèi)容,并把原棧底對應(yīng)的盤塊分配之。并把原棧底對應(yīng)的盤塊分配之。在系統(tǒng)回收空閑盤塊時,須調(diào)用在系統(tǒng)回收空閑盤塊時,須調(diào)用“文件回收文件回收”系統(tǒng)調(diào)系統(tǒng)調(diào)用進(jìn)行回收。它是將回收塊的

43、塊號用進(jìn)行回收。它是將回收塊的塊號push入塊號棧。當(dāng)棧入塊號棧。當(dāng)棧已滿時,先將現(xiàn)有棧中的已滿時,先將現(xiàn)有棧中的50個盤塊號記入回收塊中,再個盤塊號記入回收塊中,再將該回收塊的塊號將該回收塊的塊號push入棧中,作為新棧底。入棧中,作為新棧底。 盤塊棧盤塊棧size變量變量棧頂棧頂棧底棧底注:注:size變量記錄變量記錄盤塊棧的當(dāng)前長度盤塊棧的當(dāng)前長度 圖圖9-8 空閑盤塊的成組鏈接法空閑盤塊的成組鏈接法 4 符號鏈接符號鏈接軟鏈接軟鏈接實現(xiàn)文件共享是文件系統(tǒng)的重要功能。文件共享是指實現(xiàn)文件共享是文件系統(tǒng)的重要功能。文件共享是指允許多個的用戶使用同一個文件,這樣,在系統(tǒng)中只需保允許多個的用戶

44、使用同一個文件,這樣,在系統(tǒng)中只需保留該文件共享的一個副本,這既可以節(jié)省大量的存儲空間,留該文件共享的一個副本,這既可以節(jié)省大量的存儲空間,又可減少輸入輸出操作從而提高文件訪問速度,也為用戶又可減少輸入輸出操作從而提高文件訪問速度,也為用戶之間的合作提供了便利條件。之間的合作提供了便利條件。文件共享的方法較多,如繞彎路法、連訪法、基本文文件共享的方法較多,如繞彎路法、連訪法、基本文件法等。這里介紹當(dāng)今流行的件法等。這里介紹當(dāng)今流行的鏈接法鏈接法,這是由,這是由UNIX率先率先提出的,并稱之為提出的,并稱之為“符號鏈接符號鏈接”,后又引入了,后又引入了“軟鏈接軟鏈接”。 4.1 符號鏈接硬鏈接符

45、號鏈接硬鏈接符號(符號(i節(jié)點號)鏈接允許一個文件可以從多個路徑節(jié)點號)鏈接允許一個文件可以從多個路徑進(jìn)行訪問,即一個文件可有多個路徑名,從多個路徑都可進(jìn)行訪問,即一個文件可有多個路徑名,從多個路徑都可以找到該文件的物理地址,也就是說,該文件的映射情況以找到該文件的物理地址,也就是說,該文件的映射情況被保存在多個目錄(文件夾)里。具體來說,就是當(dāng)用戶被保存在多個目錄(文件夾)里。具體來說,就是當(dāng)用戶將一個文件鏈接到一個目錄中時,該目錄里面會增加一個將一個文件鏈接到一個目錄中時,該目錄里面會增加一個目錄項,用來保存該文件到文件物理地址的映射。而為了目錄項,用來保存該文件到文件物理地址的映射。而為

46、了保持系統(tǒng)的一致性,此時在該文件的保持系統(tǒng)的一致性,此時在該文件的i節(jié)點里面記錄被鏈節(jié)點里面記錄被鏈接的次數(shù)。圖接的次數(shù)。圖9-9描述的是從目錄描述的是從目錄/home/wang鏈接文鏈接文件件test后的情況。后的情況。圖中,用戶圖中,用戶Feng創(chuàng)建了文件創(chuàng)建了文件test,他是該文件的文,他是該文件的文件主,在件主,在Feng的用戶目錄中有的用戶目錄中有test的一個目錄項,該目的一個目錄項,該目錄項中的錄項中的“i節(jié)點號節(jié)點號”指向了指向了test的的i 節(jié)點。用戶節(jié)點。用戶Wang是是文文件件test的授權(quán)共享用戶。當(dāng)?shù)氖跈?quán)共享用戶。當(dāng)Wang為要訪問為要訪問test而而“打開打開”

47、 test文件時,系統(tǒng)為文件時,系統(tǒng)為test文件建立了一個符號鏈接,即在文件建立了一個符號鏈接,即在Wang的用戶目錄中也建立了的用戶目錄中也建立了test的一個目錄項,該目錄的一個目錄項,該目錄項中的項中的“i節(jié)點號節(jié)點號”同樣指向了同樣指向了test的的 i 節(jié)點;同時,在節(jié)點;同時,在test的的 i 節(jié)點中對節(jié)點中對鏈接(共享)計數(shù)器鏈接(共享)計數(shù)器count 值進(jìn)行加值進(jìn)行加1。于是,路徑名于是,路徑名”/home/Feng/test”和和”/home/Wang/test”對應(yīng)的是同一個對應(yīng)的是同一個i 節(jié)點號,指向的是同一個節(jié)點號,指向的是同一個i 節(jié)點,因而節(jié)點,因而使用這兩

48、個不同的路徑名訪問的是同一個文件使用這兩個不同的路徑名訪問的是同一個文件test。有了鏈接,需要對文件刪除操作進(jìn)行修改。當(dāng)刪除一有了鏈接,需要對文件刪除操作進(jìn)行修改。當(dāng)刪除一個文件時,首先對鏈接計數(shù)器個文件時,首先對鏈接計數(shù)器count進(jìn)行減進(jìn)行減1,然后根據(jù),然后根據(jù)count的值決定是執(zhí)行的值決定是執(zhí)行“假刪除假刪除”還是還是“真刪除真刪除”。如果。如果count0,并不刪除該文件的,并不刪除該文件的i節(jié)點和文件體節(jié)點和文件體假刪除假刪除目錄目錄: /home/Feng test目錄目錄: /home/Wang testcount=2addresstest 的的i 節(jié)點節(jié)點test 圖圖9

49、-9 基于名號目錄項的符號鏈接基于名號目錄項的符號鏈接符號鏈接符號鏈接,其他鏈接仍然有效。只有當(dāng),其他鏈接仍然有效。只有當(dāng)count=0,該文件的,該文件的i節(jié)點和節(jié)點和文件體才會被實際刪除文件體才會被實際刪除真刪除。真刪除。可見,這種文件共享方法的好處是,只需在文件系統(tǒng)可見,這種文件共享方法的好處是,只需在文件系統(tǒng)中保存共享文件的一個中保存共享文件的一個i 節(jié)點和一個文件體,既能節(jié)省磁盤節(jié)點和一個文件體,既能節(jié)省磁盤空間,又可保持文件數(shù)據(jù)的一致性。空間,又可保持文件數(shù)據(jù)的一致性。 符號鏈接也稱符號鏈接也稱硬鏈接硬鏈接(真鏈接可靠鏈接),這是因(真鏈接可靠鏈接),這是因為在若干鏈接中刪除一個鏈

50、接,其他的鏈接不會受到影響。為在若干鏈接中刪除一個鏈接,其他的鏈接不會受到影響。但硬鏈接存在一個問題。如圖但硬鏈接存在一個問題。如圖9-10所示。文件主所示。文件主Feng先于先于Wang刪除了刪除了test文件,這同樣也是文件,這同樣也是“假刪除假刪除” ,用,用戶戶Wang還可以繼續(xù)使用還可以繼續(xù)使用test文件。文件。但請注意:但請注意:test的文件主依然是的文件主依然是Feng,如果系統(tǒng)進(jìn)行,如果系統(tǒng)進(jìn)行成本記賬或配額,成本記賬或配額,F(xiàn)eng將繼續(xù)為將繼續(xù)為test付賬,直到付賬,直到Wang不不再需要而將再需要而將test刪除刪除Feng豈不成了冤大頭了嗎?這豈不成了冤大頭了嗎?

51、這顯然會令文件主不爽。而且,文件主沒有權(quán)利斷開其他顯然會令文件主不爽。而且,文件主沒有權(quán)利斷開其他用戶的鏈接。用戶的鏈接。 /home/Feng/home/Feng/home/Wang/home/Wangowner=Fengcount=1owner=Fengcount=2owner=Fengcount=1鏈接前鏈接前建立鏈接后建立鏈接后文件主刪除文件后文件主刪除文件后圖圖9-10 建立硬鏈接時的前后情況建立硬鏈接時的前后情況4.2 軟鏈接軟鏈接所謂軟鏈接,就是不可靠鏈接。當(dāng)文件主將文件刪除所謂軟鏈接,就是不可靠鏈接。當(dāng)文件主將文件刪除后,鏈接用戶將無法再訪問該文件。后,鏈接用戶將無法再訪問該文

52、件。與硬鏈接不同的是,軟鏈接是一種類型為與硬鏈接不同的是,軟鏈接是一種類型為link的特殊的特殊文件。例如,用戶文件。例如,用戶Feng創(chuàng)建了文件創(chuàng)建了文件test。授權(quán)用戶。授權(quán)用戶Wang需要共享需要共享test,并請求在自己的目錄下建立,并請求在自己的目錄下建立test的的軟鏈接軟鏈接testlink。系統(tǒng)將為。系統(tǒng)將為testlink創(chuàng)建一個類型為創(chuàng)建一個類型為link的文件,它有自己的的文件,它有自己的i 節(jié)點和文件體,但其文件體中的數(shù)節(jié)點和文件體,但其文件體中的數(shù)據(jù)只是被鏈接文件據(jù)只是被鏈接文件test的的i 節(jié)點的原始路徑名而已。當(dāng)節(jié)點的原始路徑名而已。當(dāng)Wang要訪問要訪問te

53、st文件時,系統(tǒng)先找到文件時,系統(tǒng)先找到testlink的的i 節(jié)點,節(jié)點,進(jìn)而讀出進(jìn)而讀出testlink的文件體,從中獲取的文件體,從中獲取test文件的原始路文件的原始路徑名;然后根據(jù)該路徑名進(jìn)行檢索,找到徑名;然后根據(jù)該路徑名進(jìn)行檢索,找到test的的i 節(jié)點和節(jié)點和文件體。從而實現(xiàn)了用戶文件體。從而實現(xiàn)了用戶Wang對對test文件的共享。文件的共享。利用軟鏈接實現(xiàn)文件共享時,因為只有文件主擁有目利用軟鏈接實現(xiàn)文件共享時,因為只有文件主擁有目的文件(被共享文件)的的文件(被共享文件)的i 節(jié)點號,而授權(quán)用戶只有目的節(jié)點號,而授權(quán)用戶只有目的文件的路徑名而無其文件的路徑名而無其i 節(jié)點

54、號。當(dāng)文件主刪除目的文件時節(jié)點號。當(dāng)文件主刪除目的文件時是是“真刪除真刪除”,此后其他用戶試圖通過軟鏈接訪問目的文,此后其他用戶試圖通過軟鏈接訪問目的文件時將遭致失敗,因為該目的文件的件時將遭致失敗,因為該目的文件的i 節(jié)點和文件體都已節(jié)點和文件體都已不存在了。不存在了。哈哈,文件主不會成為冤大頭了!哈哈,文件主不會成為冤大頭了!軟鏈接的不足是需要額外的時間開銷,訪問軟鏈接的軟鏈接的不足是需要額外的時間開銷,訪問軟鏈接的共享文件比訪問硬鏈接的共享文件需要更多的訪盤操作。共享文件比訪問硬鏈接的共享文件需要更多的訪盤操作。另外軟鏈接需要配置額外的另外軟鏈接需要配置額外的i 節(jié)點和文件體。節(jié)點和文件

55、體。軟鏈接從嚴(yán)格意義上不是鏈接,因為它并沒有直接連軟鏈接從嚴(yán)格意義上不是鏈接,因為它并沒有直接連到文件上,而只是保存了文件的原始訪問路徑而已。正因到文件上,而只是保存了文件的原始訪問路徑而已。正因為如此,為如此,Windows的的“快捷快捷”方式其實不是鏈接,因為方式其實不是鏈接,因為快捷方式保存的就是路徑名,而且快捷方式保存的就是路徑名,而且快捷方式本質(zhì)上并不快快捷方式本質(zhì)上并不快。那么那么Windows為什么不用硬鏈接呢?這是因為為什么不用硬鏈接呢?這是因為Windows上經(jīng)常使用的是上經(jīng)常使用的是FAT文件系統(tǒng),而文件系統(tǒng),而FAT文件系文件系統(tǒng)采用的是統(tǒng)采用的是FCB目錄項,而非名號目

56、錄項,故沒有地方設(shè)目錄項,而非名號目錄項,故沒有地方設(shè)置文件的鏈接計數(shù)器置文件的鏈接計數(shù)器count,硬鏈接無法實現(xiàn)。,硬鏈接無法實現(xiàn)。 5 文件的保護(hù)層次文件的保護(hù)層次文件保護(hù)的實現(xiàn)機(jī)制文件保護(hù)的實現(xiàn)機(jī)制文件的訪問控制也稱文件的保護(hù),就是要確文件的訪問控制也稱文件的保護(hù),就是要確保非授權(quán)用戶不能隨意訪問某些文件,以防文件保非授權(quán)用戶不能隨意訪問某些文件,以防文件內(nèi)容被竊取或破壞。內(nèi)容被竊取或破壞。 5.1 文件保護(hù)層次文件保護(hù)層次現(xiàn)代操作系統(tǒng)一般從兩個層次(級別)上對文件進(jìn)行現(xiàn)代操作系統(tǒng)一般從兩個層次(級別)上對文件進(jìn)行保護(hù):訪問級和操作級。保護(hù):訪問級和操作級。1. 訪問級保護(hù)訪問級保護(hù)訪

57、問級保護(hù)也稱用戶級保護(hù),解決的是文件的訪問權(quán)訪問級保護(hù)也稱用戶級保護(hù),解決的是文件的訪問權(quán)限,即限,即“哪些用戶可以訪問文件哪些用戶可以訪問文件”。這有兩種方法來實現(xiàn):。這有兩種方法來實現(xiàn):(1)用戶名單法用戶名單法這種方法需要文件主為其每個文件這種方法需要文件主為其每個文件各自提供一個授權(quán)用戶名單或各自提供一個授權(quán)用戶名單或“黑名單黑名單”,該名單被存放,該名單被存放在在FCB中,當(dāng)某用戶訪問該文件時,系統(tǒng)將利用該名單進(jìn)中,當(dāng)某用戶訪問該文件時,系統(tǒng)將利用該名單進(jìn)行用戶身份的合法性檢查,若合法則允許訪問,否則拒絕行用戶身份的合法性檢查,若合法則允許訪問,否則拒絕訪問。問題是,該名單允許有多長

58、?由于名單是存放在訪問。問題是,該名單允許有多長?由于名單是存放在FCB中的,其長度必然受到限制。另外,如果名單過長,輸入中的,其長度必然受到限制。另外,如果名單過長,輸入名單也煩了點。名單也煩了點。(2)用戶分類法用戶分類法較之用戶名單法,這是一種低開銷較之用戶名單法,這是一種低開銷的方法。系統(tǒng)將將所有用戶分成若干類別,文件主只需指的方法。系統(tǒng)將將所有用戶分成若干類別,文件主只需指定其文件允許哪個些類用戶訪問即可。定其文件允許哪個些類用戶訪問即可。例如,在例如,在UNIX和和Linux 中將用戶簡單地分為三類:中將用戶簡單地分為三類:文件主文件主同組用戶同組用戶其他用戶其他用戶2. 操作級保

59、護(hù)操作級保護(hù)如果對授權(quán)用戶在對文件的具體操作上不加以限制的如果對授權(quán)用戶在對文件的具體操作上不加以限制的話,對文件仍然是不安全的。因此在訪問級保護(hù)的基礎(chǔ)上話,對文件仍然是不安全的。因此在訪問級保護(hù)的基礎(chǔ)上還必須進(jìn)行文件的操作級保護(hù)。還必須進(jìn)行文件的操作級保護(hù)。操作級保護(hù)解決的是授權(quán)用戶對文件的操作權(quán)限,即操作級保護(hù)解決的是授權(quán)用戶對文件的操作權(quán)限,即“授權(quán)用戶可對該文件執(zhí)行何種操作授權(quán)用戶可對該文件執(zhí)行何種操作”。文件操作有許多,要為不同類型的授權(quán)用戶指定不同文件操作有許多,要為不同類型的授權(quán)用戶指定不同的文件操作是不現(xiàn)實的。通常的做法是,系統(tǒng)設(shè)置了若干的文件操作是不現(xiàn)實的。通常的做法是,系統(tǒng)

60、設(shè)置了若干文件操作類型,并用它們給用戶授權(quán)。例如,文件操作類型,并用它們給用戶授權(quán)。例如,UNIX和和Linux 采用了一種低開銷的方法,它只設(shè)置了三種文件操采用了一種低開銷的方法,它只設(shè)置了三種文件操作類型:讀、寫、執(zhí)行。作類型:讀、寫、執(zhí)行。讀讀(read):對普通文件而言,允許授權(quán)用戶可打):對普通文件而言,允許授權(quán)用戶可打開并讀取文件的內(nèi)容;對目錄文件而言,允許授權(quán)用戶可開并讀取文件的內(nèi)容;對目錄文件而言,允許授權(quán)用戶可瀏覽目錄的內(nèi)容;對特殊文件而言,則指授權(quán)用戶可使用瀏覽目錄的內(nèi)容;對特殊文件而言,則指授權(quán)用戶可使用設(shè)備進(jìn)行數(shù)據(jù)的輸入。設(shè)備進(jìn)行數(shù)據(jù)的輸入。寫寫(write):對普通文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論