14 操作系统第四章 文件管理 文件逻辑结构 文件目录结构
文章目錄
- 1 初識(shí)文件管理
- 1.1文件屬性
- 1.2 文件內(nèi)部的數(shù)據(jù)應(yīng)該怎樣組織起來(lái)?
- 1.3 文件之間應(yīng)該怎樣組織起來(lái)?
- 1.4 操作系統(tǒng)應(yīng)該向上提供哪些功能?
- 1.5 文件應(yīng)如何存放在外存?
- 1.6 文件系統(tǒng)總覽
- 2 文件邏輯結(jié)構(gòu)
- 2.1 文件分類
- 2.2 順序文件
- 2.3 索引文件
- 2.4 索引順序文件
- 2.5 多級(jí)索引順序文件
- 2.6 文件邏輯結(jié)構(gòu)小結(jié)
- 3 文件目錄結(jié)構(gòu)
- 3.1 文件控制塊
- 3.2 目錄結(jié)構(gòu)——單級(jí)目錄結(jié)構(gòu)
- 3.3 目錄結(jié)構(gòu)——兩級(jí)目錄結(jié)構(gòu)
- 3.4 目錄結(jié)構(gòu)——多級(jí)目錄結(jié)構(gòu)(樹形目錄結(jié)構(gòu))
- 3.5 目錄結(jié)構(gòu)——無(wú)環(huán)圖目錄結(jié)構(gòu)
- 3.6 索引結(jié)點(diǎn)(FCB的改進(jìn))
- 3.7 文件目錄小結(jié)
1 初識(shí)文件管理
文件——就是一組有意義的信息/數(shù)據(jù)集合
文件系統(tǒng)核心問(wèn)題:
1.1文件屬性
1.2 文件內(nèi)部的數(shù)據(jù)應(yīng)該怎樣組織起來(lái)?
數(shù)據(jù)項(xiàng)是文件系統(tǒng)中最基本的數(shù)據(jù)單位
記錄是一組相關(guān)數(shù)據(jù)項(xiàng)的集合
1.3 文件之間應(yīng)該怎樣組織起來(lái)?
1.4 操作系統(tǒng)應(yīng)該向上提供哪些功能?
1.5 文件應(yīng)如何存放在外存?
1.6 文件系統(tǒng)總覽
2 文件邏輯結(jié)構(gòu)
2.1 文件分類
按文件是否有結(jié)構(gòu)分類,可以分為無(wú)結(jié)構(gòu)文件、有結(jié)構(gòu)文件兩種。
有結(jié)構(gòu)文件根據(jù)各條記錄的長(zhǎng)度(占用的存儲(chǔ)空間)是否相等,又可分為定長(zhǎng)記錄和可變長(zhǎng)記錄兩種。
2.2 順序文件
順序文件:文件中的記錄一個(gè)接一個(gè)地順序排列(邏輯上),記錄可以是定長(zhǎng)的或可變長(zhǎng)的。各個(gè)記錄在物理上可以順序存儲(chǔ)或鏈?zhǔn)酱鎯?chǔ)。
假設(shè):已經(jīng)知道了文件的起始地址(也就是第一個(gè)記錄存放的位置)
思考1:能否快速找到第i個(gè)記錄對(duì)應(yīng)的地址?(即能否實(shí)現(xiàn)隨機(jī)存取)
思考2:能否快速找到某個(gè)關(guān)鍵字對(duì)應(yīng)的記錄存放的位置?
結(jié)論:定長(zhǎng)記錄的順序文件,若物理上采用順序存儲(chǔ),則可實(shí)現(xiàn)隨機(jī)存取;
若能再保證記錄的順序結(jié)構(gòu),則可實(shí)現(xiàn)快速檢索(即根據(jù)關(guān)鍵字快速找到對(duì)應(yīng)記錄)
注:一般來(lái)說(shuō),考試題目中所說(shuō)的“順序文件”指的是物理上順序存儲(chǔ)的順序文件。之后的講解中提到的順序文件也默認(rèn)如此。
可見,順序文件的缺點(diǎn)是增加/刪除一個(gè)記錄比較困難(如果是串結(jié)構(gòu)則相對(duì)簡(jiǎn)單)
2.3 索引文件
對(duì)于可變長(zhǎng)記錄文件,要找到第i個(gè)記錄,必須先順序第查找前i-1個(gè)記錄,但是很多應(yīng)用場(chǎng)景中又必須使用可變長(zhǎng)記錄。如何解決這個(gè)問(wèn)題?
2.4 索引順序文件
思考索引文件的缺點(diǎn):每個(gè)記錄對(duì)應(yīng)一個(gè)索引表項(xiàng),因此索引表可能會(huì)很大。
比如:文件的每個(gè)記錄平均只占8B,、而每個(gè)索引表項(xiàng)占32個(gè)字節(jié),那么索引表都要比文件內(nèi)容本身大4倍,這樣對(duì)存儲(chǔ)空間的利用率就太低了。
索引順序文件是索引文件和順序文件思想的結(jié)合。索引順序文件中,同樣會(huì)為文件建立一張索引表,但不同的是:并不是每個(gè)記錄對(duì)應(yīng)一個(gè)索引表項(xiàng),而是一組記錄對(duì)應(yīng)一個(gè)索引表項(xiàng)。
若一個(gè)順序文件有10000個(gè)記錄,則根據(jù)關(guān)鍵字檢索文件,只能從頭開始順序查找(這里指的并不是定長(zhǎng)記錄、順序結(jié)構(gòu)的順序文件),平均須查找5000個(gè)記錄。
若采用索引順序文件結(jié)構(gòu),可把10000個(gè)記錄分為V10000=100組,每組100個(gè)記錄。則需要先順序查找索引表找到分組(共100個(gè)分組,因此索引表長(zhǎng)度為100,平均需要查50次),找到分維后,再在分組中順序查找記錄(每個(gè)分組100個(gè)記錄,因此平均需要查50次)。可見,采用索引順序文件結(jié)構(gòu)后,平均查找次數(shù)減少為50+50=100次。
同理,若文件共有106個(gè)記錄,則可分為1000個(gè)分組,每個(gè)分組1000個(gè)記錄。根據(jù)關(guān)鍵字檢索一個(gè)記錄平均需要查找500+500=1000次。這個(gè)查找次數(shù)依然很多,如何解決呢?
2.5 多級(jí)索引順序文件
為了進(jìn)一步提高檢索效率,可以為順序文件建立多級(jí)索引表。
例如,對(duì)于一個(gè)含106個(gè)記錄的文件,可先為該文件建立一張低級(jí)索引表,每100個(gè)記錄為一組,故低級(jí)索引表中共有10000個(gè)表項(xiàng)(即10000個(gè)定長(zhǎng)記錄),再把這10000個(gè)定長(zhǎng)記錄分組,每組100個(gè),為其建立頂級(jí)索引表,故頂級(jí)索引表中共有100個(gè)表項(xiàng)。
2.6 文件邏輯結(jié)構(gòu)小結(jié)
3 文件目錄結(jié)構(gòu)
文件目錄結(jié)構(gòu)即我們很熟悉的Windows操作系統(tǒng)的“文件夾”
3.1 文件控制塊
需要對(duì)目錄進(jìn)行哪些操作?
3.2 目錄結(jié)構(gòu)——單級(jí)目錄結(jié)構(gòu)
早期操作系統(tǒng)并不支持多級(jí)目錄,整個(gè)系統(tǒng)中只建立一張目錄表,每個(gè)文件占一個(gè)目錄項(xiàng)。
單級(jí)目錄實(shí)現(xiàn)了“按名存取”,但是不允許文件重名。在創(chuàng)建一個(gè)文件時(shí),需要先檢查目錄表中有沒(méi)有重名文件,確定不重名后才能允許建立文件,并將新文件對(duì)應(yīng)的目錄項(xiàng)插入目錄表中。
顯然,單級(jí)目錄結(jié)構(gòu)不適用于多用戶操作系統(tǒng)。
3.3 目錄結(jié)構(gòu)——兩級(jí)目錄結(jié)構(gòu)
早期的多用戶操作系統(tǒng),采用兩級(jí)目錄結(jié)構(gòu)。分為主文件目錄(MFD,Master File Directory)和用戶文件目錄(UFD,User Flie Directory)。
3.4 目錄結(jié)構(gòu)——多級(jí)目錄結(jié)構(gòu)(樹形目錄結(jié)構(gòu))
用戶(或用戶進(jìn)程)要訪問(wèn)某個(gè)文件時(shí)要用文件路徑名標(biāo)識(shí)文件,文件路徑名是個(gè)字符串。各級(jí)目錄之間用“/”隔開。從根目錄出發(fā)的路徑稱為絕對(duì)路徑。
引入“當(dāng)前目錄”和“相對(duì)路徑”后,磁盤I/O的次數(shù)減少了。這就提升了訪問(wèn)文件的效率。
樹形目錄結(jié)構(gòu)可以很方便地對(duì)文件進(jìn)行分類,層次結(jié)構(gòu)清晰,也能夠更有效地進(jìn)行文件的管理和保護(hù)。但是,樹形結(jié)構(gòu)不便于實(shí)現(xiàn)文件的共享。為此,提出了“無(wú)環(huán)圖目錄結(jié)構(gòu)”。
3.5 目錄結(jié)構(gòu)——無(wú)環(huán)圖目錄結(jié)構(gòu)
注意:共享文件不同于復(fù)制文件。在共享文件中,由于各用戶指向的是同一個(gè)文件,因此只要其中一個(gè)用戶修改了文件數(shù)據(jù),那么所有用戶都可以看到文件數(shù)據(jù)的變化。
3.6 索引結(jié)點(diǎn)(FCB的改進(jìn))
其實(shí)在查找各級(jí)目錄的過(guò)程中只需要用到“文件名”這個(gè)信息,只有文件名匹配時(shí),才需要讀出文件的其他信息。因此可以考慮讓目錄表“瘦身”來(lái)提升效率。
思考有何好處?
假設(shè)一個(gè)FCB是64B,磁盤塊的大小為1KB,則每個(gè)盤塊中只能存放16個(gè)FCB。若一個(gè)文件目錄中共有640個(gè)目錄項(xiàng),則共需要占用640/16=40個(gè)盤塊。因此按照某文件名檢索該目錄,平均需要查詢320個(gè)目錄項(xiàng),平均需要啟動(dòng)磁盤20次(每次磁盤I/O讀入一塊)。
若使用索引結(jié)點(diǎn)機(jī)制,文件名占14B,索引結(jié)點(diǎn)指針站2B,則每個(gè)盤塊可存放64個(gè)目錄項(xiàng),那么按文件名檢索目錄平均只需要讀入320/64=5個(gè)磁盤塊。顯然,這將大大提升文件檢索速度。
3.7 文件目錄小結(jié)
每一級(jí)目錄結(jié)構(gòu)都是解決了上級(jí)目錄結(jié)構(gòu)留下的問(wèn)題
總結(jié)
以上是生活随笔為你收集整理的14 操作系统第四章 文件管理 文件逻辑结构 文件目录结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 国科大prml-往年习题
- 下一篇: 基于机器视觉的散热器钎焊缺陷检测系统研发