我们这次主要对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内核中,我们就介绍这些知识了,以后,我们会对超级块做详细的介绍,希望大家能够关注我们的教学。
【编辑推荐】