iT邦幫忙

0

【小黑馬作業系統教室】(19) (Ch11) File System Implementation(檔案系統實作)

嗨嗨,大家好,我是心原一馬,
上一篇【小黑馬作業系統教室】(18) (Ch10) File System Interface(檔案系統)講述了檔案的基礎觀念,
今天繼續說說檔案如何存放在電腦的disk上。

Allocation Methods

檔案的空間配置會以file control block為單位,
常見的檔案配置有以下三種策略:

一、連續性配置 (Contiguous Allocation)

https://ithelp.ithome.com.tw/upload/images/20200105/20117114fQ7AzrrrSh.png

此種策略把檔案放在連續的block中,
好處是不論想按順序讀資料(sequential access)還是隨機讀取資料(random access)都非常的有效率,
因為檔案擺放的位置連續,容易從中間讀資料。

壞處是容易有外部碎片(external fragmentation),
例如上面17,18位置是空的,
但是若檔案大小超過2個blocks就放不下,
另外檔案可能不能隨意增大,
否則空間可能會不夠。
平常電腦做「磁碟清理」做的大致上就是處理檔案之間的零碎空間。

二、鏈結配置 (Linked Allocation)

https://ithelp.ithome.com.tw/upload/images/20200105/2011711459YlCyFrsu.png

與「Contiguous Allocation」是完全相反的極端,
完全用linked list將檔案位置串起來,
可以解決外部碎片化(external fragmentation)問題。

但是缺點是此方法相當不適合random access,
對於每次random access就要重頭的指標讀一次,
I/O request會非常大。

改良鏈結配置: File Allocation Table(簡稱FAT)

https://ithelp.ithome.com.tw/upload/images/20200105/20117114ULLYRWMfbN.png

這是一個常見的檔案系統,也是用linked list將檔案位置串起來,
但跟鏈結配置的差別在於存pointer的地方並不放在各自的file block,
把pointer額外收集起來放在特定的data block,
以加快random access的速度。

三、索引式配置 (Indexed Allocation)

https://ithelp.ithome.com.tw/upload/images/20200105/20117114NSra5YmIDT.png

此方法跟將存放檔案的指標額外存放在一個block中,
有點類似page table的感覺,
比如說第0個資料放在第幾個block…

優點是Indexed Allocation相當適合random access,
並且因為存放檔案的大小不必連續,
可以解決外部碎片化(external fragmentation)的問題。
缺點則是每個檔案都必須要有一個額外的index block來記錄檔案的位置資訊。


尚未有邦友留言

立即登入留言