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