【精】与HDFS相关的Linux基础知识:内核是怎么保存文件描述符相关数据结构的?

171 篇文章 147 订阅 ¥29.90 ¥99.00
本文深入探讨了Linux内核如何保存文件描述符相关数据结构,包括每个进程的file descriptor table、系统层面的open file description table以及文件系统i-node table。通过这三个数据结构,解释了文件描述符在不同进程间的共享机制,以及如何影响文件的offset和status flags。文章还提到了fcntl()的使用,并给出了关于文件描述符共享的一些启示。
摘要由CSDN通过智能技术生成

研究分布式文件存储系统,少不了与底层操作系统,文件系统,存储设备等打交道。了解这些基本原理对我们全方位理解分布式存储,问题定位,性能优化等有很大帮助。

大家都知道,在linux中,一切都是文件,对文件的操作都是通过打开此文件拿到文件描述符,然后通过文件描述符来操作的,今天来看下文件描述符在内核中是用什么样的数据结构保存的。

多个文件描述符可能指向同一个打开的文件,这些文件描述符可能是在同一个进程中,也可能是在不同的进程中。

为了弄懂文件描述符原理,我们需要知道内核中维护的三个数据结构:

  • 每个进程的 file descriptor table
  • 系统层面的 open file description table (注意第三个单词,不是descriptor)
  • 文件系统 i-node table

我们分别来介绍一下这个三个数据结构所保存的信息以及它们之间的关系。

首先第一个,对于每个进程来说,内核都维护了该进程的open file descriptors表,这个表里面的每条记录(entry)描述一个文件描述符的信息,包括:

  • 控制文件描述符相关操作的flag集合
  • 指向open file description 的引用

第二个,内核维护了一个系统层面的所有打开文件的描述表( open file descriptions)。上文提到的文件描述符里面的指向open file description的引用就是指向的这个表里的一个文件。此表里的一个 open file description保存了一个打开文件的所有信息。包括:

  • 当前打开文件的offset
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叹了口丶气

觉得有收获就支持一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值