iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 28
0
自我挑戰組

作業系統概論系列 第 28

DAY 28 Implementing File Systems(檔案系統執行) (上)

  • 分享至 

  • xImage
  •  

昨天我們結束了檔案系統的觀念,今天開始我們來看看要如何執行檔案系統吧!

先來看看架構吧!

  • File-System Structure:
  1. 在前一章有說到檔案是放置在硬碟中,像是UNIX就把所有device當作是檔案在處理。
  2. 檔案是個邏輯儲存單位(logical storage unit),所以需要將訊息做管理。所以我們可以將檔案看成是一個有邏輯的架構,也和process一樣有file control block,其定義就是關於一個檔案的所有資訊集合區塊。
  • Layered File System:
    https://ithelp.ithome.com.tw/upload/images/20181112/20112086ALYeKuYx1g.png
  • In-Memory File System Structure:
  1. 我們用圖來解釋OS提供的必要檔案系統架構:
    https://ithelp.ithome.com.tw/upload/images/20181112/20112086hCJHHOY72U.png
    ==>在(b)圖中,每個process中都有個file table在PCD中,而在PCD中可以知道需要open哪些檔案然後再去讀取資料。

Virtual File Systems

  • 很多不同的檔案系統是使用相同的介面跟OS進行溝通,所以為了方便操作管理,OS便提供了Virtual File Systems(VFS)。
  • VFS的功能就是把這些檔案系統的儲存位置、細節資訊等給隱藏起來,讓OS在呼叫各個檔案時能更有效率。而VFS同時也允許相同的system call介面使用在不同種類的檔案系統上。
    https://ithelp.ithome.com.tw/upload/images/20181112/20112086pp8m4oiWVf.png
    Directory Implementation
  • 在一個目錄下面有很多的data blocks,它們之間用linear list連起來,是種編程簡單卻也是執行很耗時的方法。
  • 另一種方法則是使用前幾章提過的Hash Table。此方法適合在大型程式中使用,因為其所需的空間大,但搜尋速度卻使最快、最有效率的。但若空間不足便會產生collision的現象,也就是說因為空間不足的關係,所以在相同位置的不同檔案會互相碰種,只為取得足夠的空間使用。

明天將談到分配方法有哪些,就讓我們拭目以待吧!


上一篇
DAY 27 File System(檔案系統) (下)
下一篇
DAY 29 Implementing File System(檔案執行系統) (中)
系列文
作業系統概論30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言