16-目錄與文件系統

我們在使用計算機的時候,用戶看到的磁盤就是一個文件目錄的結構(文件樹),因此需要磁盤被抽象成一個文件系統,最後一層抽象就是實現文件到磁盤的映射關係。

用戶眼裏的磁盤是堆樹結構的有組織的文件。文件系統就是實現文件到盤塊的映射。

目錄樹結構優點:易於分類,且拓展性好,每個節點就是一個目錄
我們如何使用目錄呢:/my/data/a 定位文件a,即通過文件路徑名找到文件,更準確地說是通過文件路徑找到文件a的FCB(文件控制塊)。

因此我們需要做的就是實現文件路徑名到文件FCB的映射,實現這個需求需要明確兩個問題

  • 每一級目錄(樹節點)存放着什麼信息
  • 磁盤塊又要存放什麼信息來實現目錄結構

因爲我們需要通過比較文件名才能找到文件,所以目錄中要存放子目錄的文件名,然後我們還需要在磁盤中操作該文件,因此還需要存子目錄的FCB。但實際上我們只需要比較一個文件名,卻讀取了大量的FCB,這毫無疑問是一種浪費。因此根據索引的思想,我們可以在目錄中存放子目錄名+該目錄對應的FCB地址。這裏的地址可以是一個索引,目錄裏存的就是<文件名:索引值>,實現這一索引結構,需要磁盤配合,需要磁盤劃分一塊連續的區域來存放FCB塊,這樣就能建立索引值到FCB地址的映射,類似於數組的下標訪問。因爲根目錄沒有上一級目錄來保存它的索引值,因此需要在磁盤中找一個固定的地址存放根目錄,因此上面兩個問題明確後就是:

  1. 目錄中存放子目錄的文件名喝子目錄FCB的索引值
  2. 磁盤塊要劃分一段連續的區域專門存放FCB塊,並定義一個初始地址作爲根目錄的索引。

磁盤的劃分結構如下:

innode位圖:哪些inode空閒,哪些被佔用
盤塊位圖:哪些盤塊是空閒的,硬盤大小不同這個圖的大小也不同
超級塊:記錄兩個位圖有多大等信息。

完成全部多級抽象(映射)下的磁盤使用如下圖所示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章