第 七 、八 章 文件與磁盤(pán)空間管理

1、文件和文件系統(tǒng)

文件管理:把所管理的程序和數(shù)據(jù)組織成一系列的文件,并能進(jìn)行合理的存儲(chǔ)、使用等操作。

1)基本概念

數(shù)據(jù)項(xiàng):描述對(duì)象某種屬性的字符集;是數(shù)據(jù)組織中可以命名的最小邏輯數(shù)據(jù)單位。

記錄:一組相關(guān)數(shù)據(jù)項(xiàng)集合,描述對(duì)象某方面的屬性;

關(guān)鍵字:一個(gè)記錄中的一個(gè)或幾個(gè)數(shù)據(jù)項(xiàng)的集合,用于唯一的標(biāo)識(shí)一個(gè)記錄。

文件:由創(chuàng)建者定義的、具有文件名的一組相關(guān)元素的集合。

有結(jié)構(gòu):由相關(guān)記錄組成

無(wú)結(jié)構(gòu):字符流的形式

屬性:類型、長(zhǎng)度、物理位置、創(chuàng)建時(shí)間

2)文件類型

不同的系統(tǒng)對(duì)文件的管理方式不同

大多用擴(kuò)展名標(biāo)志文件類型,按如下幾種方式分類文件

按用途:系統(tǒng)、用戶、庫(kù)文件

按數(shù)據(jù)形式:源文件、目標(biāo)文件、可執(zhí)行文件

按存取控制屬性:只執(zhí)行、只讀、讀寫(xiě)

u按組織和處理方式:普通文件、目錄文件、特殊(設(shè)備)文件


系統(tǒng)管理文件模型


2、文件的邏輯結(jié)構(gòu)

文件結(jié)構(gòu):

文件的邏輯結(jié)構(gòu)file logical structure:按用戶觀點(diǎn)如何組織數(shù)據(jù);又稱文件組織file organization

基本要求:檢索速度高、方便修改、降低存儲(chǔ)空間費(fèi)用(不連續(xù))

文件的物理結(jié)構(gòu):根據(jù)外存上的物理塊的分配機(jī)制,記錄文件外存的存儲(chǔ)結(jié)構(gòu)。用戶感知不到的。

1)文件邏輯結(jié)構(gòu)的類型

有結(jié)構(gòu)文件(記錄式)

①定長(zhǎng)記錄

②變長(zhǎng)記錄

如何組織記錄:

順序文件。系統(tǒng)需按該類型記錄“長(zhǎng)度”,通常定長(zhǎng)。

索引文件。系統(tǒng)需為文件建立索引表。

索引順序文件。建索引表,記錄每組記錄的第一個(gè)記錄位置。

無(wú)結(jié)構(gòu)文件(字符流式)

字節(jié)為單位,利用讀寫(xiě)指針依次訪問(wèn)。

系統(tǒng)對(duì)該類文件不需格式處理。


①順序文件

兩種記錄排列方式

串結(jié)構(gòu):按記錄形成的時(shí)間順序串行排序。記錄順序與關(guān)鍵字無(wú)關(guān);

順序結(jié)構(gòu):按關(guān)鍵字排序。

檢索方法:

從頭檢索,順序查找要找的記錄,定長(zhǎng)的計(jì)算相對(duì)快。

順序結(jié)構(gòu),可用折半查找、插值查找、跳步查找等算法提高效率

順序結(jié)構(gòu)記錄按關(guān)鍵字排序,可按關(guān)鍵字檢索

定長(zhǎng):結(jié)合折半查找算法等提高檢索速度

變長(zhǎng):從第1個(gè)記錄開(kāi)始順序掃描,直到掃描到要檢索的關(guān)鍵字標(biāo)識(shí)的記錄(例如:數(shù)據(jù)庫(kù)、文件系統(tǒng)的基于文件名排序的目錄檢索)

順序文件的優(yōu)缺點(diǎn):

不方便隨機(jī)存取某條記錄,但適用批量存取的場(chǎng)合。

適合磁帶等特殊介質(zhì)。

單記錄的查找、修改等交互性差;增減不方便(改進(jìn)辦法:把增刪改的記錄登記在一個(gè)事務(wù)文件中,在某段時(shí)間間隔后再與原文件合并更新)。

②索引文件

為了方便單個(gè)記錄的隨機(jī)存取,為文件建立一個(gè)索引表,記錄每項(xiàng)記錄在文件的邏輯地址及記錄長(zhǎng)度;該索引表按關(guān)鍵字排序,。

索引表內(nèi)容:

索引號(hào)、長(zhǎng)度、記錄地址指針

檢索效率

索引表本身即是個(gè)按記錄鍵排序的定長(zhǎng)順序文件,所以能利用算法提高索引表檢索速度

一個(gè)索引文件可以有多個(gè)索引表

? ???為方便用戶根據(jù)不同記錄屬性檢索記錄,為順序文件建立多個(gè)索引表,每種能成為檢索條件的域都配備一張索引表。

索引文件的優(yōu)缺點(diǎn)

適用于變長(zhǎng)記錄,可提高檢索速度,實(shí)現(xiàn)直接存取

索引表增加了存儲(chǔ)開(kāi)銷

③索引順序文件

既要方便,又要降低開(kāi)銷

本方式是最常見(jiàn)的一種邏輯文件形式。

將順序文件的所有記錄分組

還是建立索引表,但每個(gè)表項(xiàng)記錄的是每組第1條記錄的鍵值和地址。

組內(nèi)記錄仍按順序方式檢索和使用。

檢索一條記錄的過(guò)程:

先計(jì)算記錄是在第幾組,然后再檢索索引確定組在哪里后,在組內(nèi)順序查找。

可利用多級(jí)索引,進(jìn)一步提高檢索效率。

3、外存分配方式

目標(biāo):有效利用外存空間,提高文件訪問(wèn)速度

常用三種方式:

連續(xù)分配;鏈接分配(不連續(xù));索引分配

通常一個(gè)系統(tǒng)中僅采用一種方式

采用的磁盤(pán)分配方式?jīng)Q定了文件的“物理結(jié)構(gòu)”

順序結(jié)構(gòu);鏈接式結(jié)構(gòu);索引式結(jié)構(gòu)。

注意與邏輯結(jié)構(gòu)名類似但不是一回事。


缺點(diǎn):會(huì)產(chǎn)生外存碎片??删o湊法彌補(bǔ),但需要額外的空間,和內(nèi)存緊湊相比更花時(shí)間。

創(chuàng)建文件時(shí)要給出文件大小;存儲(chǔ)空間利用率不高,不利于文件的動(dòng)態(tài)增加和修改;

適用于變化不大順序訪問(wèn)的文件,在流行的UNIX系統(tǒng)中仍保留了連續(xù)文件結(jié)構(gòu)。如對(duì)換區(qū)

2)鏈接分配

可以為每一個(gè)文件分配一組不相鄰的盤(pán)塊。

設(shè)置鏈接指針,將同屬于一個(gè)文件的多個(gè)離散盤(pán)塊鏈接成一個(gè)鏈表,這樣形成的文件稱為鏈接文件。會(huì)有鏈接成本。

優(yōu)點(diǎn):離散分配,消除外部碎片,提高利用率;同時(shí)適用于文件的動(dòng)態(tài)增長(zhǎng);修改容易





FAT 與 NTFS技術(shù)

1.FAT12

? 表項(xiàng)12位。能支持的硬盤(pán)容量?jī)H為8M。

2^12(個(gè))*512B*4(分區(qū)數(shù))=2^23B=8M

磁盤(pán)容量不斷增大,可將若干盤(pán)塊組為一簇。以簇為單位分配空間

FAT表記錄簇號(hào),表項(xiàng)數(shù)量減少,一定程度上提高了檢索速度,減少了指針開(kāi)銷,

但該改進(jìn)有限,且會(huì)形成簇內(nèi)碎片。12位的格式對(duì)磁盤(pán)容量仍有很大限制

2.FAT16

增加FAT表的項(xiàng)數(shù),16位可管理的盤(pán)容量為

2^16*64*512B(一簇含64個(gè)盤(pán)塊)=2048M

若磁盤(pán)容量為8G,則每簇大小達(dá)到128K(8G/2^16),簇內(nèi)碎片最大會(huì)到128K。浪費(fèi)嚴(yán)重。

3.FAT32

簇不能太大,只能繼續(xù)增加表項(xiàng)位數(shù),以記錄更多數(shù)量

FAT32規(guī)定每簇4KB(即8個(gè)512B的盤(pán)塊),該格式能管理的單個(gè)最大磁盤(pán)空間為2^32*4KB=2TB。

簇大小合適,空間利用率提高;但分配表的擴(kuò)大使運(yùn)行速度相對(duì)慢了;可支持長(zhǎng)文件名;有最小空間管理限制,卷必須大于512M,單個(gè)文件長(zhǎng)度不能大于4G,不能向下兼容。

4.NTFS

New technology file system

①采用64位磁盤(pán)地址,理論上支持2^64字節(jié)的磁盤(pán)分區(qū);

②支持長(zhǎng)文件名;

③系統(tǒng)糾容錯(cuò)功能

④提供數(shù)據(jù)一致性、文件加密、壓縮等功能

磁盤(pán)組織

以簇為單位分配回收、但不規(guī)定盤(pán)塊大小

磁盤(pán)格式化時(shí)確定卷的簇大?。ㄎ锢泶疟P(pán)扇區(qū)的整數(shù)倍),512M以內(nèi)的小磁盤(pán)默認(rèn)簇大小為512B,1G的默認(rèn)大小為1KB。。。大多數(shù)情況是4KB

卷上簇編號(hào)為L(zhǎng)CN,用戶用到的簇順序編成用戶虛擬簇號(hào)VCN,NTFS可進(jìn)行VCN到LCN的映射

文件組織

以卷為單位,將卷的所有文件信息、目錄信息、可用未分配空間記錄在主控文件表MFT中。

每個(gè)文件的信息對(duì)應(yīng)一行,固定大小1KB,稱為元數(shù)據(jù)

文件屬性信息、文件數(shù)據(jù)較少時(shí)就直接寫(xiě)在MFT中;較多超出1KB時(shí),記錄存放這些信息的簇地址指針。

兼容性上也有不足

3)索引分配

鏈接的不足

順序檢索的時(shí)間成本:不能支持高效的盤(pán)塊直接存取。要對(duì)一個(gè)文件進(jìn)行直接存取,仍需在FAT中順序的查找許多盤(pán)塊號(hào)。

鏈接信息的空間成本:FAT需占用較大的內(nèi)存空間。當(dāng)磁盤(pán)容量較大時(shí),F(xiàn)AT可能要占用數(shù)MB以上的內(nèi)存空間。這是令人難以忍受的

改進(jìn):系統(tǒng)運(yùn)行時(shí)只涉及部分文件,F(xiàn)AT表無(wú)需全部調(diào)入內(nèi)存

每個(gè)文件單獨(dú)建索引表(物理盤(pán)塊索引),記錄所有分配給它的盤(pán)塊號(hào);

建立文件時(shí),便分配一定的外存空間用于存放文件盤(pán)塊索引表信息;



多級(jí)索引下的文件大小

若兩級(jí)索引,盤(pán)塊1KB,盤(pán)塊號(hào)占4字節(jié)

一個(gè)盤(pán)塊可存放的盤(pán)塊號(hào)數(shù)有多少個(gè)

1KB/4B= 2^10/4 = 2^8 =256(個(gè))

二級(jí)索引下的文件可分配的最大盤(pán)塊數(shù)

256* 256 =2^6×2^10=64 K(個(gè))

文件最大長(zhǎng)度為 64K(個(gè))*1KB=64MB

若盤(pán)塊大小為4KB,單級(jí)索引允許文件最大長(zhǎng)度為4MB(4K/4*4KB),二級(jí)索引則文件最大可達(dá)4GB(1K*1K*4KB)。

③混合組織索引(增量式索引組織方式)

多種索引方式相結(jié)合,以UNIX system V的索引結(jié)點(diǎn)為例:

一個(gè)索引結(jié)點(diǎn)定義為13個(gè)地址項(xiàng):iaddr(0)~iaddr(12),總的來(lái)說(shuō)分為兩種:直接地址、間接地址

iaddr(0)~iaddr(9)存放直接地址,即存文件數(shù)據(jù)的盤(pán)塊號(hào);

iaddr(10)存放單級(jí)索引的索引盤(pán)塊號(hào);

剩余的用于文件較大時(shí)存放多級(jí)索引數(shù)據(jù)。

iaddr(11)存放二級(jí)索引的主索引盤(pán)塊號(hào)

iaddr(12)存放三級(jí)索引的主索引盤(pán)塊號(hào)

4、存儲(chǔ)空間的管理

典型的管理方法:

1)空閑表和空閑鏈表法

2)位示圖法

3)成組鏈接法


②存儲(chǔ)空間的分配與回收操作

與內(nèi)存的動(dòng)態(tài)分配類似,同樣可采用首次適應(yīng)算法、循環(huán)首次適應(yīng)算法等。

回收主要解決對(duì)數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)修改。

應(yīng)該說(shuō)明,雖然很少采用連續(xù)分配方式,然而在外存的管理中,由于它具有較高的分配速度,可減少訪問(wèn)磁盤(pán)的I/O頻率,故它在諸多分配方式中仍占有一席之地。(如實(shí)現(xiàn)虛擬用的部分外存就是連續(xù)分配方式)

空閑鏈表法

將所有空閑盤(pán)區(qū)拉成一條空閑鏈。

①數(shù)據(jù)結(jié)構(gòu):鏈

? 根據(jù)構(gòu)成鏈所用基本元素的不同,可把鏈表分成兩種形式:

o空閑盤(pán)塊鏈

o空閑盤(pán)區(qū)鏈

空閑盤(pán)塊鏈

將磁盤(pán)上的所有空閑空間,以盤(pán)塊為單位拉成一條鏈。

因創(chuàng)建文件而請(qǐng)求分配空間時(shí),系統(tǒng)從鏈?zhǔn)滓来握逻m當(dāng)數(shù)目的空閑盤(pán)塊分配給用戶。

因刪除文件而釋放存儲(chǔ)空間時(shí),系統(tǒng)將回收的盤(pán)塊依次插入空閑盤(pán)塊鏈的末尾。

優(yōu)點(diǎn):分配和回收一個(gè)盤(pán)塊的過(guò)程非常簡(jiǎn)單,但為一個(gè)文件分配盤(pán)塊時(shí),可能要重復(fù)操作多次。

空閑盤(pán)區(qū)鏈

將所有空閑盤(pán)區(qū)拉成一條鏈。每個(gè)盤(pán)區(qū)上含有:

? 指示下一空閑盤(pán)區(qū)的指針、本盤(pán)區(qū)大小等信息

分配通常采用首次適應(yīng)算法?;厥毡P(pán)區(qū)時(shí),將回收區(qū)與相鄰的空閑盤(pán)區(qū)相合并。

為提高檢索速度,可以采用顯式方法,為空閑盤(pán)區(qū)建立一張鏈表放在內(nèi)存中。

分配、回收操作涉及的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)的處理方便

2)位示圖法——位示圖

利用二進(jìn)制的一位來(lái)表示一個(gè)盤(pán)塊的使用情況。

值為0表示對(duì)應(yīng)的盤(pán)塊空閑,為1表示已分配。有的系統(tǒng)則相反。

磁盤(pán)上的所有盤(pán)塊都有一個(gè)二進(jìn)制位與之對(duì)應(yīng),這樣由所有盤(pán)塊所對(duì)應(yīng)的位構(gòu)成一個(gè)集合,稱為位示圖。

總塊數(shù)=m*n??捎胢*n個(gè)位數(shù)來(lái)構(gòu)成位示圖,可看成是二維數(shù)組(數(shù)據(jù)結(jié)構(gòu))。

盤(pán)塊的分配與回收

根據(jù)位示圖進(jìn)行盤(pán)塊分配:

1)順序掃描位示圖。找到為0的二進(jìn)制位。

2)將所找到的一個(gè)或一組二進(jìn)制位,轉(zhuǎn)換成與之對(duì)應(yīng)的盤(pán)塊號(hào)。進(jìn)行分配操作。

盤(pán)塊號(hào)計(jì)算公式為:盤(pán)塊號(hào)=列總數(shù)*(i-1)+ j;

(注意下標(biāo)i,j從1開(kāi)始)

3)修改位示圖。

根據(jù)位示圖進(jìn)行盤(pán)塊回收:

1)將回收盤(pán)塊的盤(pán)塊號(hào)轉(zhuǎn)換成位示圖中的行號(hào)和列號(hào)。轉(zhuǎn)換公式為:i=(盤(pán)塊號(hào)-1)div列+1;j=(盤(pán)塊號(hào)-1)mod列數(shù)+1

Div 求商,mod 取余,公式中的i、j都是從1開(kāi)始的(如12號(hào)盤(pán)塊轉(zhuǎn)換后為1,12)

2)修改位示圖。

優(yōu)點(diǎn):從位示圖中很容易找到一個(gè)或一組相鄰接的空閑盤(pán)塊。

但限于容量問(wèn)題,常用于微型機(jī)和小型機(jī)中。

3)成組鏈接法

大型文件系統(tǒng),空閑表或空閑鏈表太長(zhǎng)不方便管理操作。

UNIX系統(tǒng)中采用成組鏈接法,這是將兩種方法結(jié)合而形成的一種空閑盤(pán)塊管理方法。

中心思想:

所有盤(pán)塊按規(guī)定大小劃分為組;

組間建立鏈接;

組內(nèi)的盤(pán)塊借助一個(gè)系統(tǒng)??煽焖偬幚?,且支持離散分配回收。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、文件和文件系統(tǒng) 1、基本概念 u數(shù)據(jù)項(xiàng):描述對(duì)象某種屬性的字符集;是數(shù)據(jù)組織中可以命名的最小邏輯數(shù)據(jù)單位。 u...
    6d9fe196fd45閱讀 387評(píng)論 0 0
  • 1、文件和文件系統(tǒng) 文件管理:把所管理的程序和數(shù)據(jù)組織成一系列的文件,并能進(jìn)行合理的存儲(chǔ)、使用等操作。 1 )基本...
    盆栽木只閱讀 1,387評(píng)論 0 0
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,407評(píng)論 0 9
  • 項(xiàng)目延遲眾說(shuō)紛紜,一時(shí)間都在議論紛紛;老東家再拋橄欖枝,意欲何為? 還是需要評(píng)估當(dāng)前局勢(shì),思考后續(xù)發(fā)展,看如何實(shí)現(xiàn)...
    200M閱讀 212評(píng)論 0 0
  • 世上的人千千萬(wàn),而總是能讓你笑的人,沒(méi)有幾個(gè)。有的人生來(lái)呆板無(wú)趣,有的人有趣卻是對(duì)著別人。 那個(gè)既有趣又愿意對(duì)...
    AMiss許閱讀 454評(píng)論 2 0