linux虛擬文件系統-以ext2爲例

介紹一下文件系統,本文的下限是對文件系統的一些概念進行介紹,並且存一下有用的圖,上限是對ext2進行一個比較細緻的分析。如果有任何問題,大家可以看一下諸如《現代操作系統》,《深入理解linux內核》,事實上本文也是這些書的讀書筆記。

1文件系統

1 文件系統是方便對磁盤管理的一個操作系統提供的功能, 一個磁盤,他的所有磁頭的運動,都由設備控制器管理(可以理解爲一個小型的嵌入式計算機),這個設備控制器和 設備驅動的聯繫是通過 sata口。我們用c語言open一個文件,這個open是glic函數,他會調用相應的系統調用,然後操作系統有專門的代碼會控制設備驅動,從而處理相應操作。

2VFS (虛擬文件系統)

vfs是對文件系統的封裝。一個磁盤可以有好多文件系統在這裏插入圖片描述
比如說:在這裏插入圖片描述
可以說這樣,
cp /floppt/TEST /tmp/test
一個複製指令。相當於這些代碼(這些代碼執行的底層和這個shell語句是否一樣,我不清楚,不過我覺得應該差不多,因爲他們底層都是vfs 提供的,shell語句只是方便和系統說話)

3.文件系統四大對象

3.1inode(索引節點)

遠古思想1 一開始對磁盤空間的使用是順序使用,那麼會產生許多縫隙。(文件大小順序 5 1 8 ,你把1大小的文件刪除了,那麼這個空隙不好填補)。
遠古思想2:用鏈表分配(好像內存池。。 ),但是如果磁盤太大,那麼這個表也很大。。也不行。
所以使用inode。一個文件一個inode。inode最基本的東西就是文件所在的塊。
在這裏插入圖片描述
ext2中的inode有什麼:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
沒有找到指向數據塊的指針。。(但是有指向頁塊的指針)。。我猜測(文件系統四大對象包括兩種,即內存中和硬盤中的,比如說inode,在磁盤中有存儲,當讀到特定文件時,會把他的inode加載出來,放到內存中。所以說如果在硬盤中,指向頁塊的指針就會指向數據塊了。。

3.2 super block(超級塊)

超級塊保存的是具體文件系統的操作,比如說你的文件系統有ext2,ext4,每一個文件系統都有不同,所以有不同的super block(這個塊中有一個 操作函數集合,是具體文件系統 操作的函數指針)
值得一提的是 ext2在磁盤中對super block保存了好多副本,可見很重要。
在這裏插入圖片描述

3.3 dentry(目錄項)

超級塊,索引節點,在磁盤中都是有具體存儲的,dentry卻不一樣,是沒有的。因爲ext2把dentry也當成了一個inode。
所以說我們以爲的目錄樹形結構,僅僅在內存中。(爲了效率它使用了哈希表也不是樹,哈哈)
給大家看一個東西
在這裏插入圖片描述
這是作爲dentry的inode在磁盤中的存儲(有colossal等三個目錄項)。
目錄分析過程:
如果我們的地址是 /colossal/…,那麼他會載入colossal這個inode,然後繼續遞歸,現實中這樣真的太慢了,磁盤搞好多次,所以高速目錄緩存就很有必要,還有hash表,能夠很快的映射 文件地址和 具體inode的關係。 還有就是你看 這個目錄分析,最後得到inode,就算得到文件了,inode就是文件的元數據,這點很重要

3.4,文件對象

文件對象也是很重要滴。因爲假設好幾個對象使用一個文件有的需要頭部有的需要尾部。,那麼我們需要存好幾個文件指針。就存在文件對象裏。
我們都知道文件描述符是 PCB(進程控制塊)中一個文件描述符哈希表的key值,那麼他的value 就是指向的具體的 文件對象。哈哈,我就是因爲這個圖,才寫的這個筆記。
在這裏插入圖片描述
i節點就是 內存中inode節點。
還有這圖,你還能知道超級塊的作用
在這裏插入圖片描述

總結

1 不同的文件有不同inode,比方說pipe(無名管道)的inode就和別處不同。
在這裏插入圖片描述
2 整個vfs是面向對象的思想。
3 本文介紹的ext4是inode型文件系統,所以inode,dentry都有存,但是對於日誌型文件系統,他也要有相似的東西來供vfs使用。滿足vfs的接口規則。

不足之處

我一直不想寫這個,就是因爲這個東西可深可淺,學內核分析的可能覺得不夠用(具體inode裏的好多東西我也不太知道) ,1 但是有關 鎖方面的應該補一下(因爲這種 控制我覺得和IPC或許有點關係) 。2 希望早點學好pythonfuse,好好看一下這個。3 在寫一個關於日誌型文件系統的小介紹。這點就算完了。如果有什麼問題交流,歡迎大家留言。3本文所有圖都在《現代操作系統》和《深入理解linux內核》這兩本書裏的文件系統介紹裏。

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