什么是"文件表项"

news2024/11/20 4:46:39

从Linux的层次角度来说,在用户空间是存在这样的概念的,这个概念是存在内核空间的,而且是针对打开的文件的!

内核用三种数据结构来描述一个打开的文件。

数据结构一:

文件描述符表(descriptor table):

每个进程都有它独立的描述符表,它的表项是由进程打开的文件描述符来索引的。每个打开的文件描述符表项指向文件表中的一个表项。形象化的表示应该是这个样子.

数据结构二:

·打开的文件表(fìle table) 。

所有"打开的文件"的集合!所有进程共享这张表!打开的文件表的表项,即是文件表项.

文件表项的内容包含:

当前的文件位置、引用计数(referencecount) (即当前指向该表项的描述符表项数),以及一个指向v-node 表中对应表项的指针。打开文件的集合是由一张文件表来表示的,所有的进程共享这张表。

文件表项的样子:

数据结构三:

v-node 在(v-node table) 。同文件表一样,所有的进程共享这张v-node 表。每个打开的文件(或设备)都有一个V节点(v-node)结构.v节点包含了"文件类型" 、对该文件进行各种操作的函数指针。注: 对大多数文件来说,v节点还包含了该文件的i-node节点这些信息是在打开文件是从磁盘上读入内存的,所以所有关于文件的信息都是快速可供使用的!

i-node节点包含的信息:

1>.文件所有者

2>.文件长度

3>.文件所在的设备

4>.指向文件实际在磁盘上所在位置的指针

三者之间的关系如下图所示:

(CWY注:这里的"文件表"指的是打开的文件表集合!)

每个文件表的表项组成(针对我们的目的)包括有当前的文件位置、引用计数(referencecount) (即当前指向该表项的描述符表项数),以及一个指向v-node 表中对应表项的指针。关闭一个描述符会减少相应的文件表表项中的引用计数。内核不会删除这个文件表表项,直到它的引用计数为零“文件表项”--file table entry的含义,从英文的名字可以更好的理解他的含义,即文件表入口或是文件表条目等!即使

"文件表项"实际上就是一张"文件信息表"。 非要找个实物来的话,看看上图的"房产信息申请表"大概就知道了!就是列了很多项,在对应的项需要填写对应的信息!那么文件表项中都有哪些信息呢??每个文件表项包含如下信息:

<1>.文件状态标志( 读,写,追加,同步和非阻塞等 )

<2>.当前文件偏移量

<3>.指向该文件v节点表项的指针

画成图大概就是这个样子!文件表项:即文件表表项,总结:

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,

差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。(点击找小助理领取)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/127870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【代码调试】《FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding》

论文地址&#xff1a;https://arxiv.org/pdf/2103.05950.pdf 代码地址&#xff1a;https://github.com/megvii-research/FSCE 论文阅读&#xff1a;https://blog.csdn.net/qiankendeNMY/article/details/128390284 我的配置&#xff1a; Python &#xff1a;3.8(ubuntu18.04) …

小程序发布体验版流程

一、微信开发者工具操作 1. 点击 工具 -> 上传&#xff08;或 直接点击右上角“上传”按钮&#xff09; 【注意】 如果使用的测试 appid 则【上传】按钮不能点击&#xff0c;必须使用真实 appid 2. 如果之前有发布过体验版&#xff0c;会提示继续操作将会覆盖之前的体验版…

MyBatisPlus ---- 基本CRUD

MyBatisPlus ---- 基本CRUD1. BaseMapper2. 插入3. 删除a>通过id删除记录b>通过id批量删除记录c>通过map条件删除记录4. 修改5. 查询a>根据id查询用户信息b>根据多个id查询多个用户信息c>通过map条件查询用户信息d>查询所有数据6. 通用Servicea>IServi…

RK3588平台开发系列讲解(Display篇)开机视频的设置

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、开机视频功能介绍二、使用方法2.1、开启与关闭2.2、视频放置位置2.3、编译结果2.4、视频素材要求2.5、参数控制说明沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍RK3588平台开机视频的使用方法…

ARM64内存虚拟化分析(7)stage2异常处理

当虚拟机访问内存或虚拟机访问寄存器时&#xff0c;由于并没有分配真实的物理地址&#xff0c;并没有建立stage2映射&#xff0c;因此这两种情况会产生stage2异常处理&#xff0c;其中第一种情况为真实的stage2缺页&#xff0c;第二种情况为MMIO处理。同时如果在stage2产生外部…

零膨胀负二项回归案例分析

零膨胀负二项回归分析 计数研究模型中&#xff0c;常用泊松回归模型&#xff0c;但泊松回归模型理论上是要求平均值与标准差相等&#xff0c;如果不满足&#xff0c;则可使用负二项回归模型&#xff0c;负二项回归放宽了平均值标准差这一理论假定。 在实际研究中&#xff0c;…

网络协议类型

网络协议是一组规则、约定和数据结构&#xff0c;用于规定设备如何跨网络交换数据。换句话说&#xff0c;网络协议可以等同于两个设备必须理解的语言&#xff0c;以实现信息的无缝通信&#xff0c;无论其基础设施和设计差异如何。 OSI 模型&#xff1a;网络协议的工作原理 要…

Oracle数据库安装配置详细教程汇总(含11g、12c、18c、19c、21c)

不论你是数据库小白&#xff0c;还是久经沙场的技术专家&#xff0c;你接触和运维Oracle数据库的第一步可能都是安装配置。并且随着软硬件的升级、替换以及业务场景的变化&#xff0c;数据库安装也将是你常常会进行的操作之一。 这里先为大家附上Oracle各版本支持的生命周期及…

阶段性回顾(2)

1. 移位操作符的对象只能是整数&#xff0c;只能对整数的二进制位进行移动。 2. 二进制是数值的一种表示形式。一个整数占了四个字节&#xff0c;相当于一个整数可以用32位二进制位序列表示&#xff0c;那么这时候该如何判断正负呢?规定&#xff1a;这32位二进制序列的头一位如…

第二十二讲:神州路由器OSPF单区域路由的配置

实验拓扑图如下所示 设备 端口 IP 子网掩码 网关 Router-A F0/0 172.16.1.1 255.255.255.0 无 F0/3 172.16.0.1 255.255.255.0 无 Router-B F0/0 172.16.1.2 255.255.255.0 无 F0/3 172.16.2.1 255.255.255.0 无 PC1 172.16.0.2 255.255.255.0 172.1…

解决docker容器因报错无法启动的问题,检查、修复容器错误并重启

问题复现 使用&#xff1a; sudo docker ps -a查看当前的docker容器&#xff1a; 我们想启动name为【docker-mongo】的这个容器&#xff0c;因此要执行 sudo docker start docker-mongo但是执行后仍旧没有重启&#xff0c;大概率是重启的时候报错了&#xff0c;查看日志&a…

Spring Boot骚操作-多数据源Service层封装

mysql, es, mongodb 三个数据源用配置文件方式连接&#xff0c;JPA只是正对dao做了封装&#xff0c;本文主要介绍如何对service层进行封装。 Spring Boot - 多个数据源Service层封装 类关系图 封装的一些配置 application.yml pom.xml 封装后使用 MySQL 动态数据访问 Mong…

坦克大战1.0,java时间处理机制

1.java 绘图坐标体系 1.1 坐标体系-介绍 下图说明了Java坐标系。坐标原点位于左上角&#xff0c;以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向,距离坐标原点y个像素。…

金融业务如何高性能传输数据

对系统要求高&#xff0c;通常按金融级标准设计。金融数据传输要求速度快&#xff0c;流量大&#xff0c;极强容灾。 案例分析 简化版券商算法交易平台对接交易所&#xff1a; 涉及场景多。既有事务数据&#xff0c;也有市场数据模型简单。只涉及到2个主体复杂度可选。连接交…

【结构型】装饰模式(Decorator)

目录装饰模式(Decorator)适用场景装饰模式实例代码&#xff08;Java&#xff09;装饰模式(Decorator) 动态地给一个对象添加一些额外的职责。就增加功能而言&#xff0c;装饰模式 (Decorator) 比生成子类更加灵活。 适用场景 在不影响其他对象的情况下&#xff0c;以动态、透…

2023让工作效率直线飞升

2022年马上就要过去&#xff0c;过去的一年&#xff0c;腾讯云HiFlow和众多腾讯系应用也帮助了许多企业完成数字化转型&#xff0c;许多没有代码基础的业务人员也能通过搭建工作流&#xff0c;高效的处理生活&工作的繁杂事务&#xff0c;时间精力节省50%。把时间花在更重要…

开源 | 携程机票跨端 Kotlin DSL 数据库框架 SQLlin

作者简介禹昂&#xff0c;携程机票移动端资深工程师&#xff0c;专注于 Kotlin 移动端跨平台领域&#xff0c;Kotlin 中文社区核心成员&#xff0c;图书《Kotlin 编程实践》译者。一、背景2022年9月 Kotlin 1.7.20 发布之后&#xff0c;Kotlin Multiplatform Mobile&#xff08…

【计算机图形学入门】笔记7:Shading着色1(光照与基本着色模型)

07Shading着色&#xff08;光照与基本着色模型&#xff09;1.深度缓冲Z-buffering1.画家算法&#xff1a;先把远处的东西画在屏幕上&#xff0c;再画近处的&#xff0c;从而近处物体覆盖远处物体。&#xff08;油画家&#xff09;2.深度缓冲2.Shading着色1.我们目前学了哪些知识…

CleanMyMacX2023系统清理优化工具使用评测

如果你的macbook有点年头空间不够开始卡顿了&#xff0c;或者你是windows用户刚转来的&#xff0c;我强烈建议你安装一个cleanmymac&#xff01;Mac电脑清理是可以直接使用储存空间管理&#xff08;关于本机->储存空间->管理&#xff09;来清理&#xff0c;但是这里的其他…

Android开发笔记(一百九十)增强了日志功能的第二版Logcat

从Android Studio Dolphin开始&#xff0c;查看应用日志的Logcat全面升级&#xff0c;堪称Logcat 2.0版本。下面就让我们看看LogcatV2.0究竟带来了什么新特性吧。 对于Android Studio的老用户来说&#xff0c;小海豚版本新出的LogcatV2.0在用法上有不小的差异&#xff0c;一开始…