内核用于维护系统中打开文件的结构

    本文只是对《APUE》3.10节中关于“内核用于维护打开文件的结构”内容的提取,目的是方便记忆及后续复习或查询方便。


内核使用三种数据结构来管理打开的文件:

    1.对于每个进程,内核在进程表中维护一个文件描述符表(可视为一个数组),该表中每个表项记录了:

        a.文件描述符标志

        b.指向对应文件表表项的指针

    2.对于每个进程打开的文件,内核为每个文件维护一张文件表,该表中记录了:

        a.文件状态标志

        b.当前文件偏移量

        c.指向对应v节点表项的指针

    3.内核为系统中所有打开文件维护一张v节点表,每个打开文件(或设备)对应一个v节点(v-node)结构,该结构中包含了:

        a.文件类型(普通、链接、字符设备、块设备 等等)

        b.对此文件进行操作的函数指针

        c.该文件的i节点 [ i-node: 索引节点 ](可能是指向i节点的指针,也可能i节点就包含在v节点中)

            c.1)i节点中包含“文件的所有者”、“文件长度”、“指向文件数据块在磁盘上所在位置的指针”等信息

注:1)linux中没有使用V节点信息,而是使用了通用i节点结构,虽然两者实现不同,但概念上一样,也都指向了i节点

        2)上述3个表中,1,2是以进程为单位,3是以系统为单位


如图展示了一个进程打开标准输入与标准输出后上述各结构关系(图片摘自于《APUE》图3-7)


下图展示了两个独立进程各自打开同一文件后,上述各表之间关系(指向相同的v节点)(图片摘自于《APUE》图3-8):


后续若有更多相关知识点记录会在原文基础上进行扩充

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值