iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 28
1
自我挑戰組

OS作業系統學習系列 第 28

第二十八天 Implementing File-System(檔案系統實作)--下

第二十八天 Implementing File-System(檔案系統實作)--下

今天來把剩下的說完~~

昨天提到檔案配置的方法,檔案配置就需要空間,那現在就來講free space如何管理。Free space可以透過以下的方法來管理:

  1. Bit Vector(Bit Map):他是透過一組bit來代表block有沒有被用到,一個bit對應一個block。這個方法比較容易找到連續的檔案,但是bit vector會佔用memory的空間,不適用在大型硬碟上。
  2. Linked List:將可用空間串連起來,所以比較不會浪費空間,但這個方法不容易找到連續空間來存放檔案。
  3. Grouping
  4. Counting

Free space也是需要保護,不被惡意程式使用,像是指向free list的指標,然後bit vector也需要被存放在硬碟內,而且block的使用狀態在記憶體跟硬碟中,不能有差異。如果有差異存在,有個解決方法,先將硬碟內的狀態設為被使用,接下來再分配block的使用,最後才將記憶體內block的使用狀態設為被使用。以下有例圖:
https://ithelp.ithome.com.tw/upload/images/20181112/20112132UjHmdRzAYd.png
影響檔案系統效率的原因有:

  • 硬碟如何分配
  • 目錄的演算法
  • 存放在檔案內資料的型態

能夠增加效能的方法:

  • Disk cache:將常用的block放到記憶體內
  • Free-behind and read-ahead:讓要做的事有最好的安排順序,需要讀的檔案就先做,執行完後需要釋放空間的動作,在空間足夠下,就晚一點再執行。
  • 將部分的記憶體當硬碟使用,像是virtual disk

而檔案再執行難免都會有出錯的時候,這時我們就要想辦法來恢復:

  • 一致性的檢查:將目錄結構中的data和disk上的比較,並嘗試修復不一致的問題。
  • 使用system program將資料備份到其他儲存裝置。
  • 通過備份資料來還原失去的檔案或是硬碟

Log Structured File System(LFS):
LFS紀錄著每一次檔案的更新動作,檔案不管做什麼動作都要寫入log內,而且一旦寫進去皆會被commit,但file system可能還沒有這麼快就更新。而log內的動作是非同步的寫入file system,意思是當檔案被修改後,log的動作會被移除。但如果檔案系統crashes的話,log內的動作還是會繼續執行。

Network File System(NFS):
這個系統是由Sun公司所發展的,所以他之前也叫Sun Network File System。這個系統是可以透過網路,讓不同的機器、不同的作業系統可以彼此分享個別的檔案,將遠端NFS的伺服器分享的目錄載到本地,讓遠端目錄看起來像是自己硬碟內一部分。他是使用UDP的方法而不用TCP,因為TCP的overhead太大,效能不好,使用者無法接受delay time那麼長。其他更細項的介紹就麻煩上網找找囉~

這章節就到這裡囉!
/images/emoticon/emoticon25.gif


上一篇
第二十七天 Implementing File-System(檔案系統實作)--上
下一篇
第二十九天 mass-storage structure(大量儲存結構)--上
系列文
OS作業系統學習30

尚未有邦友留言

立即登入留言