linux vfs 根节点名称,Linux:文件,目录项,索引节点,超级块,VFS,具体文件系统...
【筆記:http://m.blog.csdn.net/blog/zhouzhou135】
在了解文件系統(tǒng)之前,先了解磁盤格式化的知識(shí)。
所以要理解文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),要從兩個(gè)方向來理解:
1:磁盤中的數(shù)據(jù)結(jié)構(gòu):因?yàn)樵诖疟P格式化的時(shí)候,操作系統(tǒng)將初始的文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)寫到磁盤上。這些數(shù)據(jù)結(jié)構(gòu)包括空閑和已分配的空間(FAT或者iNode)和一個(gè)初始為空的目錄。
2:內(nèi)存中的數(shù)據(jù)結(jié)構(gòu):
文件管理是操作系統(tǒng)的主要任務(wù)之一,也是平常編程中經(jīng)常涉及的一個(gè)知識(shí)點(diǎn)。
先參考維基百科了解什么是文件系統(tǒng),引入文件系統(tǒng)的目的是什么,文件系統(tǒng)的職責(zé)是什么。
簡(jiǎn)言之:文件系統(tǒng)是為了方便用戶管理硬盤和光盤等物理設(shè)備中的數(shù)據(jù)而引入的這么一個(gè)邏輯上的概念。
假設(shè)沒有文件系統(tǒng),那么對(duì)用戶而言:
讀數(shù)據(jù)的時(shí)候:必須要知道這個(gè)數(shù)據(jù)塊保存在光盤或者磁盤的具體哪個(gè)扇區(qū)上,然后要讀取多長的記錄。
寫數(shù)據(jù)的時(shí)候:必須要知道哪些磁盤塊是空閑的以便寫入數(shù)據(jù)。
同時(shí)用戶必須自己保存數(shù)據(jù)和磁盤塊之間的映射信息,以便讀寫的時(shí)候知道從哪個(gè)磁盤地址開始讀寫。
于是用戶就幻想說要是有這樣一個(gè)中間者就好了:
讀的時(shí)候,我把數(shù)據(jù)名給中間者,中間者直接給我具體的磁盤數(shù)據(jù),而不是我自己去磁盤上找。
寫的時(shí)候,我把要寫的數(shù)據(jù)給中間者,中間者具體負(fù)責(zé)寫到磁盤上的某個(gè)位置。
這樣的話,這個(gè)中間者必須維護(hù)某個(gè)數(shù)據(jù)名與磁盤位置的映射關(guān)系。而用戶只需要和某個(gè)數(shù)據(jù)名(邏輯名字)打交道,而不用關(guān)心這個(gè)邏輯名字代表的數(shù)據(jù)在物理上的具體存儲(chǔ)位置。
用戶 ——> 具體的磁盤或光盤
用戶 ——> 中間者提供的接口 ——> 具體的磁盤或者光盤
也就是說,有了中間者,用戶只需要和中間者提供的接口打交道,而不再與具體的物理設(shè)備耦合。
最后為了方便,大家說咱們?nèi)∫粋€(gè)統(tǒng)一的名字吧,于是出現(xiàn)了一下稱呼:
文件系統(tǒng):代表這個(gè)中間者。最終映射到計(jì)算機(jī)上,這個(gè)文件系統(tǒng)的實(shí)現(xiàn)會(huì)表現(xiàn)為具體的程序代碼。
文件:代表存儲(chǔ)在某種長期儲(chǔ)存設(shè)備或臨時(shí)存儲(chǔ)設(shè)備中的一段數(shù)據(jù)流。雖然一個(gè)文件表現(xiàn)為一個(gè)單一的流,但它經(jīng)常在磁盤不同的位置存儲(chǔ)為多個(gè)數(shù)據(jù)碎片(甚至是多個(gè)磁盤)。
一個(gè)代表數(shù)據(jù)名的結(jié)構(gòu) ——> 一個(gè)封裝了磁盤塊信息的結(jié)構(gòu)。
比如說數(shù)據(jù)名dataone在硬盤的a分區(qū)的b位置開始,長度為3個(gè)磁盤塊。
如果不引入樹形結(jié)構(gòu)的這個(gè)方式的話,那么數(shù)據(jù)a,數(shù)據(jù)b,數(shù)據(jù)c,數(shù)據(jù)d, 數(shù)據(jù)abc就很容易重名。于是就映入了樹形結(jié)構(gòu)的命名空間。
在文件系統(tǒng)中,文件名是提供給用戶標(biāo)志他存放在磁盤上的某個(gè)數(shù)據(jù)的。
APUE:p56 文件共享 打開文件的內(nèi)核數(shù)據(jù)結(jié)構(gòu)。
APUE:p86 文件系統(tǒng)
Linux高級(jí)程序設(shè)計(jì):
進(jìn)程打開文件的內(nèi)核數(shù)據(jù)結(jié)構(gòu)。p101
VFS虛擬文件系統(tǒng) p129
概述
VFS中的數(shù)據(jù)結(jié)構(gòu)
超級(jí)塊
VFS的索引節(jié)點(diǎn)
目錄項(xiàng)對(duì)象
與進(jìn)程相關(guān)的文件結(jié)構(gòu)
主要數(shù)據(jù)結(jié)構(gòu)間的關(guān)系
有關(guān)操作的數(shù)據(jù)結(jié)構(gòu)
如何實(shí)現(xiàn)一個(gè)文件系統(tǒng)
struct stat、struct inode 、struct file?的關(guān)系
===========================================
參考《操作系統(tǒng)概念(第七版)》第四部分 存儲(chǔ)管理,先弄清文件、目錄的概念。
文件:
目錄:可以實(shí)現(xiàn)為一張表,里面保存了數(shù)條文件名和該文件名對(duì)應(yīng)的索引信息的映射關(guān)系。其中的每一項(xiàng)叫做目錄項(xiàng)。
打開文件表:因?yàn)槊看螌?duì)文件讀、寫等操作都要涉及到去目錄中搜索對(duì)應(yīng)的文件名對(duì)應(yīng)的所有信息,因此非常耗時(shí),為避免該問題,系統(tǒng)維護(hù)了一個(gè)包含所有打開文件的信息表。參考P323
多個(gè)進(jìn)程打開同一文件的處理方法?p324?系統(tǒng)范圍內(nèi)的系統(tǒng)打開文件表 vs 每個(gè)進(jìn)程的進(jìn)程打開文件表
a,b,...進(jìn)程的進(jìn)程打開文件表→系統(tǒng)打開文件表(保存進(jìn)程無關(guān)的信息)→目錄→具體的物理設(shè)備
這些內(nèi)容在《現(xiàn)代操作系統(tǒng)(原書第3版)》p446有詳細(xì)描述。
===========================================
參考《現(xiàn)代操作系統(tǒng)(原書第3版)》第4章 文件系統(tǒng):★★★★★
文件:是為了解決進(jìn)程存儲(chǔ)信息時(shí)遇到的一些問題而建立的一種抽象。文件時(shí)進(jìn)程創(chuàng)建的信息邏輯單元。
p153 文件系統(tǒng)在磁盤上的布局
p156:物理inode
p161 : 虛擬文件系統(tǒng),open系統(tǒng)調(diào)用在VFS中的過程。
p179 :Unix v7文件系統(tǒng):open系統(tǒng)調(diào)用時(shí)查找iNode的過程。
p440:Linux文件系統(tǒng)
p445 :SuperBlock、Dentry、Inode、File對(duì)象
p448:文件描述符表、打開文件描述符表、INode表之間的關(guān)系
深入理解磁盤文件系統(tǒng)之inode:http://www.cnblogs.com/thinksasa/archive/2013/04/10/3013445.html
一天一點(diǎn)學(xué)習(xí)Linux之認(rèn)識(shí)文件系統(tǒng):http://www.opsers.org/base/the-knowledge-that-one-day-learn-linux-file-system.html
一天一點(diǎn)學(xué)習(xí)Linux之Inode詳解:http://www.opsers.org/base/one-day-the-little-learning-linux-inode-detailed.html
===========
VFS中的超級(jí)塊、VFS的索引節(jié)點(diǎn)、目錄項(xiàng)這三個(gè)對(duì)象的理解,結(jié)合視頻12.10中00:06:08處的那張圖,并結(jié)合以下鏈接:
超級(jí)塊
VFS的索引節(jié)點(diǎn)
目錄項(xiàng)對(duì)象
或者《linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》對(duì)應(yīng)部分一起理解。
總結(jié)
以上是生活随笔為你收集整理的linux vfs 根节点名称,Linux:文件,目录项,索引节点,超级块,VFS,具体文件系统...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器raid1重装系统,做软RAID1
- 下一篇: linux 进程崩溃 wait,Linu