iT邦幫忙

DAY 10
5

檔案系統的設計與效能系列 第 10

檔案系統的設計與效能 - 檔案的抽象化

  • 分享至 

  • xImage
  •  

系統設計的精隨就在於抽象化,如何將實作的細節包裝起來,以整體的角度來思考運作的邏輯,並指保留屬性與行為的關係。如此可以使系統具備模組化的能力與彈性。檔案系統中兩個最重要的抽象化主題是檔案與目錄,我們將分兩個章節來探討。
系統設計的精隨就在於抽象化,如何將實作的細節包裝起來,以整體的角度來思考運作的邏輯,並指保留屬性與行為的關係。如此可以使系統具備模組化的能力與彈性。檔案系統中兩個最重要的抽象化主題是檔案與目錄,我們將分兩個章節來探討。

首先來談檔案(file)這個抽象概念,包括檔案、檔案結構以及檔案的定址。檔案系統最根本的動作就是提供一些方法來存取或操作被命名(檔案名稱)的資料 (data)。所以我們稱被賦予名稱的data為file,而file提供了檔案系統中最基本的功能。File就是系統儲存資料的地方,資料可能是幾個字元、一張圖片、資料庫或是任何使用者要儲存的一推byte的集合。檔案的大小可能小到只有幾byte,也可能大到占據整個volume。一個檔案系統要能夠處理為數眾多的檔案才行,而數量則根據系統的設計或磁碟的限制。

一般檔案系統將檔案視為待為沒有結構的序列(stream),是由一串byte所組成**(stream of bytes)**,檔案系統只需記錄他的大小,並允許程式依照自己的需求去讀取他。檔案系統不管程式的如何看待檔案,也不必管I/O的動作如何進行。這樣子的設計,可以將檔案本身與檔案的動作抽離出來,分層處理。

檔案包含metadata+data兩部分。其中檔名就是最重要的metadata,另外還有像是擁有者、存取權限、建立與更動的日期、檔案大小等等 metadata。這些metadata會儲存在**file control block(FCB)**裡,FCB雖然也會佔用一部份disk的block,但是不會被視為data的一部份。

雖然從上層(OS space)來看,檔案是一連續的byte所組成(stream of bytes),但是在底層的disk上,block就不一定是連續的了,所以FCB的主要工作就是記錄檔案與實體block的對應關係**(mapping)。最簡單的對應方法就是用一個表格來記錄每一個檔案的block與disk block的位址。這種簡單的對應方式有其限制,表格太小所能對應的block就少,檔案系統所能記錄的檔案也就就受到限制。改善的方法就是利用間接定址 (in-direct)的概念來實作這個對映表,本來在表格中儲存的是file block所在的disk block位址,現在則儲存in-direct block的位址,而in-direct block再指向真正file block所要對映的位址。這個in-direct block就像是指標(pointer)**,間接指向真正的位址,這種間接定址的作法,可以讓定址的範圍更大。


上一篇
檔案系統的設計與效能 - 關鍵詞的定義
下一篇
檔案系統的設計與效能 - 目錄的抽象化
系列文
檔案系統的設計與效能32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言