iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
0

在探討完記憶體之後,我們今天接著要探討也跟儲存設備有關的file system(檔案系統)。
相信所有人都對檔案這一詞並不陌生,是由作業系統去創造、定義的一個單位,在物理上則是被寫入在實際的儲存設備(硬碟、光碟)裡面。

File在使用和操作上會使用一些屬性去描述,應該也都不陌生:

  • Name: 檔名。
  • Type: 檔案類型,會看到很多不同的附檔名(.txt, .exe...),但實際上副檔名是不影響作業系統去存取這個檔案的。
  • Location: 檔案路徑。
  • Size: 檔案大小。
  • Protection: 定義一些使用者的權限,唯讀等等。
  • Build, Last-updated, Last-access time: 建立、最後修改和最後存取等時間的紀錄。

File System data structure

作業系統本身會有兩個資料結構取儲存本身在使用的Files有關的資料,分別是:

  • Open-File Tables: 每個Process都會有一個Open file table,儲存process會用到的一些資訊,像是存取的權限與file pointer等等。
  • System-wide table: 僅有一個是給予作業系統使用的,裡面儲存的內容像是disk location, access dates, file size......,open-file table內的資料可以對應到system-wide table,藉由這種方式分享所有的資料給Process。

要分辨資料儲存在什麼地方很容易,是共用的放在system-wide table,而是每個Process私有的資料則會放在其open-file table底下。

Access Methods

在存取方面作業系統有提供三種方法

  • Sequential access: 檔案在讀的時候要是連續的,在read/write時會自動往後移動,C裡面的fopen, fread都是這一類的方法。將檔案資料儲存序列化的好處是因為,連續的資料在硬碟處讀取上會比較快。
  • Direct access: 直接告訴檔案系統要存取哪一個位置的資料,適用在需要存取特定位置的時候(random access)
  • Index Access: direct access的延伸,會在file內部建立index,透過index就能快速的去搜尋,像是資料庫就是透過這個方法。

在不同的情境要去選擇合適的方法,讓這個方法可以很快的在physical device上面找到需要的資料。


上一篇
Day 26 - Segmentation
下一篇
Day 28 - Directory Structure
系列文
非本科系也能懂和該懂得作業系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言