【我的筆記】文件系統(tǒng)(二)文件系統(tǒng)、管理操作、存取方式

(一)文件系統(tǒng)

文件系統(tǒng)組成:駐留在外存中的數(shù)據(jù)管理結(jié)構(gòu)(最基礎(chǔ));駐留在內(nèi)存中的數(shù)據(jù)管理結(jié)構(gòu);文件系統(tǒng)的管理程序代碼。

外存數(shù)據(jù)的損壞會導(dǎo)致文件系統(tǒng)的損壞。

1、外存數(shù)據(jù)結(jié)構(gòu)

Linux稱他的外存數(shù)據(jù)結(jié)構(gòu)為超級塊。

(1)EXT文件系統(tǒng)將分區(qū)劃分成塊組(Block Group)每個塊組對應(yīng)一組連續(xù)的存儲塊。

(2)FAT文件系統(tǒng)在外存的布局

FAT文件系統(tǒng)中,一個目錄項就是一個文件控制塊,目錄是文件控制塊的有序集合。一個文件只能有一個名字。

(3)NTFS在外存的布局

、主文件名、系統(tǒng)文件、文件區(qū)

(4)Ucore的SFS文件系統(tǒng)

2、內(nèi)存數(shù)據(jù)結(jié)構(gòu)

(1)內(nèi)存數(shù)據(jù)結(jié)構(gòu)是文件系統(tǒng)及其管理對象在內(nèi)存的表示,其數(shù)據(jù)來源于外存數(shù)據(jù)結(jié)構(gòu)。

內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)是用戶最近使用的文件系統(tǒng)在內(nèi)存中的表示,包括:文件系統(tǒng)結(jié)構(gòu)、FCB、目錄項、打開的文件對象。(具體實現(xiàn)函數(shù)等見ppt)

(2)系統(tǒng)中可能同時存在多種文件系統(tǒng),統(tǒng)一文件系統(tǒng)的一種方式是建立虛擬文件系統(tǒng)VFS(Virtual File System)略

3、管理程序

安裝 eg:把bin下的安裝到user中,則user跟bin中一樣,原來的不在。 安裝 --> 目錄樹直接拿過去。若再卸載一下,user中原來的內(nèi)容又出現(xiàn)了。


(二)文件系統(tǒng)管理操作(結(jié)合Ucore)

略寫,只記錄有點知識點。

(1)128M的sts.img做SFS的磁盤,第0塊為超級塊 --> 根目錄 --> 塊位圖 --> 文件。

磁盤文件sts.img的格式

連續(xù)存儲(預(yù)先寫入,也不允許新建)。

從“.”到“..”再往下找到目錄項,看到名字是它,就看i節(jié)點的位置。

(2)安裝

使用文件系統(tǒng)之前,必須先在內(nèi)存中建立該文件系統(tǒng)的管理結(jié)構(gòu)。建立文件系統(tǒng)管理結(jié)構(gòu)的過程稱為安裝。

安裝的目的--> 建立文件系統(tǒng)的超級結(jié)構(gòu)塊,并將其根目錄嫁接在安裝點目錄之上,形成一個全局統(tǒng)一的文件視圖。

ucore只有一種文件系統(tǒng)SFS。

mksfs(創(chuàng)建文件系統(tǒng)) --> sfs.img(即為disk0)。

安裝(建立fs結(jié)構(gòu)) --> 結(jié)構(gòu)信息從disk0中來。

根據(jù)外存把內(nèi)存文件系統(tǒng)管理結(jié)構(gòu)建立起來。文件所有管理結(jié)構(gòu)串成一個隊列,同時存到hash表中方便查找。

多文件系統(tǒng) --> 把這棵樹 dsk1拼到 dsk0中,用其根目錄覆蓋安裝點 --> 全部就一棵樹

文件系統(tǒng)只能由超級用戶安裝。

最早的安裝點是靜態(tài)做的rootfs,僅有一個根目錄,名為“/”,父目錄是自己,其 inode 號是0。建立在內(nèi)存塊設(shè)備之上,設(shè)備號是0,塊大小是4096.

(3)文件增長時,要為其分配邏輯塊——ucroe 從低到高搜索文件系統(tǒng)的塊位圖

文件長度縮短或刪除時,要釋放邏輯塊。

由于 indirect 塊在內(nèi)存中沒有緩存,對它的修改要立刻寫回磁盤。

邏輯塊分配的原則 —— 盡力維持文件在塊設(shè)備上的連續(xù)性。

SFS 沒有考慮這個問題;

EXT 引入預(yù)分配機制——為每個文件建立一個預(yù)分配窗口(保證各文件的預(yù)分配窗口互不重疊,但不保證其中的邏輯快是空閑的)

這個窗口沒有了就去下一個:

預(yù)分配窗口僅僅限定了搜索范圍,其中的邏輯塊并未真正分配給文件。動態(tài)創(chuàng)建,尺寸動態(tài)調(diào)整(8~1027)。

Lazy,第一次訪問該文件時再創(chuàng)建根目錄 inode。訪問文件前,需解析路徑名,找到與之對應(yīng)的 FCB,并為其創(chuàng)建inode 結(jié)構(gòu)。

(4)解析路徑名

絕對路徑名 & 相對路徑名(上一講)

路徑名解析的開始位置就是參考點。整個路徑名解析過程就是遞歸的。

如果某個目錄項的名字與路徑名相同,就可以獲得其 ino 號(邏輯塊號,對應(yīng)的邏輯塊中只有一個 sfs_disk_inode 結(jié)構(gòu)),將sfs_disk_inode 結(jié)構(gòu)讀出,可以為其創(chuàng)建一個 inode 結(jié)構(gòu)。

當(dāng) inode 的引用計數(shù)變成0時,說明文件已無用戶,應(yīng)釋放掉它的 inode 結(jié)構(gòu)。

(5)Linux 文件管理操作流程


(三)

1、文件邏輯結(jié)構(gòu)

文件系統(tǒng)本身關(guān)心的是文件的屬性及存儲位置,用戶關(guān)心的是文件的邏輯結(jié)構(gòu)。

文件的物理結(jié)構(gòu)描述文件在外存的存儲方法;目錄結(jié)構(gòu)描述一組文件的組織方法;文件邏輯結(jié)構(gòu)描述文件內(nèi)容的組織方法。

(1)堆結(jié)構(gòu)(pile)——數(shù)據(jù)順序堆在一起,按序搜索、使用文件。

(2)順序結(jié)構(gòu)

若記錄按鍵值排序,可用折半查找方法定位記錄,搜索塊。

(3)帶索引順序結(jié)構(gòu)

順序結(jié)構(gòu)基礎(chǔ)上:增加索引表(根據(jù)鍵值建索引);增加溢出文件(存儲新增加的記錄)

溢出文件中的記錄定期合并到主文件上。

(4)多索引結(jié)構(gòu):根據(jù)不同域為一個文件建立多個索引,每個索引針對一個域。

(5)Hash結(jié)構(gòu)

hash 結(jié)構(gòu)的文件中,每個記錄需要一個主鍵,記錄存儲的位置時由 hash 函數(shù)根據(jù)主鍵值計算得到的。可能有多個記錄的 hash 值相同,所以用一個溢出文件保存 hash 值相同的記錄。

2、文件存取方式

文件系統(tǒng)不關(guān)心文件的邏輯結(jié)構(gòu),通常將文件看成是一組連續(xù)的字節(jié)(字節(jié)流),或者一個字節(jié)數(shù)組。每個字節(jié)有自己的地址(相對文件開始地址的偏移量)。

連續(xù)是指下一字節(jié)的偏移量是上一字節(jié)的偏移量+1,不管物理上這些字節(jié)在什么位置。

文件存取方式:①順序存取(缺省);②隨機存取

文件存取方式與外存特性有關(guān):磁帶——順序存取;磁盤——即可順序存取,也可隨機存取

文件存取方式與文件邏輯結(jié)構(gòu)有關(guān):堆和順序結(jié)構(gòu)——順序存取;索引和 hash——課順序也可隨機

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內(nèi)容