知識(shí)講堂Unix內(nèi)核教學(xué)
我們這次主要對(duì)Unix內(nèi)核的知識(shí)進(jìn)行下講解,很多朋友都存在著對(duì)Unix內(nèi)核很茫然的問(wèn)題。Unix內(nèi)核就是用C等語(yǔ)言寫(xiě)的操作系統(tǒng)的內(nèi)核,這里的操作系統(tǒng)就是unix.
1.Unix內(nèi)核正規(guī)的文件結(jié)構(gòu)
索引結(jié)點(diǎn)包含著文件在磁盤(pán)上位置的明細(xì)表。磁盤(pán)的每個(gè)塊都編了號(hào)。在unix系統(tǒng)V中,塊的大小是1k,(在windows里為4k),索引結(jié)點(diǎn)里包含指向各個(gè)數(shù)據(jù)塊的指針,其中有10個(gè)直接塊,1個(gè)1次間接塊,1個(gè)2次間接快,1個(gè)3次間接塊,如果使用到3次間接的話,單個(gè)文件的大小可以最大為16G,存取文件時(shí),內(nèi)核調(diào)用bmap算法將邏輯文件的字節(jié)偏移量映射到文件系統(tǒng)的塊上。
2.Unix內(nèi)核目錄
目錄是使文件系統(tǒng)具有樹(shù)型結(jié)構(gòu)的那些文件。目錄是文件,它只是數(shù)據(jù)是一些目錄表項(xiàng)的文件,每個(gè)目錄表項(xiàng)有他們的索引結(jié)點(diǎn)號(hào)和此目錄下的文件名構(gòu)成,路徑就是有/分割成的各個(gè)獨(dú)立分量構(gòu)成的。
目錄的讀權(quán)限為允許進(jìn)程讀目錄,寫(xiě)權(quán)限為允許進(jìn)程創(chuàng)建子目錄或刪除子目錄,執(zhí)行權(quán)限為允許進(jìn)程尋找文件而搜索整個(gè)目錄。注意:讀權(quán)限與執(zhí)行權(quán)限的區(qū)別。
3.Unix內(nèi)核路徑名到索引結(jié)點(diǎn)的轉(zhuǎn)換
在后面的系統(tǒng)調(diào)用中,如open,對(duì)文件的操作用到的參數(shù)是文件的路徑名。Unix內(nèi)核是通過(guò)一個(gè)名為namei的算法尋著路徑,找到文件的索引結(jié)點(diǎn)。namei算法每次分析一個(gè)路徑名里的分量,根據(jù)名字以及正在搜索的目錄,把每個(gè)分量轉(zhuǎn)化成索引結(jié)點(diǎn),最終返回輸入路徑名的索引結(jié)點(diǎn)。
4.Unix內(nèi)核磁盤(pán)塊的分配
系統(tǒng)的實(shí)用程序mkfs可以生成下圖的數(shù)組鏈,每個(gè)鏈?zhǔn)且粋€(gè)磁盤(pán)塊,塊中包含一個(gè)數(shù)組,分量是空閑的磁盤(pán)塊號(hào)。
在超級(jí)塊中有一磁盤(pán)空閑塊表,里面有空閑的磁盤(pán)塊的編號(hào),與空閑索引結(jié)點(diǎn)號(hào)表一樣是一個(gè)單純的數(shù)組。
表為下面的各鏈中的一條:
=90=86=82=78=74=70=66=62=58=.......=.........
=200=196=192=188=184=180=176=172=.......=........
=400=396=392=388=384=380=.........=................
第2列第一元素的塊號(hào)為90,里面存的塊號(hào)為200,而200里是第三列里的第一個(gè)元素,里面存的自然是下一列元素的第一個(gè)400。當(dāng)?shù)谝涣械膲K分配到86時(shí),才將第一個(gè)元素分配出去,同時(shí)將下一個(gè)鏈讀入超級(jí)塊里的磁盤(pán)空閑塊表里。
unix里廣泛的是用象空閑索引結(jié)點(diǎn)號(hào)表和空閑磁盤(pán)塊號(hào)表這樣的緩沖機(jī)制,提高了系統(tǒng)效率。也是unix實(shí)現(xiàn)的主要思想之一。
5.Unix內(nèi)核其他文件類(lèi)型
unix還支持另外兩種文件類(lèi)型:管道文件和特殊文件。
管道又被成為fifo(first in first out,就是隊(duì)列),數(shù)據(jù)只能從一端流入,從一端流出。
特殊文件包括塊設(shè)備特殊文件和字符設(shè)備特殊文件。他們都指明了為設(shè)備,因此索引結(jié)點(diǎn)不引用任何數(shù)據(jù),而含有兩個(gè)稱(chēng)為主與次的設(shè)備號(hào)。主設(shè)備號(hào)指出終端或磁盤(pán)這樣的設(shè)備類(lèi)型,次設(shè)備號(hào)指出這類(lèi)設(shè)備的裝置號(hào)。
Unix內(nèi)核中,我們就介紹這些知識(shí)了,以后,我們會(huì)對(duì)超級(jí)塊做詳細(xì)的介紹,希望大家能夠關(guān)注我們的教學(xué)。
【編輯推薦】