文件控制塊—FCB
為了能對一個文件進(jìn)行正確的存取,必須為文件設(shè)置用于描述和控制文件的數(shù)據(jù)結(jié)構(gòu)荔燎,稱之為“文件控制塊”(FCB)
文件與文件控制塊一一對應(yīng)
記錄文件名及其存放地址耻姥、文件的說明和控制信息。(是誰有咨?在哪里琐簇?什么權(quán)?)
文件管理程序借助于文件控制塊中的信息對文件施以各種操作座享。
把文件控制塊的有序集合稱為文件目錄鸽嫂,即一個文件控制塊就是一個目錄項。通常一個文件目錄也被看作是一個文件征讲,稱為目錄文件。
目錄管理的要求如下:
實現(xiàn)“按名存取”橡娄;(最基本功能)
提高對目錄的檢索速度诗箍;
文件共享;
允許文件重名挽唉。
兩級目錄的特點:
基本克服了單級目錄的缺點滤祖,并具有以下優(yōu)點:
提高了檢索目錄的速度。
在不同的目錄中可重名瓶籽。
不同用戶還可以使用相同/不同的文件名來訪問系統(tǒng)中的同一個共享文件匠童。
不提供子目錄操作,還不方便塑顺;各用戶之間被完全隔離的話用戶訪問其他用戶文件時汤求,不方便合作俏险。
多級目錄結(jié)構(gòu)
層次結(jié)構(gòu)更清晰、提供更靈活的權(quán)限管理等
但目錄級別太多時也會增加路徑檢索層次扬绪,增加磁盤訪問時間竖独。
按文件的邏輯結(jié)構(gòu)將文件分為兩大類:記錄式文件和流式文件。
按物理結(jié)構(gòu)劃分挤牛,文件主要有三類:順序文件莹痢、鏈接文件、索引文件墓赴。
操作系統(tǒng)實現(xiàn)按名存取的關(guān)鍵在于:解決文件名與文件存儲地址的轉(zhuǎn)換竞膳。
(1)文件邏輯結(jié)構(gòu)的類型
有結(jié)構(gòu)文件(記錄式)
①定長記錄
②變長記錄
如何組織記錄:
順序文件。系統(tǒng)需按該類型記錄“長度”诫硕,通常定長坦辟。
索引文件。系統(tǒng)需為文件建立索引表痘括。
索引順序文件长窄。建索引表,記錄每組記錄的第一個記錄位置纲菌。
無結(jié)構(gòu)文件(字符流式)
字節(jié)為單位挠日,利用讀寫指針依次訪問。
系統(tǒng)對該類文件不需格式處理翰舌。
①順序文件
串結(jié)構(gòu):按記錄形成的時間順序串行排序嚣潜。記錄順序與關(guān)鍵字無關(guān);
順序結(jié)構(gòu):按關(guān)鍵字排序椅贱。
檢索方法:
從頭檢索懂算,順序查找要找的記錄,定長的計算相對快庇麦。
順序結(jié)構(gòu)计技,可用折半查找、插值查找山橄、跳步查找等算法提高效率
順序結(jié)構(gòu):記錄按關(guān)鍵字排序垮媒,可按關(guān)鍵字檢索
定長:結(jié)合折半查找算法等提高檢索速度
變長:從第1個記錄開始順序掃描,直到掃描到要檢索的關(guān)鍵字標(biāo)識的記錄(例如:數(shù)據(jù)庫航棱、文件系統(tǒng)的基于文件名排序的目錄檢索)
順序文件的優(yōu)缺點:
不方便隨機(jī)存取某條記錄睡雇,但適用批量存取的場合。
適合磁帶等特殊介質(zhì)饮醇。
單記錄的查找它抱、修改等交互性差;增減不方便(改進(jìn)辦法:把增刪改的記錄登記在一個事務(wù)文件中朴艰,在某段時間間隔后再與原文件合并更新)
②索引文件
一個索引文件可以有多個索引表
? ? 為方便用戶根據(jù)不同記錄屬性檢索記錄观蓄,為順序文件建立多個索引表混移,每種能成為檢索條件的域都配備一張索引表。
索引文件的優(yōu)缺點:
適用于變長記錄蜘腌,可提高檢索速度沫屡,實現(xiàn)直接存取
索引表增加了存儲開銷
③索引順序文件
④直接文件
外存分配方式
目標(biāo):有效利用外存空間,提高文件訪問速度
常用三種方式:
連續(xù)分配
缺點:
會產(chǎn)生外存碎片撮珠【诓保可緊湊法彌補(bǔ),但需要額外的空間芯急,和內(nèi)存緊湊相比更花時間勺届。
創(chuàng)建文件時要給出文件大小娶耍;存儲空間利用率不高免姿,不利于文件的動態(tài)增加和修改;
適用于變化不大順序訪問的文件榕酒,在流行的UNIX系統(tǒng)中仍保留了連續(xù)文件結(jié)構(gòu)胚膊。如對換區(qū)
鏈接分配(不連續(xù))
優(yōu)點:
離散分配,消除外部碎片想鹰,提高利用率
同時適用于文件的動態(tài)增長紊婉;修改容易
索引分配
鏈接的不足:
順序檢索的時間成本:不能支持高效的盤塊直接存取。要對一個文件進(jìn)行直接存取辑舷,仍需在FAT中順序的查找許多盤塊號喻犁。
鏈接信息的空間成本:FAT需占用較大的內(nèi)存空間。當(dāng)磁盤容量較大時何缓,F(xiàn)AT可能要占用數(shù)MB以上的內(nèi)存空間肢础。這是令人難以忍受的
改進(jìn):
系統(tǒng)運行時只涉及部分文件,F(xiàn)AT表無需全部調(diào)入內(nèi)存
每個文件單獨建索引表(物理盤塊索引)碌廓,記錄所有分配給它的盤塊號传轰;
建立文件時,便分配一定的外存空間用于存放文件盤塊索引表信息谷婆;
存儲空間的管理
1)空閑表和空閑鏈表法
2)位示圖法
3)成組鏈接法