講解Unix內(nèi)核超級塊知識(shí)
我們今天要涉及的知識(shí)是Unix內(nèi)核,所有的Unix內(nèi)核都同宗同源,并且提供相同的API,現(xiàn)代的Unix內(nèi)核存在許多設(shè)計(jì)上的相似之處。今天,我們就來介紹關(guān)于Unix內(nèi)核超級塊的知識(shí),我們下面就來看看吧!
Unix內(nèi)核超級塊
Unix內(nèi)核超級塊由以下字段組成:
1,文件系統(tǒng)的規(guī)模
2,文件系統(tǒng)中空閑塊的數(shù)目
3,文件系統(tǒng)上可用的空閑塊表
4,空閑塊表中下一個(gè)空閑塊的下標(biāo)
5,索引結(jié)點(diǎn)表的大小
6,文件系統(tǒng)中空閑索引結(jié)點(diǎn)號(hào)表
7,文件系統(tǒng)中空閑索引結(jié)點(diǎn)的數(shù)目
8,空閑索引結(jié)點(diǎn)表中下一個(gè)空閑索引結(jié)點(diǎn)的下標(biāo)
9,空閑塊表的鎖字段和空閑索引結(jié)點(diǎn)表的鎖字段
10,用來標(biāo)識(shí)超級塊已經(jīng)被修改的標(biāo)志
注意:6中提到的空閑索引結(jié)點(diǎn)號(hào)表位于文件系統(tǒng)中,它與內(nèi)存中的空閑索引結(jié)點(diǎn)表不同。
下面介紹Unix內(nèi)核是如何為新的文件分配索引結(jié)點(diǎn)的,前面我們知道Unix內(nèi)核是通過iget算法得到已經(jīng)存在的文件的索引結(jié)點(diǎn),這里Unix內(nèi)核通過ialloc算法來為新文件分配索引結(jié)點(diǎn)。文件系統(tǒng)包含一個(gè)線性的索引結(jié)點(diǎn)表。
當(dāng)結(jié)點(diǎn)的類型字段為0時(shí),此索引結(jié)點(diǎn)為空閑,也就是說沒有文件占用此結(jié)點(diǎn)。當(dāng)進(jìn)程創(chuàng)建新文件需要索引結(jié)點(diǎn)時(shí),如果進(jìn)行線性的搜索而獲得,其代價(jià)過高了。為此,unix在超級塊里包含了一個(gè)數(shù)組,把空閑的索引結(jié)點(diǎn)號(hào)緩沖起來。等到需要的時(shí)候,在此表中取用空閑的號(hào)對應(yīng)的索引結(jié)點(diǎn),提高了效率。
當(dāng)空閑索引結(jié)點(diǎn)號(hào)表為空時(shí),此時(shí)緩沖起來的空閑索引結(jié)點(diǎn)被用完,Unix內(nèi)核重新在磁盤上搜索空閑的結(jié)點(diǎn)來填滿空閑索引結(jié)點(diǎn)號(hào)表,搜索完成后內(nèi)核將“銘記”住填滿的空閑索引結(jié)點(diǎn)號(hào)表里最大的元素,以便下次搜索時(shí)即從該號(hào)往后搜索。
當(dāng)Unix內(nèi)核釋放一個(gè)索引結(jié)點(diǎn)(調(diào)用ifree算法),即該索引結(jié)點(diǎn)的所有聯(lián)結(jié)變?yōu)?時(shí),Unix內(nèi)核把此結(jié)點(diǎn)號(hào)與“銘記”索引結(jié)點(diǎn)號(hào)比較,如果結(jié)點(diǎn)號(hào)小于“銘記”號(hào),則使“銘記”號(hào)=該結(jié)點(diǎn)號(hào),這樣做的目的是為了防止遺漏空閑的索引結(jié)點(diǎn)。理論上,這樣做空閑索引結(jié)點(diǎn)號(hào)永遠(yuǎn)都在超級塊的空閑索引結(jié)點(diǎn)號(hào)表里,但例外是有的。
接下來著重討論ialloc算法,當(dāng)超級塊上了鎖,此時(shí)進(jìn)入睡眠(sleep),直到超級塊可用,然后檢查是否有空閑索引結(jié)點(diǎn)號(hào)緩沖著,如果沒有,將Unix內(nèi)核超級塊上鎖,搜索磁盤索引結(jié)點(diǎn)表填充空閑索引結(jié)點(diǎn)號(hào)表,然后為超級塊解鎖。在空閑索引結(jié)點(diǎn)號(hào)表里取得一個(gè)號(hào),將空閑結(jié)點(diǎn)的數(shù)目減一,然后調(diào)用iget算法,得到索引結(jié)點(diǎn),并將結(jié)點(diǎn)調(diào)入內(nèi)存完成對它的初始化,然后返回索引結(jié)點(diǎn)。
這樣,我們就對Unix內(nèi)核的知識(shí)基本上介紹的差不多了,如果大家還有問題,那我們會(huì)幫助大家一起來解決的。
【編輯推薦】