浅析Unix内核索引结点表

系统 其他OS
我们在文章中,会给大家带来一些关于Unix内核索引结点表的知识,索引结点(index node,简称inode)是文件系统的核心内容,也是Unix内核最重要的数据结构。

大家都知道Unix内核,所有的Unix内核都同宗同源,并且提供相同的API,现代的Unix内核存在许多设计上的相似之处。今天,我们就来介绍更多的Unix内核的知识。是关于Unix内核索引结点表的,我们下面就来看看吧!

索引结点(index node,简称inode)是文件系统的核心内容,也是Unix内核最重要的数据结构。unix中一个文件只有一个inode与其相对应,它的储存在磁盘的索引结点表里。索引结点表是一个线性数组。索引结点的各个域的内容如下:
1,文件所有者的标识号。
2,文件类型。
3,文件的存取权限。
4,文件的存取时间。
5,文件的联结数。
6,文件在磁盘上的位置。
7,文件大小。

(注意:索引结点不表明该文件的路径)

当索引结点被某个进程引用是,它被调入内存中。在内存中存在另外一个索引结点表(in-core inode list)和一个空闲索引结点表。当索引结点被调入内存时(在Unix内核中使用iget算法),将索引结点放入内存索引结点表里,并将其引用数加1。

内存索引结点里的数据域除了磁盘索引结点的内容以外,还有以下新的域:
1,内存索引结点的状态
2, 含有该文件的文件系统的逻辑设备号。
3,索引结点号。(索引结点在磁盘上数组里索引)
4,指向其他内存索引结点的指针。
5,引用数。

Unix内核用文件系统和索引结点号来标识特定的索引结点,在高层的系统调用请求是使用iget算法来分配一个索引结点的内存拷贝,即内存索引结点。Unix内核独立的操纵索引结点锁和引用数。在系统调用执行期间将起锁住,防止其他的进程在此期间使用此结点,调用结束后开锁。在两次系统调用之间结点是不上锁的。

而iget算法主要完成的任务:索引结点号为参数,如果索引结点位于内存索引结点表中则引用数加1,返回索引结点,如果位结点位于空闲索引结点表中(此表中索引结点的引用数为0),则从该表中取出该索引结点,放入在内存索引结点表中,并将其引用数加1,如果在两个表中都没有该索引结点,则在空闲表中移出一个新的索引结点,在磁盘索引结点表中寻找到该结点,读入内存索引结点表中,然后返回该索引结点。

当Unix内核释放索引结点时,引用数减1。如果引用数降为0,而且文件的内存拷贝与磁盘拷贝不同,则执行写磁盘操作,并把索引结点放入空闲表里。这里用到的算法是iput。如果文件的联结数为0,则Unix内核释放该文件的所有数据块,并释放该文件的磁盘索引结点。

在这里,我们就对Unix内核的索引结点表介绍到这里吧,希望大家可以继续关注我们以后对Unix内核的知识的介绍。

【编辑推荐】

  1. 简单四步 编译Linux内核
  2. 教学Unix操作系统内核级后门
  3. Nginx内核优化的源代码探秘
  4. Linux 2.6.31内核优化指南
  5. 简单介绍Linux内核安全入侵侦察系统
责任编辑:小霞
相关推荐

2010-05-05 13:13:55

Unix内核

2010-04-07 17:55:12

Unix命令

2010-04-21 13:41:41

Unix内核

2010-04-30 16:19:17

Unix内核

2010-04-30 16:08:20

Unix内核

2010-04-21 12:54:46

Unix内核

2010-04-21 16:50:31

Unix信号量

2010-04-21 11:15:55

Unix 命令

2010-04-20 15:58:30

Unix操作系统

2010-04-21 13:47:45

Unix内核

2010-04-14 16:45:15

Unix操作系统

2010-04-19 17:44:56

Unix操作系统

2010-04-08 16:11:39

Unix操作系统

2010-04-14 09:40:05

2010-04-08 17:43:44

Unix操作系统

2010-04-14 15:44:10

Unix操作系统

2011-03-23 13:59:43

2010-04-07 11:31:25

Unix操作系统

2010-04-08 17:31:51

Unix操作系统

2020-03-20 10:14:49

搜索引擎倒排索引
点赞
收藏

51CTO技术栈公众号