<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Linux內(nèi)核學(xué)習(xí):虛擬文件系統(tǒng)

          共 1583字,需瀏覽 4分鐘

           ·

          2021-04-24 00:34

          關(guān)注「開(kāi)源Linux」,選擇“設(shè)為星標(biāo)”
          回復(fù)「學(xué)習(xí)」,有我為您特別篩選的學(xué)習(xí)資料~

          Linux的成功因素之一是它具有與其它操作系統(tǒng)和諧共存的能力,其中代表作之一就是虛擬文件系統(tǒng)(VFS)。

          VFS的思想是把不同類型文件的共同信息放入內(nèi)核,具體思路是通過(guò)Linux在用戶進(jìn)程(或C庫(kù))和文件系統(tǒng)之間引入了一個(gè)抽象層,該抽象層稱之為虛擬文件系統(tǒng)(VFS)。

          VFS的任務(wù)主要是提供一種操作文件、目錄以及其他對(duì)象的統(tǒng)一方法還有它必須能夠與各種方法給出的具體文件系統(tǒng)實(shí)現(xiàn)達(dá)成妥協(xié)。

          虛擬文件系統(tǒng)的類型

          VFS的類型主要分三種:

          • 基于磁盤(pán)的文件系統(tǒng):是在非易失介質(zhì)上存儲(chǔ)文件的經(jīng)典方法,用以在多次會(huì)話之間保持文件的內(nèi)容。

          • 特殊文件系統(tǒng):在內(nèi)核中生成,是一種使用用戶應(yīng)用程序與用戶通訊的方法。它位于內(nèi)核軟件層,用來(lái)處理與Unix標(biāo)準(zhǔn)文件系統(tǒng)相關(guān)的所有系統(tǒng)調(diào)用(Linux的 proc文件系統(tǒng)就是這一類的最佳示例)

          • 網(wǎng)絡(luò)文件系統(tǒng):是基于磁盤(pán)文件系統(tǒng)和虛擬文件系統(tǒng)之間的折中,這些文件系統(tǒng)允許輕易訪問(wèn)屬于其它網(wǎng)絡(luò)計(jì)算機(jī)的文件系統(tǒng)所包含的文件(常見(jiàn)的網(wǎng)絡(luò)文件系統(tǒng)有:NFS、Coda、AFS、CIFS、NCP等)

          通用文件模型

          通用文件模型嚴(yán)格反映傳統(tǒng)Unix文件系統(tǒng)的文件模型,從本質(zhì)上,Liunx不能對(duì)一個(gè)特點(diǎn)的函數(shù)進(jìn)行硬編碼來(lái)執(zhí)行諸如read() 和 ioctl() 這類的操作,而是對(duì)每個(gè)操作都必須使用一個(gè)指針,指向要訪問(wèn)的具體文件系統(tǒng)的適當(dāng)函數(shù)。通過(guò)通用文件模型,VFS使得用戶可以直接使用open()、read()、write() 這樣的調(diào)用而無(wú)須考慮具體這樣的文件系統(tǒng)。

          VFS采用了面向?qū)ο蟮脑O(shè)計(jì)思路,使用了一組數(shù)據(jù)結(jié)構(gòu)來(lái)表示通用文件對(duì)象,這些對(duì)象組成了Linux的通用文件模型。

          1)超級(jí)快對(duì)象(superblock object):存放已安裝文件系統(tǒng)有關(guān)的信息

          superblock的數(shù)據(jù)結(jié)構(gòu)

          2)索引節(jié)點(diǎn)對(duì)象(inode object):存放具體文件的一般信息(內(nèi)核在操作文件或目錄時(shí)需要的全部信息)。一個(gè)索引節(jié)點(diǎn)代表文件系統(tǒng)中的一個(gè)文件,但是索引節(jié)點(diǎn)僅當(dāng)文件被訪問(wèn)時(shí),才在內(nèi)存中創(chuàng)建。

          inode的數(shù)據(jù)結(jié)構(gòu)

          3)文件對(duì)象(file object):它代表由進(jìn)程打開(kāi)的文件。這類信息僅當(dāng)進(jìn)程訪問(wèn)期間存在于內(nèi)核內(nèi)存中。文件對(duì)象(不是物理文件)由相應(yīng)的open()系統(tǒng)調(diào)用創(chuàng)建,由close()系統(tǒng)調(diào)用撤銷。

          file的數(shù)據(jù)結(jié)構(gòu)

          4)目錄項(xiàng)對(duì)象(dentry object):不是指目錄,VFS把目錄作為一個(gè)文件看待,這里的目錄項(xiàng)對(duì)象指的是路徑的一個(gè)組成部分,與對(duì)應(yīng)文件進(jìn)行鏈接的有關(guān)信息。

          dentry的數(shù)據(jù)結(jié)構(gòu)

          VFS對(duì)象之間的關(guān)系如下:

          進(jìn)程與VFS對(duì)象之間的交互如下:

          目錄項(xiàng)目高速緩存(dcache)

          為了最大限度地提高處理目錄項(xiàng)對(duì)象的效率,Linux使用目錄項(xiàng)高速緩存,它由2種類型的數(shù)據(jù)結(jié)構(gòu)組成:

          • 一個(gè)處于正在使用未使用負(fù)狀態(tài)的目錄對(duì)象的集合:正在使用和未使用的目錄項(xiàng)對(duì)象對(duì)應(yīng)一個(gè)有效的索引節(jié)點(diǎn),負(fù)狀態(tài)的目錄項(xiàng)對(duì)象沒(méi)有對(duì)應(yīng)的有效索引節(jié)點(diǎn)

          • 一個(gè)散列表,從中能夠快速獲取與給定的文件名和目錄名對(duì)應(yīng)的目錄項(xiàng)對(duì)象。

          小結(jié)

          VFS是一個(gè)膠水層,位于內(nèi)核的底層和用戶層之間。它提供了各種抽象數(shù)據(jù)結(jié)構(gòu)來(lái)表示文件和inode。而真實(shí)文件系統(tǒng)必須填充這些結(jié)構(gòu),使得應(yīng)用程序無(wú)需考慮底層文件系統(tǒng),總是可以使用同樣的接口訪問(wèn)和操作文件。

          原文鏈接:https://lihaoquan.me/2019/2/16/linux-vfs.html

          關(guān)注「開(kāi)源Linux」加星標(biāo),提升IT技能

          瀏覽 34
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  性欧美18 | 国产又黄又粗 | 成人AV三级片 | 一级免费黄片 | 豆花在线国产 |