Linux内核之文件系统访问:目录项、inode、物理磁盘访问关系(五十五)

news2024/9/20 2:44:47

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门实战课原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2.Linux文件系统中,目录项(dentry)、inode和物理磁盘之间的关系介绍
      • 🐓2.1 目录项(dentry)
      • 🐓2.1 inode
      • 🐓2.1 物理磁盘
    • 🌻3.问题一:当访问一个test.txt文件时,他们的调用流程发生了什么?
      • 🐓3.1 当访问一个名为 test.txt 的文件时,涉及到以下步骤和调用流程:
    • 🌻4.问题二:详细阐述linux文件系统从应用层到内核层访问test.txt的过程?
      • 🐓4.1 应用层:
      • 🐓4.2 内核层:
      • 🐓4.3 返回应用层:
    • 🌻5.问题三:Binder文件系统中,打开"/dev/binder"设备文件到访问物理磁盘的过程?
      • 🐓5.1 目录项如何找到inode:
      • 🐓5.2 inode如何找到超级块:
      • 🐓5.3 超级块如何找到物理磁盘访问的:

🌻1.前言

本篇目的:Linux内核之目录项/inode/物理磁盘访问关系

🌻2.Linux文件系统中,目录项(dentry)、inode和物理磁盘之间的关系介绍

  • 在Linux文件系统中,目录项(dentry)、inode和物理磁盘之间的关系是理解和文件访问流程的关键。

🐓2.1 目录项(dentry)

目录项是文件系统中的一个概念,它代表了文件系统树中的一个节点。每个目录项都有一个名称和与之关联的inode。目录项的主要作用是提供一个快速查找表,使得内核可以快速地将文件名映射到对应的inode。

🐓2.1 inode

  • inode是文件系统中的一个数据结构,它包含了文件的元数据,如文件大小、创建时间、最后修改时间、权限等。每个inode都有一个唯一的inode号,它是文件系统用来标识文件的唯一标识符。inode还包含了指向文件数据块的指针,这些数据块存储在物理磁盘上。

🐓2.1 物理磁盘

  • 物理磁盘是文件系统中实际存储数据的设备。文件的数据和inode都存储在磁盘上。inode通常存储在磁盘的一个或多个专用区域,而文件数据则存储在数据块中。

🌻3.问题一:当访问一个test.txt文件时,他们的调用流程发生了什么?

🐓3.1 当访问一个名为 test.txt 的文件时,涉及到以下步骤和调用流程:

  • 1.路径名解析: 首先,内核会根据路径名 test.txt 进行路径名解析,将其转换为目录项(dentry)。这个过程涉及到对路径名的拆分,并在文件系统中进行查找,直到找到文件的目录项。
  • 2.目录项查找: 内核根据路径名解析得到的目录项,查找对应的索引节点(inode)。这一步通常涉及文件系统的缓存机制,如果目录项已经被缓存,则可以直接从缓存中获取索引节点指针。
    1. 索引节点访问: 一旦找到了文件的索引节点,内核就可以根据索引节点中的信息,访问文件的元数据信息,如文件类型、文件大小、拥有者等。这些信息可以用于权限检查和其他操作。
  • 4.文件数据读取: 最后,如果是对文件进行读取操作,内核会根据索引节点中的指针信息,从物理磁盘上读取文件的实际数据,并将数据传输到用户空间。
  • 5.整个调用流程涉及了路径名解析、目录项查找、索引节点访问和文件数据读取等步骤,这些步骤是文件系统提供文件访问功能的基础。

🌻4.问题二:详细阐述linux文件系统从应用层到内核层访问test.txt的过程?

  • 从应用层到内核层访问 test.txt 文件的过程:

🐓4.1 应用层:

    1. 打开文件: 应用程序调用 open 系统调用来打开 test.txt 文件。该调用会触发用户空间库函数(如 glibc)中的 open 函数,该函数将文件名转换为系统调用的参数,并将控制权交给内核。
    1. 系统调用: 用户空间的 open 函数通过系统调用界面将请求传递给内核。内核收到系统调用请求后,开始执行相应的系统调用处理程序。

🐓4.2 内核层:

    1. 路径名解析: 内核首先对文件名 test.txt 进行路径名解析,将其拆分成路径名的各个组件,并逐级查找每个组件对应的目录项(dentry)。
    1. 目录项查找: 内核根据路径名解析得到的各个目录项,沿着路径从根目录开始向下查找,直到找到 test.txt 文件对应的目录项。
    1. 索引节点访问: 一旦找到了 test.txt 文件的目录项,内核会获取其关联的索引节点(inode)。索引节点包含了文件的元数据信息,如文件类型、大小、权限等。
    1. 权限检查: 内核会检查应用程序是否具有访问 test.txt 文件的权限。这涉及到对文件的访问权限和用户身份的验证。
    1. 文件描述符分配: 如果权限检查通过,内核会为该打开文件分配一个文件描述符,并创建相应的文件表项(file)。文件描述符是应用程序用来识别已打开文件的唯一标识符。
    1. 文件操作分发: 根据系统调用中指定的操作类型(如读取、写入、关闭等),内核将文件操作分发给相应的文件操作函数(如 readwriteclose)。
    1. 文件数据访问: 对于读取操作,内核会根据文件的索引节点信息,在物理磁盘上找到文件的实际数据,并将数据复制到内核空间的缓冲区中。然后,内核将数据传输到用户空间,以供应用程序使用。
    1. 文件关闭: 当应用程序不再需要访问文件时,它会调用 close 系统调用来关闭文件描述符。内核会释放相应的资源,并关闭文件。

🐓4.3 返回应用层:

    1. 系统调用返回: 内核执行完文件操作后,将结果返回给用户空间的系统调用处理程序。如果操作成功,系统调用返回相应的成功代码;否则,返回错误码。
    1. 应用程序接收结果: 用户空间的库函数(如 glibc)接收到系统调用的返回结果,并将其传递给应用程序。应用程序根据返回结果决定后续的操作。
  • 这是从应用层到内核层访问 test.txt 文件的详细过程。整个过程涉及了路径名解析、权限检查、文件描述符分配、文件操作分发和文件数据访问等多个步骤,以实现对文件的访问和操作。

🌻5.问题三:Binder文件系统中,打开"/dev/binder"设备文件到访问物理磁盘的过程?

  • 在 Binder 文件系统中访问 “/dev/binder” 设备文件时,访问顺序通常是从目录项到inode,再到超级块,最后到物理磁盘。下面详细描述了每个步骤的访问过程:

🐓5.1 目录项如何找到inode:

  • 操作系统首先会从根目录开始,逐级查找目录,直到找到 “/dev” 目录。
  • 在 “/dev” 目录中,系统会查找名为 “binder” 的目录项。一旦找到目标目录项,系统会从中获取到与之关联的inode号码。

🐓5.2 inode如何找到超级块:

  • 一旦找到 “/dev/binder” 目录项中关联的inode号码,操作系统会使用该inode号码来访问文件系统中对应的inode数据结构。
  • 通过该inode数据结构,操作系统可以获取到文件系统的标识信息,如文件系统类型和挂载信息。通常,inode 数据结构中会包含指向文件系统超级块的指针。

🐓5.3 超级块如何找到物理磁盘访问的:

  • 通过 inode 中指向的文件系统超级块,操作系统可以获取文件系统的相关信息,包括文件系统的逻辑结构和元数据信息。
  • 超级块中可能包含有关文件系统布局和数据块索引的信息,这些信息指示了文件系统中数据块的存储位置。
  • 操作系统根据超级块中的信息,通过文件系统的存储管理机制来访问物理磁盘,读取文件系统的数据块和inode数据。
  • 这样的访问顺序确保了文件系统的正常操作和数据的正确访问,从目录项到inode,再到超级块,最后到物理磁盘。

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

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

相关文章

(数据结构代码,总结,自我思考)=> { return 个人学习笔记; } 【To be continued~】

俗话说 “学而不思则罔”&#xff0c;是时候复习和整理一下自己先前的学习历程了&#xff01; Chapter-One 《BinarySearch》 public static int binarySearch (int[] a, int target) {int i 0, j a.length - 1;while (i < j) {int m (i j) >>> 1; // 求中位…

小红书电商运营实战课,从0打造全程实操(65节视频课)

课程内容&#xff1a; 1.小红书的电商介绍 .mp4 2.小红书的开店流程,mp4 3.小红书店铺基础设置介绍 ,mp4 4.小红书店铺产品上架流程 .mp4 5.客服的聊天过程和子账号建立 .mp4 6.店铺营销工具使用和后台活动参加 .mp4 7.小红书产品上架以及拍单教程,mp4 8.小红书如何选品…

javaWeb项目-智慧餐厅点餐管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、JavaScript Java…

UltraScale+的40G/50G Ethernet Subsystem IP核使用

文章目录 前言一、设计框图二、模块说明三、上板3.1、发送端3.1、接收端 四、总结 前言 上文介绍了10G/25G Ethernet Subsystem IP核使用&#xff0c;本文将在此基础上介绍40G/50G Ethernet Subsystem IP核的使用&#xff0c;总体区别不大。 一、设计框图 由于40G以太网需要…

Jetson nx 外接OLED屏幕

40 针 GPIO 引脚 GPIO引脚可以用作输入或输出端口&#xff0c;它们提供了一个数字电平以使用户在外界设备上进行控制或读取。Jetson TX2 NX共有198个GPIO引脚&#xff0c;分为三个不同的管脚组&#xff1a;J1、J21和J22。每个管脚组都具有数字输入/输出和PWM功能。 以下是 TX2…

获取AngusTester应用免费许可

第一步、进入晓蚕云官网私有化部署&#xff0c;滑动到底部下载与安装&#xff0c;点击获取许可。 第二步、在获取许可申请页面填写申请信息。 注意&#xff1a;MAC地址为您安装应用服务器对应MAC地址&#xff0c;MAC地址错误会导致安装失败。 在常见的操作系统中&#xff0c;查…

Error in render: TypeError: Cannot read properties of undefined (reading‘‘)

报错内容 报错解释&#xff1a;这个错误在渲染过程中尝试读取一个未定义&#xff08;undefined&#xff09;对象的某个属性时发生了TypeError。具体来说&#xff0c;是尝试读取一个值为undefined的对象的某个属性&#xff0c;但该属性不存在&#xff0c;因此无法读取。解决过程…

【面试经典 150 | 二叉搜索树】验证二叉搜索树

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;中序遍历方法二&#xff1a;递归 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及…

国产信创办公软件(流版式软件)厂家汇总以及国产信创外设汇总

国产信创办公软件&#xff08;流版式软件&#xff09;厂家汇总以及国产信创外设汇总。 国产信创办公软件&#xff08;流版式软件&#xff09;厂家汇总 在信创背景下&#xff0c;国内流版式软件的发展呈现出蓬勃的态势。信创&#xff0c;即信息技术应用创新产业&#xff0c;旨在…

【C++】日期类Date(详解)

&#x1f525;个人主页&#xff1a;Forcible Bug Maker &#x1f525;专栏&#xff1a;C 目录 前言 日期类 日期类实现地图 获取某年某月的天数&#xff1a;GetMonthDay 检查日期合法&#xff0c;构造函数&#xff0c;拷贝构造函数&#xff0c;赋值运算符重载及析构函数…

【Qt】探索Qt框架:跨平台GUI开发的利器

文章目录 1. Qt框架概述1.1. Qt框架的优点1.2. Qt框架支持的系统1.3. Qt开发环境 2. 搭建 Qt 开发环境2.1. Qt SDK 的下载和安装2.2. 新建项目: 3. Qt 框架内容简介总结 在当今软件开发领域&#xff0c;跨平台性和用户界面的友好性是至关重要的。而Qt框架作为一款跨平台的C图形…

<计算机网络自顶向下> TCP拥塞

目录 TCP拥塞控制机制 TCP拥塞感知 TCP速率控制方法 TCP拥塞控制和流量控制的联合动作 TCP拥塞控制策略 TCP吞吐量 TCP公平性 TCP拥塞控制机制 端到端的拥塞控制机制 路由器不向主机提供有关拥塞的反馈信息 路由器负担较轻 符合网络核心简单的TCP/IP架构原则 端系统根据自…

【github主页】优化简历

【github主页】优化简历 写在最前面一、新建秘密仓库二、插件卡片配置1、仓库状态统计2、Most used languages&#xff08;GitHub 常用语言统计&#xff09;使用细则 3、Visitor Badge&#xff08;GitHub 访客徽章&#xff09;4、社交统计5、打字特效6、省略展示小猫 &#x1f…

浅谈命理学的男女婚姻篇

对于中国人来说&#xff0c;八字预测已成为生活中不可缺少的组成部分&#xff0c;不懂八字预测&#xff0c;就不会真正了解中国的传统文化。八字预测经历几千年的风风雨雨&#xff0c;是一种古老的中国命理学&#xff0c;通过生辰八字的天干地支的组合&#xff0c;可以推测一个…

[阅读笔记21][RA-CM3]Retrieval-Augmented Multimodal Language Modeling

这篇论文是meta联合斯坦福在23年4月发表的论文&#xff0c;提出了一个使用外部知识检索增强的多模态模型。 这篇模型提出的RA-CM3模型是第一个能够检索并生成图像文本的多模态模型&#xff0c;在图像文本生成任务上优于现有的多模态模型&#xff0c;同时使用更少的训练量。 RA-…

模型 框架效应

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。部分真相不等于真相。 1 框架效应的应用 1.1 框架效应在营销策略上的应用 亚洲航空公司面临的挑战是如何在竞争激烈的航空市场中吸引更多的顾客&#xff0c;并提高机票的预订率。这家低成本航空公司…

2.Vue简介

Vue简介 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;V…

Scala的函数至简原则

对于scala语言来说&#xff0c;函数的至简原则是它的一大特色。下面让我们一起来看看分别有什么吧&#xff01; 函数至简原则&#xff1a;能省则省&#xff01; 初始函数 def test(name:String):String{return name }1、return可以省略&#xff0c;Scala会使用函数体的最后一…

排序算法集合

912. 排序数组 趁着这道题总结下排序方法 1.快速排序 算法描述 1.从数列中挑出一个元素&#xff0c;称为"基准"&#xff08;pivot&#xff09;&#xff0c; 2.重新排序数列&#xff0c;所有比基准值小的元素摆放在基准前面&#xff0c;所有比基准值大的元素摆在基…