iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 25
0
自我挑戰組

OS作業系統學習系列 第 25

第二十五天 File System(檔案系統)--上

第二十五天 File System(檔案系統)--上

檔案的型態可以分為兩種,data(又分為數值、文字或是二進位)和program。
而檔案的架構分成三種:

  1. 沒有架構(none):就只是文字或是bytes的序列而已
  2. 簡單記錄架構(simple record structure):一筆筆的資料,可以是固定長度或是沒有固定的
  3. 複雜架構(complex structure):格式化文件或是relocatable load file
    至於要使用哪種架構就由作業系統或是program決定。

檔案的屬性有下列幾項:

  • Name:給人看得,能夠讀懂
  • Identifier:給系統看得,唯一的標示
  • Type:給系統支援不同型態的檔案資訊
  • Location:指標指向裝置內檔案位置
  • Size:檔案大小
  • Protection:控制誰能夠讀、寫、執行
  • Time, date, user identification:保護和安全的資訊(保存上次修改和使用資料),使用監督

檔案的運作有,新增、寫入、讀取、刪除、截短、重新定位,還有Open(Fi)和Close(Fi)。Open(Fi)是在disk內的目錄找Fi,打整個內容給移到記憶體來,Close(Fi)則是把整個Fi從記憶體一到disk。

而開啟檔時,都會有以下資訊:

  • File pointer:指向上一次read/write檔案位置,作為目前檔案指標
  • File-open counter:計算檔案開關次數,當最後一次關閉後,可以移出
  • Disk location of the file:可以快取檔案資訊
  • Access rights:是否允許process存取資訊

Open file locking,有些作業洗桶或是file system會提供,調解對檔案的存取。他有兩種模式,mandatory(強制性)和advisory(諮詢式)。Mandatory的話,要存取就要看我有的lock跟請求; advisory則是process看lock的狀態再決定怎麼做。

以下是檔案的型態:
https://ithelp.ithome.com.tw/upload/images/20181109/20112132HTyst7iYe7.png
而檔案存取的方法主要分兩類:

  • Sequential access(循序存取):一筆筆資料存取,照順序,例如磁帶
  • Direct access(直接存取):找到指定位置後存取
    下面這張圖是模擬Sequential access在Direct access file:
    https://ithelp.ithome.com.tw/upload/images/20181109/20112132x2PqM0MDfV.png
    而目錄的架構就像下面這張圖一樣,節點就包含所有檔案資訊:
    https://ithelp.ithome.com.tw/upload/images/20181109/20112132qn0ZaCPS1y.png
    可以對目錄做:
  • 搜尋檔案
  • 創建檔案
  • 刪除檔案
  • 列印目錄
  • 更改檔名
  • 追蹤檔案系統

那為什麼要有目錄呢?因為我們可以更快的存取檔案,對使用者來說也很方便,因為不同使用者的檔案可以有相同名稱,或是一個檔案也可以有不同的名稱,還可以依照不同的屬性去編排。
而目錄分為:

  1. Single-level directory:
    單層式的目錄,將所有檔案都放在同一個目錄內。但這樣就沒又辦法依照屬性分類,或是名稱方面不能有相同的存在。
    https://ithelp.ithome.com.tw/upload/images/20181109/20112132IwRbfLaasi.png
  2. Two-level directory:
    雙層式目錄,不同的使用者可以擁有不同的目錄。這樣不同的使用者就可以有相同的檔案名稱,也比較好搜尋。但這種方法還是沒辦法按照屬性去分類。
    https://ithelp.ithome.com.tw/upload/images/20181109/20112132VR1NjcC7aL.png
  3. Tree-structured directories:
    樹狀式目錄,他有根目錄,有好的搜尋能力也可以依照屬性分類,current directory的概念,有絕對跟相對的路徑名稱。
    https://ithelp.ithome.com.tw/upload/images/20181109/20112132yo0WdPRNBI.png
  4. Acyclic-graph directories:
    非循環式圖形目錄,他能共享子目錄跟檔案,也就是說會有別名。
    https://ithelp.ithome.com.tw/upload/images/20181109/20112132h43Kofifqq.png
  5. General graph directories:
    一般的圖形目錄,就是有迴圈存在。如果我們不想要有迴圈,那就要規定link只能指向檔案,不能指向子目錄。或是當有新的link加入時,用cycle detection演算法看有沒有迴圈產生。
    https://ithelp.ithome.com.tw/upload/images/20181109/20112132N1uBhbaf7y.png
    剩下的我們明天繼續~~

上一篇
第二十四天 Virtual Memory(虛擬記憶體)--(四)
下一篇
第二十六天 File System(檔案系統)--下
系列文
OS作業系統學習30

尚未有邦友留言

立即登入留言