第七、八章 文件與磁盤空間管理

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

1 )基本概念

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

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

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

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

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

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

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

2)文件類型

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

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

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

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

3)文件系統(tǒng)模型


4)文件操作

創(chuàng)建/刪除文件:分空間,形成FCB及目錄(名,地址)

讀、寫:按名檢索目錄,找到文件地址,開始讀、寫

設(shè)置文件讀寫位置,實現(xiàn)隨機存取(尤其適用于記錄文件)

還需要:“打開”與“關(guān)閉”:

文件讀/寫操作 = 檢索 + 讀/寫。

每次讀寫前都要重復(fù)檢索增大開銷。所以為了方便對同一文件的多次讀寫,一次檢索到文件后就在內(nèi)存中記錄其位置,避免重復(fù)檢索。被記錄下位置的文件就是“打開”文件;

不需要再操作文件時,通過“關(guān)閉”這個系統(tǒng)調(diào)用關(guān)閉文件——即從打開文件表上刪除其路徑信息即可。

其他操作:改名、改所屬用戶、改訪問權(quán)限等屬性的操作。

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

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

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

①定長記錄

②變長記錄

如何組織記錄:

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

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

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

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

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

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

(1)順序文件

兩種記錄排列方式

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

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

檢索方法:

從頭檢索,順序查找要找的記錄,定長的計算相對快。

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

優(yōu)缺點:

不方便隨機存取某條記錄,但適用批量存取的場合。

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

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

(2)索引文件

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

索引表內(nèi)容:

? ? 索引號、長度、記錄地址指針

檢索效率

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

優(yōu)缺點

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

? ? 索引表增加了存儲開銷

(3)索引順序文件

本方式是最常見的一種邏輯文件形式。

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

? ? ?還是建立索引表,但每個表項記錄的是每組第1條記錄的鍵值和地址。

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

檢索一條記錄的過程:

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

? ? 可利用多級索引,進一步提高檢索效率。

(4)直接文件

給定鍵值(如學(xué)號)不需順序檢索直接得到記錄的物理地址

3.外存分配方式

目標:有效利用外存空間,提高文件訪問速度

常用三種方式:連續(xù)分配、鏈接分配(不連續(xù))、索引分配

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

采用的磁盤分配方式?jīng)Q定了文件的“物理結(jié)構(gòu)”:順序結(jié)構(gòu);鏈接式結(jié)構(gòu);索引式結(jié)構(gòu)。

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

1)連續(xù)分配:

為每一個文件分配一組相鄰的盤塊。

邏輯文件中的記錄順序與存儲器中文件占用盤塊的順序一致。

優(yōu)點:順序訪問容易,讀寫速度快

缺點:

會產(chǎn)生外存碎片。可緊湊法彌補,但需要額外的空間,和內(nèi)存緊湊相比更花時間。

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

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

2)鏈接分配

可以為每一個文件分配一組不相鄰的盤塊。

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

優(yōu)點:

離散分配,消除外部碎片,提高利用率

同時適用于文件的動態(tài)增長;修改容易

(1)隱式鏈接

鏈接信息隱含記錄在盤塊數(shù)據(jù)中;

每個盤塊拿出若干字節(jié),記錄指向下一盤塊號的指針。

問題:只能順著盤塊讀取,可靠性低

(2)顯式鏈接

記錄盤塊鏈接的指針顯示地記錄為一張鏈接表

所有已分配的盤塊號都記錄在其中,稱文件分配表

為了提高文件系統(tǒng)訪問速度,F(xiàn)AT一般常駐內(nèi)存

屬于一個文件的盤塊通過鏈接成為一體,每個鏈條的首地址作為文件地址記錄在相應(yīng)文件的FCB的“物理地址”字段中。

(3)索引分配

鏈接的不足

順序檢索的時間成本:不能支持高效的盤塊直接存取。要對一個文件進行直接存取,仍需在FAT中順序的查找許多盤塊號。

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

改進:

系統(tǒng)運行時只涉及部分文件,F(xiàn)AT表無需全部調(diào)入內(nèi)存

每個文件單獨建索引表(物理盤塊索引),記錄所有分配給它的盤塊號;

建立文件時,便分配一定的外存空間用于存放文件盤塊索引表信息;

①單級索引分配

索引形式適合大文件

中、小型文件,只需若干鏈接即可。若用索引分配方式,用一個盤塊存放少量索引信息反而不適用。

②多級索引

若文件較大,存放索引表也需要多個盤塊(索引盤塊)。

索引盤塊亦需要按順序管理起來

若索引盤塊數(shù)量較少用指針鏈接的方式即可;

若索引盤塊較多,需對索引盤塊也采用索引方式管理,形成多級索引。

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

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

一個索引結(jié)點定義為13個地址項:iaddr(0)~iaddr(12),總的來說分為兩種:直接地址、間接地址

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

iaddr(10)存放單級索引的索引盤塊號;

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

iaddr(11)存放二級索引的主索引盤塊號

iaddr(12)存放三級索引的主索引盤塊號

4.存儲空間的管理

1)空閑表和空閑鏈表法

(1)空閑表法

常用于連續(xù)分配管理方式

(2)空閑鏈表法

①空閑盤塊鏈

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

因創(chuàng)建文件而請求分配空間時,系統(tǒng)從鏈首依次摘下適當數(shù)目的空閑盤塊分配給用戶。

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

優(yōu)點:分配和回收一個盤塊的過程非常簡單,但為一個文件分配盤塊時,可能要重復(fù)操作多次。

②空閑盤區(qū)鏈

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

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

分配通常采用首次適應(yīng)算法。回收盤區(qū)時,將回收區(qū)與相鄰的空閑盤區(qū)相合并。

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

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

2)位示圖法

利用二進制的一位來表示一個盤塊的使用情況。

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

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

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

盤塊的分配與回收:

(1)根據(jù)位示圖進行盤塊分配:

順序掃描位示圖。找到為0的二進制位。

將所找到的一個或一組二進制位,轉(zhuǎn)換成與之對應(yīng)的盤塊號。進行分配操作。

盤塊號計算公式為:盤塊號 = 列總數(shù)*(i-1)+ j;

(注意下標i,j從1開始)

修改位示圖。

(2)根據(jù)位示圖進行盤塊回收:

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

Div 求商,mod 取余,公式中的i、j都是從1開始的

(如12號盤塊轉(zhuǎn)換后為1,12)

修改位示圖。

3)成組鏈接法

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

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

中心思想:

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

? ? 組間建立鏈接;

? ? 組內(nèi)的盤塊借助一個系統(tǒng)棧可快速處理,且支持離散分配回收。

鏈表長度上限固定。

組內(nèi)的盤塊借助一個系統(tǒng)棧可快速處理,且分配回收比較簡單。

支持離散分配回收。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評論 6 535
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,740評論 3 420
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,856評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,931評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,321評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,533評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,082評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,891評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,319評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,794評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,076評論 2 375

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

  • 1、文件和文件系統(tǒng) 文件管理:把所管理的程序和數(shù)據(jù)組織成一系列的文件,并能進行合理的存儲、使用等操作。 1 )基本...
    盆栽木只閱讀 1,375評論 0 0
  • 1、文件和文件系統(tǒng) 文件管理:把所管理的程序和數(shù)據(jù)組織成一系列的文件,并能進行合理的存儲、使用等操作。 1)基本概...
    yangzai1997閱讀 1,734評論 0 0
  • 目錄 文件控制塊---FCB 為了能對一個文件進行正確的存取,必須為文件設(shè)置用于描述和控制文件的數(shù)據(jù)結(jié)構(gòu),稱之為文...
    Mr_Nuo閱讀 742評論 2 0
  • 經(jīng)過幾天業(yè)余時間的打包以及連夜搬家,終于躺到新家的床上了。環(huán)顧房間四周,總的來說可以用“城中樓景房,豪華落地窗”概...
    人生海海hi閱讀 258評論 0 0
  • 樓下,老式收音機沙啞地唱起了閩劇,咿咿呀呀的曲調(diào)若有若無地傳入耳畔。我在腦海里搜尋著遙遠似舊日的畫面,掉進了回憶的...
    莫里亞Tea閱讀 186評論 0 0