一、文件控制塊(FCB)
目的:為了能對一個(gè)文件進(jìn)行正確的存取酿秸。
內(nèi)容:
1灭翔、基本信息類:包括文件名,文件物理位置辣苏,文件邏輯結(jié)構(gòu)肝箱,文件的物理結(jié)構(gòu)哄褒。
2、存取控制信息類:包括文件主的存取權(quán)限煌张,核準(zhǔn)用戶的存取權(quán)限和一般用戶的存取權(quán)限呐赡。
3、使用信息類:建立日期和時(shí)間骏融、文件上次修改的日期和時(shí)間
4链嘀、當(dāng)前使用信息:打開該文件的進(jìn)程數(shù)、是否被進(jìn)程鎖住绎谦、是否已修改等管闷。
二粥脚、索引節(jié)點(diǎn)
文件名窃肠、文件具體信息分開,使文件描述信息單獨(dú)形成一個(gè)索引結(jié)點(diǎn)刷允。
磁盤索引結(jié)點(diǎn):存放在磁盤上的索引結(jié)點(diǎn)冤留。主要包括以下內(nèi)容:文件主標(biāo)識符、文件類型树灶、文件存取權(quán)限纤怒、文件物理地址、文件長度天通、文件連接計(jì)數(shù)泊窘、文件存取時(shí)間。
內(nèi)存索引結(jié)點(diǎn):文件被打開后像寒,將磁盤索引結(jié)點(diǎn)拷貝到內(nèi)存索引結(jié)點(diǎn)中以便使用烘豹。比磁盤索引結(jié)點(diǎn)增加了以下內(nèi)容:索引結(jié)點(diǎn)編號、狀態(tài)诺祸、訪問計(jì)數(shù)携悯、文件所屬文件系統(tǒng)的邏輯設(shè)備號、鏈接指針筷笨。
三憔鬼、目錄結(jié)構(gòu)
(1)單級目錄結(jié)構(gòu)
整個(gè)文件系統(tǒng)中只建立一張目錄表,每個(gè)文件一個(gè)目錄項(xiàng)胃夏,含有文件相關(guān)信息轴或。
優(yōu)點(diǎn):簡單,能實(shí)現(xiàn)基本功能
缺點(diǎn):不允許重名仰禀,不便于共享侮叮,
(2)兩級目錄結(jié)構(gòu)
為每一個(gè)用戶建立一個(gè)單獨(dú)的用戶文件目錄UFD,UFD由用戶所有文件的文件控制塊組成悼瘾。
系統(tǒng)建立一個(gè)主文件目錄MFD囊榜, MFD中每個(gè)用戶目錄文件都占有一個(gè)目錄項(xiàng)审胸,其中包括用戶名和指向UFD的指針。
優(yōu)點(diǎn):提高了速度卸勺,不同目錄可重名砂沛,可共享
缺點(diǎn):不提供子目錄操作,還不方便曙求;各用戶之間被完全隔離的話用戶訪問其他用戶文件時(shí)碍庵,不方便合作。
(3)多級目錄結(jié)構(gòu)
這一路徑上的目錄和數(shù)據(jù)文件名用“/”連接成路徑名悟狱,稱為相對路徑名静浴。從根開始的路徑名稱為絕對路徑名
優(yōu)點(diǎn):便于系統(tǒng)和用戶將文件分散管理;提供更靈活的權(quán)限管理等
四挤渐、文件共享與保護(hù)
1苹享、共享
基本FCB法:直接在文件目錄中包含文件的物理地址
文件名+索引結(jié)點(diǎn)指針:一個(gè)用戶修改指針指向地址里的內(nèi)容,指針不變浴麻,其他用戶通過指針總能感知索引結(jié)點(diǎn)中的最新內(nèi)容
符號鏈法:創(chuàng)建一個(gè)link類型的文件:“文件名+共享文件路徑”得问。文件主人刪除文件,共享者只會(huì)出現(xiàn)找不到文件錯(cuò)誤软免。
五宫纬、文件操作
創(chuàng)建、刪除膏萧;讀漓骚、寫;設(shè)置讀寫位置榛泛;打開蝌蹂、關(guān)閉;修改屬性操作挟鸠。
六叉信、文件的邏輯結(jié)構(gòu)
1、文件邏輯結(jié)構(gòu)的類型
有結(jié)構(gòu)文件(記錄式):定長記錄(通常為順序文件)艘希;變長記錄(通常為索引文件硼身、索引順序文件)。
無結(jié)構(gòu)文件(字符流式):字節(jié)為單位覆享,利用讀寫指針依次訪問佳遂。系統(tǒng)對該類文件不需格式處理。
(1)順序文件
兩種記錄排列方式:串結(jié)構(gòu)(按記錄形成的時(shí)間順序串行排序)撒顿;順序結(jié)構(gòu)(按關(guān)鍵字排序)
檢索方法:從頭檢索丑罪;順序結(jié)構(gòu),可用折半查找、插值查找吩屹、跳步查找等算法提高效率跪另。
優(yōu)缺點(diǎn):
不方便隨機(jī)存取某條記錄,但適用批量存取的場合煤搜。
適合磁帶等特殊介質(zhì)免绿。
單記錄的查找、修改等交互性差擦盾;增減不方便
(2)索引文件
為文件建立一個(gè)索引表嘲驾,記錄每項(xiàng)記錄在文件的邏輯地址及記錄長度;該索引表按關(guān)鍵字排序迹卢。索引表內(nèi)容:索引號辽故、長度、記錄地址指針
優(yōu)缺點(diǎn)
適用于變長記錄腐碱,可提高檢索速度誊垢,實(shí)現(xiàn)直接存取。
索引表增加了存儲開銷喻杈。
(3)索引順序文件
將順序文件的所有記錄分組彤枢;還是建立索引表狰晚,但每個(gè)表項(xiàng)記錄的是每組第1條記錄的鍵值和地址筒饰;組內(nèi)記錄仍按順序方式檢索和使用。
七壁晒、外存分配方式
1瓷们、連續(xù)分配
為每一個(gè)文件分配一組相鄰的盤塊。邏輯文件中的記錄順序與存儲器中文件占用盤塊的順序一致秒咐。
優(yōu)點(diǎn):順序訪問容易谬晕,讀寫速度快
缺點(diǎn):會(huì)產(chǎn)生外存碎片;利于文件的動(dòng)態(tài)增加和修改
2携取、鏈接分配
設(shè)置鏈接指針攒钳,將同屬于一個(gè)文件的多個(gè)離散盤塊鏈接成一個(gè)鏈表。這樣形成的文件稱為鏈接文件雷滋。會(huì)有鏈接成本不撑。
優(yōu)點(diǎn):離散分配,消除外部碎片晤斩,提高利用率焕檬;同時(shí)適用于文件的動(dòng)態(tài)增長;修改容易
(1)隱式鏈接
鏈接信息隱含記錄在盤塊數(shù)據(jù)中澳泵;每個(gè)盤塊拿出若干字節(jié)实愚,記錄指向下一盤塊號的指針。
問題:只能順著盤塊讀取,可靠性低
(2)顯式鏈接
記錄盤塊鏈接的指針顯示地記錄為一張鏈接表腊敲。所有已分配的盤塊號都記錄在其中,稱文件分配表碰辅。鏈條的首地址作為文件地址記錄在相應(yīng)文件的FCB的“物理地址”字段中。
為了提高文件系統(tǒng)訪問速度乎赴,F(xiàn)AT一般常駐內(nèi)存
計(jì)算:
表項(xiàng)個(gè)數(shù) = 盤塊個(gè)數(shù)= 容量 / 盤塊大小
表項(xiàng)大小=決定于盤塊數(shù)量編號需要的位數(shù)
FAT表大小 = 表項(xiàng)個(gè)數(shù) * 表項(xiàng)大小
磁盤組織:以簇為單位分配回收、但不規(guī)定盤塊大虚藕稹饿序;
文件組織:以卷為單位,將卷的所有文件信息羹蚣、目錄信息原探、可用未分配空間記錄在主控文件表MFT中。
3顽素、索引分配
系統(tǒng)運(yùn)行時(shí)只涉及部分文件咽弦,F(xiàn)AT表無需全部調(diào)入內(nèi)存。每個(gè)文件單獨(dú)建索引表(物理盤塊索引)胁出,記錄所有分配給它的盤塊號型型;建立文件時(shí),便分配一定的外存空間用于存放文件盤塊索引表信息全蝶;
(1)單級索引分配:適合大文件
(2)多級索引:若文件較大闹蒜,存放索引表也需要多個(gè)盤塊(索引盤塊)。若索引盤塊較多抑淫,需對索引盤塊也采用索引方式管理绷落,形成多級索引。
(3)混合組織索引
一個(gè)索引結(jié)點(diǎn)定義為13個(gè)地址項(xiàng):
iaddr(0)~iaddr(12)始苇,總的來說分為兩種:直接地址砌烁、間接地址
iaddr(0)~iaddr(9)存放直接地址,即存文件數(shù)據(jù)的盤塊號催式;
iaddr(10)存放單級索引的索引盤塊號函喉;
剩余的用于文件較大時(shí)存放多級索引數(shù)據(jù)。
iaddr(11)存放二級索引的主索引盤塊號
iaddr(12)存放三級索引的主索引盤塊號
八蓄氧、存儲空間的管理
記住空閑存儲空間使用情況函似;為空間設(shè)置相應(yīng)的數(shù)據(jù)結(jié)構(gòu);提供對存儲空間分配喉童、回收的操作手段撇寞。
1顿天、空閑表法
(1)數(shù)據(jù)結(jié)構(gòu):系統(tǒng)為外存上的所有空閑區(qū)建立一張空閑表,表項(xiàng)包括序號蔑担、空閑區(qū)的第一個(gè)盤塊號牌废、空閑盤塊數(shù)等蜜托。將所有空閑區(qū)按其起始盤塊號遞增的次序排列倔监。
(2)空間的分配和回收:與內(nèi)存的動(dòng)態(tài)分配類似,同樣可采用首次適應(yīng)算法铜异、循環(huán)首次適應(yīng)算法等没陡。回收主要解決對數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)修改届搁。
2卡睦、空閑鏈表法
(1)數(shù)據(jù)結(jié)構(gòu):鏈(空閑盤塊鏈、空閑盤區(qū)鏈)
(2)空間的分配和回收:
空閑盤塊鏈:請求分配空間時(shí)恕齐,系統(tǒng)從鏈?zhǔn)滓来握逻m當(dāng)數(shù)目的空閑盤塊分配給用戶檐迟。釋放存儲空間時(shí)码耐,系統(tǒng)將回收的盤塊依次插入空閑盤塊鏈的末尾溶其。
空閑盤區(qū)鏈:分配通常采用首次適應(yīng)算法瓶逃。回收盤區(qū)時(shí)契沫,將回收區(qū)與相鄰的空閑盤區(qū)相合并昔汉。為提高檢索速度,可以采用顯式方法口予,為空閑盤區(qū)建立一張鏈表放在內(nèi)存中沪停。
優(yōu)缺點(diǎn):
空閑盤塊鏈:分配回收簡單裳涛。鏈表長端三,大量分配時(shí)需要操作的指針多
空閑盤區(qū)鏈:鏈表長度不定技肩,分配時(shí)操作的指針數(shù)量相對較少,但分配回收操作相對復(fù)雜旋奢。
3至朗、位示圖法
利用二進(jìn)制的一位來表示一個(gè)盤塊的使用情況锹引。值為0表示對應(yīng)的盤塊空閑唆香,為1表示已分配躬它。有的系統(tǒng)則相反。磁盤上的所有盤塊都有一個(gè)二進(jìn)制位與之對應(yīng)倘待,這樣由所有盤塊所對應(yīng)的位構(gòu)成一個(gè)集合凸舵,稱為位示圖啊奄。
(1)數(shù)據(jù)結(jié)構(gòu):二維數(shù)組
(2)空間的分配和回收:
分配:1、順序掃描位示圖整以。找到為0的二進(jìn)制位峻仇。2摄咆、將所找到的一個(gè)或一組二進(jìn)制位,轉(zhuǎn)換成與之對應(yīng)的盤塊號朝蜘。進(jìn)行分配操作涩金。盤塊號計(jì)算公式為:盤塊號 = 列總數(shù)(i-1)+ j;(注意下標(biāo)i步做,j從1開始)*。3煮剧、修改位示圖勉盅。
回收:
1草娜、將回收盤塊的盤塊號轉(zhuǎn)換成位示圖中的行號和列號驱还。轉(zhuǎn)換公式為:i=(盤塊號-1)div列數(shù)+1;j=(盤塊號-1)mod列數(shù)+1(Div 求商闷沥,mod 取余舆逃,公式中的i、j都是從1開始的虫啥。如12號盤塊轉(zhuǎn)換后為1涂籽,12)
2、修改位示圖树枫。
4砂轻、成組鏈接法
所有盤塊按規(guī)定大小劃分為組搔涝;組間建立鏈接体谒;組內(nèi)的盤塊借助一個(gè)系統(tǒng)検阊鳎可快速處理故响,且支持離散分配回收颁独。組內(nèi)的盤塊借助一個(gè)系統(tǒng)棧可快速處理樟蠕,且分配回收比較簡單寨辩。支持離散分配回收歼冰。
(1)數(shù)據(jù)結(jié)構(gòu):空閑盤塊號棧(用來存放當(dāng)前可用的一組空閑盤塊的盤塊號)隔嫡;鏈接
(每一組的第一個(gè)盤塊記錄下一組的盤塊號,形成了一條鏈温兼∧寂校總將鏈的第一組盤塊總數(shù)和所有的盤塊號兰伤,記入棧,作為當(dāng)前可供分配的空閑盤塊號恨溜。)
(2)空閑盤塊的分配與回收
分配:須調(diào)用分配過程來完成
1判族、檢查空閑盤塊號棧是否上鎖,如沒有项戴,便從棧頂取出一空閑盤塊號形帮,將與之對應(yīng)的盤塊分配給用戶,然后將棧頂指針下移一格周叮。
2辩撑、若該盤塊號已是棧底,即S.free(0)仿耽,到達(dá)當(dāng)前棧中最后一個(gè)可供分配的盤塊號合冀。
3、讀取該盤塊號所對應(yīng)的盤塊中的信息:即下一組可用的盤塊號入棧项贺。
4君躺、原棧底盤塊分配出去。修改棧中的空閑盤塊數(shù)。
回收:
1、回收盤塊號記入棧頂砌滞,空閑數(shù)N加1
2铝宵、N達(dá)到100時(shí)侣夷,若再回收一塊,則將該100條信息填寫入新回收塊。