1. 程式人生 > >深入理解Linux核心個人小結12---虛擬檔案系統

深入理解Linux核心個人小結12---虛擬檔案系統

一.  綜述:

      虛擬檔案系統(VFS):是一個核心軟體層,用來處理與Unix檔案系統相關的所有系統呼叫;可看作是一個通用的檔案系統,必要時可以依賴某種具體的檔案系統呼叫其底層函式。

     快取記憶體的種類:

      1.  硬體快取記憶體: 一個快速的靜態RAM,其加快了直接對慢速RAM的請求。

      2. 記憶體快取記憶體:一種軟體機制,引入它是為了繞過核心記憶體分配器(slab分配器)。

      3. 磁碟快取記憶體:一種軟體機制,其允許原先在磁碟上的某些資訊儲存在RAM上,以加快磁碟的訪問速度。主要有:索引節點快取記憶體,目錄項快取記憶體,頁快取記憶體等。

     VFS的主要結構:

        超級塊物件:存放已安裝檔案系統的相關資訊,對應存放於磁碟上的檔案系統控制塊。

       索引節點物件:存放具體檔案的一般資訊,對應於存放在磁碟上的檔案控制塊。每個索引節點都有一個索引節點號來唯一地標識此檔案。

       檔案物件:存放開啟檔案與程序之間進行互動相關的資訊。僅當程序訪問檔案期間存在核心記憶體中,磁碟上無映像。

       目錄項物件:存放目錄項與對應檔案進行連結的有關資訊,目錄項在磁碟上無對應的映像,目錄項物件存放在對應的slab快取記憶體中。

二.  檔案系統型別

      特殊檔案系統提供一種方式來操作核心資料結構,並實現作業系統的特殊特徵。

     檔案系統型別註冊: file_system_type物件 加入到對應的連結串列。

     檔案系統的操作及其實現:名稱空間,安裝(層層覆蓋的方式),解除安裝。

     路徑名查詢:充分利用目錄項快取記憶體,考慮以下因素: 許可權/符號連結/檔案系統切換/程序名稱空間等四種情況。

三.  檔案加鎖機制: