[架构之路-164]-《软考-系统分析师》-3-操作系统基本原理-文件系统(文件的逻辑组织、文件的物理组织、硬盘空间管理、分布式文件系统)
目錄
3 . 4 文件系統
3.4.1文件的組織結構
1 . 邏輯結構
2 . 物理結構
3 . 樹形文件結構
3.4.2 硬盤存儲空間管理
1 . 空閑文件目錄
2 . 空閑塊鏈
3 . 位示圖法
4 . 成組鏈接法
3.4.3分布式文件系統
1. D F S 的特點
2. DFS 的組成
3. DFS 的架構
3 . 4 文件系統
文件是操作系統進行信息管理的基本單位,對軟件資源的管理是通過文件系統來實現的。
為了實現這些功能,操作系統必須考慮文件目錄的建立和維護、存儲空間的分配和回收、信息的編址方法和存儲次序,以及如何檢索用戶信息等問題。
文件是組織數據的一種方式,通過文件,把相互關聯的數據有效地組織在一起,并通過硬盤或Flash永久性存儲起來。
文件系統管理就是解決:如何邏輯上(在內存中)組織和管理數據,如何把數據按照集中或分散的方式存儲在硬盤中,如何實現整體性的邏輯數據與分散的物理數據進行映射。如何管理(增加、刪除、修改、查找)文件系統中的各種文件。
3.4.1文件的組織結構
文件的組織結構是指文件的構造方式,通常可以從兩個不同的角度來對它進行考察。其中,從用戶角度看到的文件稱為文件的邏輯組織,從系統角度看到的文件稱為文件的物理組織。
1 . 邏輯結構
文件的邏輯結構(邏輯文件)是指用戶概念中的文件,它獨立于物理存儲。
邏輯文件有兩種形式,分別是無結構的流式文件和有結構的記錄式文件。
( 1 ) 流式文件。
流式文件是相關信息項的集合,基本單位是字節(或字),它的管理比較簡單,用戶可以很方便地對其進行操作。因此,那些對基本信息單位操作不多的文件較適用于采用流式文件結構,例如,源程序文件、目標代碼文件等。在 U N I X 系統中,所有的文件都被看成是流式文件,系統不對文件進行格式處理。
(2) 記錄式文件。
記錄式文件是數據記錄的集合,其基本單位是邏輯記錄,記錄的長度有等長或變長之分。對記錄式文件,所有記錄描述一個實體集,有相同或不同數目的數據項。流式文件也可視為記錄式文件的特例,即每個記錄只有1個字節(或字)。
記錄式文件的邏輯組織有三種形式,
- 一種是順序存儲方式,即記錄按序排列;
- 一種是直接存儲方式,即用戶對記錄的存儲是不按順序的,可以指定某一記錄進行存儲;
- 還有一種是按鍵存取方式,即用戶對文件內容的訪問不是根據記錄的編號或地址,而是根據記錄的某項內容(關鍵字)來進行的。
2 . 物理結構
文件物理結構(物理文件)是指文件在存儲介質上的組織方式,它依賴于物理的存儲設備和存儲空間,可以看作是相關物理塊的集合。由于物理結構決定了信息在存儲設備上的存放位置和方式, 為此,信息的邏輯位置到物理位賈的映射關系也是由物理結構決定的。
常用的文件物理結構有順序結構、鏈接結構和索引結構。
(1) 順序結構(連續結構)。
邏輯上連續的記錄構成的文件分配到連續的物理塊中。
這種方式管理簡單,存儲速度快,空間利用率低,但文件記錄插入或刪除操作不方便,只能在文件末尾進行。
(2) 鏈接結構(串聯結構)。
將信息存放在非連續的物理塊中,每個物理塊均設有一個指針,指向其后續的物理塊,從而使得存放同一文件的物理塊鏈接成一個串聯隊列。
鏈接方式又分為顯式鏈接和隱式鏈接。
顯式鏈接的鏈接指針在專門的鏈接表中,
隱式鏈接的指針在存放信息的物理塊中。
鏈接結構空間利用率高,且易于文件擴充,但查找效率比較低。
( 3 ) 索引結構(隨機結構)。
為每個文件建立一個索引表,其中每個表項指出信息所在的物理塊號,表目按邏輯記錄編寫順序或按記錄內某一關鍵字順序排列。
對于大文件,為檢索方便,可以建立多級索引,還可以將文件索引表也作為一個文件(稱為索引表文件)。該方式可以滿足文件動態增長的要求且存取方便,但建立索引表增加了存儲空間的開銷,對 多級索引,訪問時間開銷較大。
例如,在 U N I X 系統中,文件的物理結構采用直接、一級、二級和三級間接索引技術,假如索引節點有13個地址項,并且規定地址項0? 9 采用直接尋址方法,地址項10采用一級間接尋址,地址項11采用二級間接尋址,地址項12采用三級間接尋址。每個盤塊的大小為1 K B ,每個盤塊號占4 B , 那么,對于訪問文件的第356 168 B 處的數據來說;先進行簡黽換算356 168/1024& 348 K B , 由于地址項0? 9 可直接尋址10個物理盤塊,每個物理塊大小為1 K B , 所以訪問文件的前10 K B 范圍的數據時是直接尋址。地址項 10釆用一次間接尋址,即地址項10里存放的是一級索引表的地址,因為每個盤塊號占4 B , 該索引表可存放1024/4=256個物理塊的地址,所以當訪問文件為10? 266 K B 之間的數據時是一次間接尋址。由于要訪問的數據是348 K B , 所以還有348-266=82 K B 。顯然地址項11足夠存取這些數據,因此,最多就在地址項11而無須存取地址項12,即只需要二級間接尋址。
3 . 樹形文件結構
文件控制塊的集合稱為文件目錄,文件目錄也被組織成文件,常稱為目錄文件。文
件管理的一個重要方面是對文件 B 錄進行組織和管理。文件系統一般采用一級目錄結構、
二級目錄結構和多級目錄結構,例如, U N I X 和 W i n d o w s 系統都采用了多級樹形目錄結
構,如圖3-7所示。
在圖3-7中,主文件目錄稱為根目錄,根目錄下的子目錄稱為中間節點,子目錄下的文件稱為葉節點。
從根目錄出發到某文件的通路上所有各級子目錄名和該文件名的順序組合稱為文件的路徑名。每個文件都有一個唯一的路徑名。為操作方便,減少訪問時間,系統給用戶指定一個當前目錄,若用戶欲訪問某文件,就不用給出全部路徑,只需給出從當前目錄到欲査找文件之間的相對路徑名。
樹形目錄結構的特點是層次清楚,解決了文件重名問題,提高了查找的效率,同時也方便用戶共享文件。
3.4.2 硬盤存儲空間管理
一個大容量的文件存儲器(硬盤)為系統本身和許多用戶所共享。為方便用戶“按名存取”所需文件,系統應能自動為用戶分配并管理系統和用戶的存儲空間。為此,必須解決以下三個問題:
登記空閑區的分布情況、按需要給一個文件分配物理存儲空間(不是內存空間),以及收回不再保留的文件所占的存儲空間。
以上問題都可以歸結為磁盤空閑區的管理問題,常用的磁盤空閑區管理方法有空閑文件目錄、空閑塊鏈、位示圖和成組鏈接法。
1 . 空閑文件目錄
磁盤空間上一個連續的未分配區域成為空閑文件。//必須連續、必須未使用
系統為所有這些空閑文件單獨建立一個目錄。對每個空閑文件,在這個目錄中建立一個表目。表目的內容包括第一個空閑塊地址(物理塊號)和連續的空閑塊個數等。
在進行存儲空間的分配時,也可采用首次適應和最佳適應等算法,而冋收時,同樣要進行連續空閑區的合并。
這種方法的優點是空閑區的分配和回收都相當容易,但用來管理空閑塊的空閑表(空閑目錄)需要占用大量的存儲空間。
2 . 空閑塊鏈
空閑塊鏈是將所有空閑塊用鏈接指針或索引結構組成一個空閑文件(而不是一個空閑目錄+無數個空閑文件)。
釋放和分配空閑塊都以在鏈首進行,只需要修改幾個有關的鏈接字。
該方法只要求在內存中保存一個指針,令它指向第一個空閑塊,其優點是實現簡單,需要很少的內存和硬盤空間,但工作效率低,因為每當在鏈上增加或移去空閑塊時,都需要對空閑塊鏈表做較大的調整,從而會有較大的系統開銷。
一種改進方法是將空閑塊分成若干組,再用指針將組與組鏈接起來,這種管理空閑塊的方法稱為成組鏈接法,它在進行空閑塊的分配與回收時要比空閑塊鏈法節省時間。組內通過空閑目錄的方式進行組織。
3 . 位示圖法
位示圖是利用二進制的1位來表示文件存儲空間中的1個塊的使用情況。一個 m 行、? 列的位示圖,可 用 來 描 述 塊 的 文 件 存 儲 空 間 ,當行號、列號和塊號都是從〇開始編號時,第 /行、第7?列的二進制位對應的物理塊號為/ XAI +/。如 果 “〇”表示對應塊空閑,“1”表示對應塊已分配,則在進行存儲空間的分配時,可順序掃描位示圖,從中找出一個或一組值為“0”的二進制位,將對應的塊分配出去,并將這些位置“1”? ,而在回收某個塊時,只需找到對應的位,并將其值清零即可。位示圖法適合于所有的分配方式,它簡單易行,而且,位示圖通常較小,故吋將其讀入內存,從而進一步加快文件存儲空間分配和回收的速度。
4 . 成組鏈接法
成組鏈接法是對空閑塊鏈法的一種改進,它將一個文件卷的所有空閑盤塊按同定大小 (例如,每組 m 塊)分成若干組,并將每一組的盤塊數和該組所有的盤塊記入前一組的最后一個盤塊中,第一組的盤塊數和該組的所有盤塊號則記入超級塊的空閑盤塊中。
當系統要為用戶分配文件所需的盤塊時,若第一組不只一塊,則將超級塊中的空閑盤塊數 減 1 , 并將空閑盤塊棧頂的盤塊分配出去;若第一組只剩一塊且棧頂的盤塊號+是結束標記“0”,則先將該塊的內容(記錄有下-?組的盤塊數和盤塊號)讀到超級塊中,然后再將該塊分配出去;否則,若棧頂的盤塊號為結束標記“0”,則表示該磁盤 h 已無空閑盤塊可供分配。在系統回收空閑盤塊時,若第一組不滿 w 塊,則只需將冋收塊的塊號填入超級塊的空閑盤棧頂,并將其中的空閑盤塊數加1 ; 若第一組己有 m 塊,則必須先將超級塊屮的空閑盤塊數和空閑盤塊號寫入回收塊中,然后將盤塊數和回收塊的塊號記入超級塊中。
值得注意的是,超級塊中的空閑盤塊棧是臨界資源,對該棧的操作必須互斥地進行。系統需要為空閑盤塊設置一把“鎖”,并通過上鎖和解鎖來實現對空閑盤塊棧的操作。成組鏈接法除了第一組空閑盤塊外,其余空閑盤塊的登記不占額外的存儲空間,而超級塊(即文件卷的第一塊)已在安裝磁盤時拷入內存,因此,絕大部分的分配和1 H ]收工作可在內存中進行,從而使之具有較高的效率。
3.4.3分布式文件系統
在計算機網絡中,每個節點運行一個包括自己的文件系統的本地操作系統,稱為本地文件系統 (Local File System , L F S )。 L F S 負責將磁盤塊分配給文件,并維護文件分配表等信息,提供諸如新建文件、讀文件、寫文件和刪除文件等+同的服務。它為所有本地 目錄和文件維護目錄結構,允許用戶更改自己的工作目錄,列出本地目錄中的所有文件,以及實現對本地文件和目錄的訪問控制。
當用戶想要對遠程文件執行所有這些功能時,就會出現問題,分布式文件系統(Distributed File System , D F S ) 正好可以提供這種功能。 D F S 是分布式系統的重要組成部分,它允許通過網絡來互連,使不同機器上的用戶共享文件的一種文件系統。
D F S 不是一個分布式操作系統,而是一個相對獨立的軟件系統,稱為分布式文件系統,被集成到分布式操作系統中,并為其提供遠程訪問服務。
1. D F S 的特點
D F S 具有網絡透明性和位置透明性。
網絡透明性是指用戶訪問文件服務器上的文件的操作如同訪問 L F S 的操作一樣;
位置透明性是指用戶通過文件名訪問文件,但并不知道該文件在網絡中的位置,文件的物理位置改變了,但只要文件的名字不變,用戶仍可進行訪問。
在分布式系統中,區分文件服務和文件服務器的概念是非常重要的。
文件服務是文件系統為其用戶提供的各種功能描述,例如,可用的原語,以及它們所帶的參數和執行的動作等。對于用戶來說,文件服務精確地定義了它們所期望的服務,而不涉及實現方面的細節。實際上,文件服務提供了文件系統與用戶之間的接口;
文件服務器是運行在網絡中某臺機器上的一個實現文件服務的進程,一個系統可以有一個或多個文件服務器,但用戶并不知道有多個文件服務器及它們的位置和功能。用戶所知道的只是當調用文件服務中某個具體過程時,所要求的工作以某種方式執行,并返回所要求的結果。
2. DFS 的組成
D F S 為系統中的客戶機提供共享的文件系統,為分布式操作系統提供遠程文件訪問服務。
分布式操作系統通常在系統中的每個機器上都有一個副本,但 D F S 并不一樣,它由兩部分組成,分別是運行在服務器上的 D F S 軟件和運行在每個客戶機上的 D F S 軟件。
這兩部分程序代碼在運行中都要與本機操作系統的文件系統緊密結合,共同起作用。
現代操作系統都支持多種類型的文件系統, D F S 將通過虛擬文件系統和虛擬節點與 L F S 交互作用。
3. DFS 的架構
D F S 目前大多采用客戶/服務器架構,客戶是要訪問文件的計算機,服務器是存儲文件并且允許用戶訪問這些文件的計算機。
D F S 中需要解決的一個問題是命名的透明性,通常有三種解決方式,
第一種方式是通過機器名+路徑名來訪問文件;
第二種方式是將遠程文件系統安裝到本機文件目錄上,這樣,用戶就可以自己定制文件名;
第三種方式是讓所有機器上看起來有相同的單一名字空間,這種方式實現難度較大。
在客戶/服務器架構中,客戶使用遠程方法訪問文件,服務器則響應客戶的請求。
有些系統中的服務器能提供更多的服務,它不僅響應客戶的請求,還對客戶機中的高速緩存的一致性作出預測,一旦客戶數據變為無效時便通知客戶。
3.4.4 虛擬文件系統
虛擬文件系統(VFS)是由Sun microsystems公司在定義網絡文件系統(NFS)時創造的。
它是一種用于網絡環境的分布式文件系統,是允許和操作系統使用不同的文件系統實現的接口。
虛擬文件系統(VFS)是物理文件系統與服務之間的一個接口層,它對Linux的每個文件系統的所有細節進行抽象,使得不同的文件系統在Linux核心以及系統中運行的其他進程看來,都是相同的。
嚴格說來,VFS并不是一種實際的文件系統。它只存在于內存中,不存在于任何外存空間。VFS在系統啟動時建立,在系統關閉時消亡。
Linux就支持虛擬文件系統,虛擬文件系統最重要的特征之一就是支持多種物理文件系統,使其更加靈活,從而與許多其它的操作系統共存。Linux支持ext,ext2,xia,minix,umsdos,msdes,fat32 ,ntfs,proc,stub,ncp,hpfs,affs 以及 ufs 等多種文件系統。
、
為了實現這一目的,Linux 對所有的文件系統采用統一的文件界面,用戶通過文件的操作界面來實現對不同文件系統的操作。對于用戶來說,我們不要去關心不同文件系統的具體操作過程,而只是對一個虛擬的文件操作界面來進行操作,這個操作界面就是 Linux 的虛擬文件系統(VFS ) 。形象地說,Linux 的內核好象一個 PC 機的母板,VFS 就是上面的一個插槽,具體的文件系統就是一塊塊的接 121 卡。因此,每一個文件系統之間互不干擾,而只是調用相應的程序來實現其功能。在 Linux 的內核文件中,VFS 和具體的文件系統程序都放在 Linux\FS 中,其中每一種文件系統對應一個子目錄,另外還有一些共用的 VFS 程序。在具體的實現上,每個文件系統都有自己的文件操作數據結構file—operations。所以,VFS 作為 ILinux內核中的一個軟件層,用于給用戶空間的程序提供文件系統接口,同時也提供了內核中的一個抽象功能,允許不同的文件系統很好地共存。
VFS 使 Linux 同時安裝、支持許多不同類型的文件系統成為可能。VFS 擁有關于各種特殊文件系統的公共界面,如超級塊、inode、文件操作函數入口等。實際文件系統的細節,統一由 VFS 的公共界面來索引,它們對系統核心和用戶進程來說是透明的。
總結
以上是生活随笔為你收集整理的[架构之路-164]-《软考-系统分析师》-3-操作系统基本原理-文件系统(文件的逻辑组织、文件的物理组织、硬盘空间管理、分布式文件系统)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL 忽略大小写模糊查询
- 下一篇: Envoy架构理解--理解xDS/Lis