一、文件系統概述
軟件資源管理
信息長期保存的需要
存儲介質:磁盤、光盤、磁帶…
完成外存信息的管理和存取
在前面的學習中,我們知道文件也是一種系統資源。
這里先給出文件和文件系統的定義。
1、文件
外存中具有符號名的一組有邏輯意義的信息項的集合。
2、文件系統
指OS中管理文件的那一部分軟件。它負責管理文件的存儲、檢索、更新,提供安全可靠的共享和保護手段,並為用戶提供一整套方便有效的文件使用和操作方法。它在OS接口中占比例最大,是I/O系統的上層軟件。文件系統面向用戶的主要任務是實現文件的“按名存取”。
按名存取是文件系統最為主要的任務!!!
3、文件的屬性
主要屬性有:文件名、識別符、類型、位置、大小、創建時間、上次修改時間、文件所有者和保護信息等。
UNIX系統中文件屬性:
- 普通文件
d 目錄文件
p 管道文件
c 字符型設備文件
b 塊設備文件
4、文件的分類
按性質和用途分:
系統文件、庫文件、用戶文件
按數據形式:
源文件、目標文件、可執行文件
按對文件實施的保護級別分:
只讀文件、讀寫文件、執行文件
按邏輯結構分:
有結構文件、無結構文件
按文件中物理結構分:
順序文件、鏈接文件、索引文件
二、文件的邏輯結構
文件的結構指文件中信息的配置和構造方式,有邏輯結構和物理結構之分。
用戶眼中文件信息的組織形式叫文件的邏輯結構。它包括記錄式文件和流式文件兩種,每種文件信息的邏輯單位分別是記錄和字符。
UNIX系統視所有文件的邏輯結構為無結構的流式文件
早期有結構的記錄式文件又分定長和不定長兩種
文件的邏輯結構與文件的存儲介質無關
文件的邏輯結構可以分為無結構文件(流式),有結構文件(記錄式)
1、無結構文件
2、有結構文件
根據各條記錄的長度(占用的存儲空間)是否相等,又可以分為定長記錄和可變長記錄兩種。
根據有結構文件中的各條記錄如何組織,可分為三類
順序文件
索引文件
索引順序文件
這里進行檢索效率的分析:
多級索引順序文件
看完文件的邏輯結構的划分,是不是覺得好像在哪里學過類似的組織方式?
回想一下在計算機組成原理中Cache的組織方式,是不是也是這樣的?
地址映像的直接映像、全相聯映像、組相聯映像不就對應着順序文件、索引文件、索引順序文件?
3、總結
三、文件目錄
文件目錄是文件系統管理文件最為重要的依據。
1、文件控制塊
文件控制塊(FCB):是OS為管理文件而設置的數據結構,存放了為管理文件所需的所有有關信息(文件屬性),也叫文件目錄項
文件控制塊是文件存在的標志
文件控制塊的內容:
基本信息:文件的名字、地址、大小、結構、類型
存取控制信息:文件屬主、存取權限或屬性或口令
使用信息:共享計數,文件的建立、修改日期等
文件控制塊內容
Name
Type
Address
Current length
Maximum length
Date last accessed (for archival)
Date last updated (for dump)
Owner ID (who pays)
Protection information (discuss later)
文件目錄:把所有的FCB組織在一起,就構成了文件目錄,即文件控制塊的有序集合
目錄文件:為了實現對文件目錄的管理,通常將文件目錄以文件的形式保存在外存,這個文件就叫目錄文件
目錄主要是為了系統快速實現“按名存取”而引入的,查目錄是文件系統最頻繁的操作,因此目錄的合理組織很重要
2、目錄結構—單級目錄結構
單級目錄結構
系統為所有文件建立一個目錄文件(線性表)
優點:簡單,易實現
缺點:
限制了用戶對文件的命名(存在“命名沖突”問題)
順序檢索文件時平均檢索時間長
限制了對文件的共享
不適於多用戶系統
3、目錄結構—兩級目錄結構
二級目錄結構
為克服單級目錄結構存在的命名沖突問題,並提高對目錄文件的檢索速度而引入
目錄分為兩級:一級稱為主文件目錄,給出用戶名,用戶子目錄所在的物理位置;二級稱為用戶文件目錄(又稱用戶子目錄),給出該用戶所有文件的FCB
優點:解決了文件的重名問題和文件共享問題;
可用於多用戶系統;
順序查找時間降低。
缺點:增加了系統開銷
4、目錄結構—多級目錄結構
多級目錄結構又稱為樹形目錄結構
對二級目錄簡單擴充可得三級或三級以上的多級目錄結構,即允許每一級目錄中的FCB要么指向文件,要么指向下一級子目錄即可。這是當今主流OS普遍采用的目錄結構
優點: ①解決了命名沖突問題
②提高了文件檢索速度
③易於實現文件的共享和保護
④層次結構清晰,便於對文件分類管理
缺點:查找一個文件按路徑名逐層檢查,由於每個文件都放在外存,多次訪盤影響速度
這里再介紹一下相對路徑和絕對路徑的概念
在樹形目錄結構中,對文件的訪問可以按文件的絕對路徑名、相對路徑名和符號鏈接。
樹形目錄結構可以很方便地對文件進行分類,層次結構清晰,也能更有效地進行文件的管理和保護。但是,樹形結構不便於實現文件的共享。為此,提出了"無環圖目錄結構"
5、目錄結構—無環圖目錄結構
6、索引結點(FCB的改進)
這里先引出一個概念
文件尋址
根據FCB中文件物理地址等信息,求出文件的任意記錄或字符在存取介質上的地址,稱為文件尋址。
對FCB過大的改進方法
采用目錄項分解法,把FCB分成兩部分。
符號目錄頂(次部)
文件名,文件號
基本目錄項(主部)
除文件名外的所有項目
如:UNIX:I節點(索引結點)
例:
設物理塊大小512字節,一個FCB有48個字節,符號目錄項占 8字節,文件名6字節,文件號2字節,基本目錄項占 48-6=42字節。若把含有128個目錄項的某單級目錄文件改造成符號文件目錄和基本文件目錄的結構,試說明改造后查找一個文件的平均訪盤次數,談一下自己的認識。
解:分解前:1塊含512/48=10個FCB
分解后:1塊含512/8=64個符號目錄項,或者,1塊含512/42=12個基本目錄項
該目錄文件含有128個目錄項,分解前占13(⌈128/10⌉)塊,分解后其符號文件占2(128/64)塊 ,基本文件占11塊(⌈128/12⌉)。
故分解前查找一個文件的平均訪盤次數:(1+13)/2=7次;
分解后:(1+2)/2 +1 =2.5次 先到符號目錄項中找(1+2)/2,找到后根據文件號到基本目錄項中找+1
由此可見:改造后減少了訪問硬盤的次數,提高了檢索速度。
7、總結
四、文件的物理結構(文件的分配方式)
系統眼中文件信息的組織形式叫文件的物理結構。它包括順序文件、鏈接文件、索引文件三種(實為連續文件與不連續文件兩大類)
文件的物理結構也叫文件的存儲結構,指文件在外存上的存儲組織形式,它與存儲介質的性能和外存的分配方式有關
1、文件塊、磁盤塊
在很多操作系統中,磁盤塊的大小與內存塊、頁面的大小相同
2、文件分配方式—連續分配
連續分配方式要求每個文件在磁盤上占有一組連續的塊。
這里需要明白一下磁盤讀取的原理
結論:物理上采用連續分配,存儲空間利用率低,會產生難以利用的磁盤碎片。
可以用緊湊來處理磁盤碎片,但需要耗費很大的時間代價。
連續分配總結
文件的信息存放在若干連續的物理塊中。
優點:實現簡單,順序存取速度快,至此順序訪問和直接訪問(隨機訪問)
缺點:但分配慢,不方便文件拓展,存儲空間利用率低,外存碎片多(似內存的可重定位可變分區分配)
3、文件分配方式—鏈接分配
鏈接分配采取離散分配的方式,可以為文件分配離散的磁盤塊。分為隱式鏈接和顯示鏈接兩種。
鏈接分配—隱式鏈接
隱式鏈接總結
鏈接分配—顯式鏈接
看到這里是否想到了數據結構中的靜態鏈表?
注意:一個磁盤僅設置一張FAT!FAT的各個表項在物理上連續存儲,且每一個表項長度相同,因此“物理塊號”字段可以是隱含的。
鏈接分配總結
隱式鏈接方式只支持順序訪問,不支持隨機訪問;顯示鏈接支持隨機訪問!
4、文件分配方式—索引分配
注意:在顯式鏈接的鏈式分配方式中,文件分配表FAT是一個磁盤對應一張表。而索引分配方式中,索引表是一個文件對應一張。
但如果出現一個磁盤塊不能裝下文件的整張索引表,該如何解決這個問題?
鏈接方案
多層索引
混合索引
索引分配總結
支持隨機訪問?
例題
這個范例是幫助讀者深入比較文件物理組織的各種方案:順序文件的連續分配、鏈接文件的鏈接分配、二級索引分配。
一個文件系統中有一個20MB大文件和一個20KB小文件,當分別采用連續、鏈接、二級索引分配方案時(每塊大小為4096B,每塊地址用4B表示),問:
1.各文件系統管理的最大的文件是多少?
2.每種方案對大、小二文件各需要多少專用塊來記錄文件的物理地址(說明各塊的用途) ?
3.如需要讀大文件前面第5.5KB和后面(16M+5.5KB)信息,則每個方案各需要多少次盤I/O操作?
1.各種分配方案的文件系統可管理的最大文件
連續分配:不受限制,可大到整個磁盤文件區。
鏈接分配:同上。
二級索引:由於盤塊大小為4KB,每個地址用4B表示,一個盤塊可存1K(4096/4=1024)個索引表目,二級索引可管理的最大文件容量為4KB×1K×1K=4GB,如要管理更大的文件需采用三索引,它可管理4TB大小文件。
2.每種分配方案對20MB大文件和20KB小文件各需要多少專用塊來記錄文件的物理地址?
連續分配:對大小二個文件都只需在文件控制塊FCB中設二項,一是首塊物理塊塊號,另一是文件總塊數,不需專用塊來記錄文件的物理地址。
鏈接分配:對大小二個文件都只需在文件控制塊FCB中設二項,一是首塊物理塊塊號,另一是文件總塊數;同時在每塊存文件的物理塊中設置存貯下一塊塊號的指針。
二級索引:對大小文件都固定要用二級索引,對20KB小文件,用一塊作第一級索引,用另一塊作二級索引,共用二塊專用物理塊作索引塊,對於20MB大文件,用一塊作第一級索引,用5塊作第二級索引,共用六塊專用物理塊作索引塊。(20MB=5×1K×4KB)
3.為讀大文件前面第5.5KB和后面(16M+5.5KB)信息需要多少次盤I/O操作?
連續分配:為讀大文件前面和后面信息都需先計算信息在文件中相對塊數,前面信息相對邏輯塊號為5.5K/4K=1,后面信息相對邏輯塊號為(16M+5.5K)/4K=4097。再計算物理塊號=文件首塊號+相對邏輯塊號,最后化一次盤I/O操作讀出該塊信息。
鏈接分配:為讀大文件前面5.5.KB的信息,只需先讀一次文件頭塊得到信息所在塊的塊號,再讀一次第1號邏輯塊得到所需信息。而讀大文件后面16MB+5.5KB的信息,要先把該信息所在塊前面塊順序讀出,共化費4097次盤I/O操作,才能得到信息所在塊的塊號,最后化一次I/O操作讀出該塊信息。所以總共需要4098次盤I/O才能讀取(16MB+5.5KB)字節信息。
二級索引:為讀大文件前面和后面信息的操作相同,首先進行一次盤I/O讀第一級索引塊,然后根據它的相對邏輯塊號計算應該讀第二級索引的那塊,第一級索引塊表目號=相對邏輯塊號/1K,對文件前面信息1/1K=0,對文件后面信息4097/1K=4,第二次根據第一級索引塊的相應表目內容又化一次盤I/O讀第二級索引塊,得到信息所在塊塊號,再化一次盤I/O讀出信息所在盤塊,這樣讀取大文件前面或后面信息都只需要3次盤I/O操作。
某文件系統采用單級索引文件結構,假定文件索引表的每個表項占3B存放一個磁盤塊的塊號,磁盤塊的大小為512B。試問:
(1)該文件系統能支持的最大文件大小是多少字節?能管理的最大磁盤空間是多大?
(2)若采用3級索引,該文件系統能支持的最大文件大小是多少字節?
(1)由於索引表占用一個大小為512B的磁盤,所以該文件系統的索引表可以管理512/3=170個表項,而每一個表項對應一個物理塊,因此該文件
系統可以支持的最大文件為:170*512B=87040B=85KB
能管理的最大磁盤空間:
3B有3*8=24位
2^(24)*512B=8G
(2).170*170*170*512B=2456500KB=2398.93MB