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