磁盤具有可直接訪問的特性纷妆,故當利用磁盤存放文件時,具有很大的靈活性墅冷。
目前纯路,常用的外存分配方法有連續(xù)分配、鏈接分配和索引分配三種寞忿。采用不同的分配方式時驰唬,將形成不同的文件物理結(jié)構(gòu)。
連續(xù)分配方式對應(yīng)順序式文件結(jié)構(gòu),鏈接分配方式形成鏈接式文件結(jié)構(gòu)叫编,索引分配方式將形成索引式文件結(jié)構(gòu)辖佣。有的系統(tǒng)(如DOS操作系統(tǒng))對三種方法都支持,但是更普遍的是一個系統(tǒng)只提供一種方法的支持搓逾。
1 連續(xù)分配
連續(xù)分配方法要求每個文件在磁盤上占有一組連續(xù)的塊卷谈,如圖所示。這樣所形成的文件結(jié)構(gòu)稱為順序文件結(jié)構(gòu)霞篡,此時的物理文件稱為順序文件世蔗。這種分配方式保證了邏輯文件中的的記錄順序與存儲器中的文件占用盤塊的順序是一致的。
優(yōu)點
優(yōu)點是實現(xiàn)簡單朗兵、存取速度快凸郑,支持順序訪問和直接訪問,作業(yè)訪問磁盤時需要的尋道數(shù)和尋道時間最短矛市。
缺點
缺點在于芙沥,文件長度不宜動態(tài)增加,因為一個文件末尾后的盤塊可能已經(jīng)分配給其他文件浊吏,一旦需要增加而昨, 就需要大量移動盤塊。在外存上使用緊湊技術(shù)所花費的時間遠比內(nèi)存緊湊一次所花費的時間多得多找田。
此外歌憨,反復(fù)增刪文件后會產(chǎn)生外部碎片(與內(nèi)存管理分配方式中的碎 片相似),并且很難確定一個文件需要的空間大小墩衙,因而只適用于長度固定的文件务嫡。
2 鏈接分配
鏈接分配是釆取離散分配的方式,消除了外部碎片漆改,故而顯著地提高了磁盤空間的利用率心铃;又因為是根據(jù)文件的當前需求,為它分配必需的盤塊挫剑,當文件動態(tài)增長時去扣,可以動態(tài)地再為它分配盤塊,故而無需事先知道文件的大小樊破。此外愉棱,對文件的增、刪哲戚、改也非常方便奔滑。
鏈接分配又可以分為隱式鏈接和顯式鏈接兩種形式。
2.1 隱式鏈接
文件顺少,目錄中每個目錄項都包括指向鏈接文件第一盤塊和最后一個盤塊的指針朋其。磁盤塊分布在磁盤的任何地方王浴,除最后一個盤塊外,每一個盤塊都有指向下一個盤塊的指針令宿,這些指針對用戶是透明的。
缺點
隱式鏈接只適用于順序訪問腕窥,對隨機訪問時極其低效的粒没。
隱式鏈接可靠性差,只要其中任一指針出錯簇爆,都將導(dǎo)致整個鏈斷開癞松。
為了提高檢索速度和減小指針所占存儲空間,可以將幾個盤塊組成一個簇(cluster)入蛆,雖然成倍減少了訪問時間响蓉,以及指針存儲空間,但卻增大了內(nèi)部碎片哨毁,改進很有限枫甲。
2.2 顯式鏈接
顯示鏈接把用于鏈接文件各物理塊的指針,顯示地存放在內(nèi)存的一張鏈接表中扼褪。該表在整個磁盤僅設(shè)置一張想幻。
表的序號從0開始,直至N-1话浇,N為盤塊總數(shù)脏毯,在每個表項中存放鏈接指針,即下一個盤塊號幔崖。
在該表中食店,凡是屬于某一文件的第一個盤塊號(鏈首指針所對應(yīng)的盤塊號)均作為文件地址被填入相應(yīng)的文件的FCB的物理地址字段中。
由于查找記錄的過程是在內(nèi)存中進行的赏寇,因而提高了檢索速度吉嫩,減少了訪問磁盤的次數(shù)。由于分配給文件的所有盤塊號都在該表中嗅定,故把該表稱為文件分配表FAT(File Allocation Table)率挣。
缺點
不能支持高效的直接存儲(要對一個較大的文件進行直接存取,須首先在FAT中順序地查找很多盤塊號)露戒;
FAT需要占用較大的內(nèi)存空間(由于一個文件所占用的盤塊的盤塊號是隨機地分布在FAT中的椒功,因而只有將整個FAT調(diào)入內(nèi)存,才能保證FAT中找到一個文件的所有盤塊號,當磁盤容量較大時樱衷,F(xiàn)AT占用的容量更大)
3 索引分配
在打開某個文件時怎燥,只需把該文件占用的盤塊號的編號調(diào)入內(nèi)存即可,無需把整個FAT調(diào)入內(nèi)存旱眯。為此,將每個文件所對應(yīng)的盤塊號集中地放在一起,索引分配方式就是基于此想法所形成的一種分配方式删豺。
3.1 單級索引
其為每個文件分配一個索引表共虑,再把分配給該文件的所有盤塊號都記錄在該索引塊中,因而該索引塊就是一個含有許多磁盤塊號的數(shù)組呀页。在建立一個文件時妈拌,只需要在為之建立的目錄項中填上指向該索引塊的指針。
3.2 多級索引
當文件太大時蓬蝶,索引塊太多尘分,單級索引是低效的。此時丸氛,為這些索引塊再建立一級索引培愁,稱為第一級索引,還可再建立索引缓窜,稱為第二級索引等等定续。稱為多級索引分配。
在二級索引分配方式下禾锤,若每個盤塊的大小為1KB香罐,每個盤塊號占4個字節(jié),在一個索引塊可以存放256個盤塊號时肿。則庇茫,在兩級索引時,最多可以包括存放文件的盤塊號總數(shù)為64K(256 * 256)個盤塊號螃成,所允許文件最大長度為64MB旦签。
若盤塊號為4KB,則一級索引的最大文件大小為4MB寸宏,二級索引的最大文件大小為4GB宁炫。
3.3 混合索引分配
將多種索引分配方式相結(jié)合而形成的一種分配方式,如直接地址氮凝,一次間接地址羔巢,多次間接地址。
Unix SystemV的分配采用了三級索引分配方式罩阵。共設(shè)置了13個索引地址項竿秆。前10個:iaddr(0)~iaddr(9)為直接地址項,iaddr(10)為一次間接地址項稿壁,iaddr(11)為二次間接地址項幽钢,iaddr(12)為三次間接地址項。