LIUNX系统编程:文件系统

目录

1.创建文件的本质

1.1目录本身也是一个文件,也有他自己的inode

1.2LINUX创建文件,一定是在目录中创建文件。

2.重谈文件的增删查改

2.1为什目录没有写权限,就不能新建文件。

2.2.文件的查找

3.路径

3.1挂载

3.2如何理解挂载


1.创建文件的本质

1.1目录本身也是一个文件,也有他自己的inode

1050798不就是code的inode吗

1.2LINUX创建文件,一定是在目录中创建文件。

文件名不是文件的属性,也不是文件的内容,那文件名到底有什么用呢?

................................................................(省略在磁盘寻找inode和datablock的过程)

文件名的作用就是,在我们创建文件的时候,把文件名与文件的Inode编号映射起来。

然后把这个映射写入到目录文件当中,然后我们通过文件的名字,就能拿到inode编号,拿到inode编号就能,查到这个文件的所有信息了。

2.重谈文件的增删查改

2.1为什目录没有写权限,就不能新建文件。

因为不能把文件的映射关系写入到目录文件,删除同理。

2.2.文件的查找

在用户使用LIUNX系统的时候,我们查找一个文件用的都是路径去查找,但是想找到一个磁盘的文件,必须找到该文件的inode,怎么用一个路径,就找到文件的inode的呢?

例:我想找到test.c这个文件

这个文件的路径是/home/wys/code/buffer/test.c

想找到test.c,就必须找到先找到buffer目录的inode,想找到buffer目录的inode,就必须先找到code的目录的inode

依次类推,直到根目录,根目录的inode编号是确定的,系统是直接知道的,开机的时候,就会用这个编号,将根目录打开到内存当中,根目录的inode编号是2。

所以在内核中查找一个文件,都要逆向递归般的得到根目录,从根目录进行目录解析。

解析好的目录会被缓存在一个dentry的内核数据结构中(dentry就是描述目录的数据结构

里面存在的是这个路径与文件inode 的直接映射,而且dentry是内存级别的,就不用去磁盘里重新寻找,提高了文件系统个的效率。

3.路径

现在我们已经了解,查找一个文件,根据路径和文件名拿到inode编号,去对应分区,经过简单计算,算出是在哪一个分组,然后就能找到对应文件的inode。

现在一个重要问题,我们怎么知道这个inode编号是在哪一个分区的呢?

3.1挂载

不得不提到一个重要的概念“挂载”

一个文件系统所对应的分区要想被使用必须先被挂载到对应的目录

使用mount命令查看

因为我这个云服务器只有一块盘,所以只有一个ext4的文件系统。

这个文件系统的分区是被挂载到根目录的 /dev/vdal on /。

3.2如何理解挂载

文件系统在内核中一定不是凭空存在的,一定要被一种内核的数据结构描述(file_systerm_type),这种数据结构操作系统是不可见的,因为他不在操作系统的文件系统树中。

但是目录在操作系统的文件系统树上,只需要将描述其的内核数据结构file_systerm_type与dentry关联起来,不就能找到这个分区了吗

操作系统能找到文件系统树上的目录,访问目录就是访问对应的分区

所以如何找到分区的问题也就迎刃而解了,分区被挂载到对应的目录上,访问目录就是访问对应的分区。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT学习】8.qt事件处理机制,事件过滤器,自定义事件

1.qt事件处理机制 事件处理: 当用户移动鼠标的时候 ,创建一个 鼠标移动事件对象 然后把这个对象放到 事件队列里面去,事件管理器 从队列中 取出事件,然后 调用其对应的事件处理函数。 多态机制: &#x…

2023年图灵奖颁发给艾维·维格森(Avi Wigderson),浅谈其计算复杂性理论方面做出的重要贡献

Avi Wigderson是一位以色列计算机科学家,他在计算复杂性理论方面做出了重要的贡献,并对现代计算产生了深远的影响。 Wigderson的主要贡献之一是在证明计算复杂性理论中的基本问题的困难性方面。他证明了许多经典问题的困难性,如图论中的图同构…

Day08React——第八天

useEffect 概念:useEffect 是一个 React Hook 函数,用于在React组件中创建不是由事件引起而是由渲染本身引起的操作,比如发送AJAx请求,更改daom等等 需求:在组件渲染完毕后,立刻从服务器获取频道列表数据…

每天五分钟机器学习:神经网络模型参数的选择

本文重点 在深度学习和人工智能的浪潮中,神经网络作为其中的核心力量,发挥着举足轻重的作用。然而,神经网络的性能并非一蹴而就,而是需要经过精心的参数选择和调优。 神经网络由大量的神经元组成,每个神经元之间通过权重进行连接。这些权重,以及神经元的偏置、激活函数…

Adobe Acrobat PDF 2024

Adobe Acrobat PDF 2024正式发布!支持Windows和macOS系统,新界面做了轻微调整。 下载地址 Windows客户端:https://www.123pan.com/s/f43eVv-GKZKd.html macOS客户端:https://www.123pan.com/s/f43eVv-PKZKd.html

idea在controller或者service使用ctrl+alt+b进入方法后,如何返回到 进入前的那一层

idea在controller或者service使用ctrlaltb进入方法后,如何返回到进入方法的最外层 解决方案使用 ctrlalt ← /→← /→ 键盘上的左右键盘

数据结构练习-算法与时间复杂度

----------------------------------------------------------------------------------------------------------------------------- 1. 设n是描述问题规模的非负整数,下列程序段的时间复杂度是( )。 x0;while(n>(x1)*(x1)xx1; A.O(logn) B.O(n^(1/2)) C.O(n)…

【周总结】总结下这周的工作、(hashmap)知识巩固等

总结 这周开发任务已经全部结束,主要是在修改一些 jira 问题 需要反思的是,中间改造接口时,数据库表需要新增一个字段,这个 sql 脚本忘记加到 basetable.sql 脚本里面了,这样如果是新建的项目,创建的时候不…

百万级别mysql性能耗时自测

注:实际情况会因建表语句和服务器的配置造成偏差 测试环境 :8核CPU 16G运行内存 建表语句: CREATE TABLE user (id bigint(11) NOT NULL AUTO_INCREMENT,username varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,birthday varchar(255)…

AppWizard的软件开发GUI的使用记录

前言 这个软件是针对于EmWin6.0以上的这个软件在emWin的基础上又封装了一层,也只提供的API函数.基于消息事件为核心(个人理解)一些组件的之间的交互可以通过软件界面进行配置,比较方便本次是基于模拟器进行测试记录,观察api 按键和文本之间的关联 通过…

软考141-上午题-【软件工程】-杂题+小结

一、杂题 真题1: 真题2: 真题3: 真题4: 真题5: 真题6: 真题7: 真题8: 真题9: 真题10: 真题11: 真题12: 真题13: 真题14&a…

深入剖析Spring框架:循环依赖的解决机制

你好,我是柳岸花开。 什么是循环依赖? 很简单,就是A对象依赖了B对象,B对象依赖了A对象。 在Spring中,一个对象并不是简单new出来了,而是会经过一系列的Bean的生命周期,就是因为Bean的生命周期所…

05集合-CollectionListSet

Collection体系的特点、使用场景总结 如果希望元素可以重复,又有索引,索引查询要快? 用ArrayList集合, 基于数组的。(用的最多) 如果希望元素可以重复,又有索引,增删首尾操作快? 用LinkedList集合, 基于链表的。 如果希望增…

亚马逊测评自养号策略:手机与PC结合的重要性

亚马逊测评的核心关键技术在于精心培养买家账号,之所以称之为核心关键,原因在于测评下单的首要条件是拥有一个活跃的买家账号。买家账号并非一次性使用,因此,养号过程显得至关重要。然而,在养号的过程中,很…

Python基础03-深入探索Python字典操作

在Python中,字典是一种非常强大和灵活的数据结构,可以存储键值对,并提供了许多方法来操作这些键值对。本文将深入探讨Python字典的各种操作,包括如何创建、修改、合并和查找字典中的元素。 1. 创建字典 要创建一个字典&#xff…

【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(三)、功能仿真测试

本次实验(一)见博客:【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(一)、实验指导书 本次实验(二)见博客:【数字电路与系统】【北京航空航天…

【gdb调试】在ubuntu环境使用gdb调试一棵四层二叉树的数据结构详解

目录 🌞1. 整体思路 🌞2. 准备内容 🌼2.1 配置.c文件 🌼2.2 准备测试程序 🌼2.3 GDB调试基础 🌞3. GDB调试四层二叉树 🌼3.1 测试程序分析 🌼3.2 gdb分析 🌻1. …

到2031年,5G服务市场预计将超过9194亿美元

根据 Transparency Market Research 最近的一份报告,到 2031 年,全球 5G 服务市场预计将超过 9194 亿美元。 这相当于 30.8% 的复合年增长率 (CAGR),预计 2022 年市场价值将达到 827 亿美元。 随着 5G 技术的吸引力日益增强,它正在…

真实世界的密码学(四)

原文:annas-archive.org/md5/655c944001312f47533514408a1a919a 译者:飞龙 协议:CC BY-NC-SA 4.0 第十六章:加密何时何地失败 本章涵盖 使用加密时可能遇到的一般问题 遵循烘烤良好的加密的要点 加密从业者的危险和责任 问候…

UE5、CesiumForUnreal实现建筑白模生成及白模美化功能

1.实现目标 在专栏上篇文章基于GeoJson文件生成城市级白模(本文建筑白模数量12w+)的基础上修改,计算法线和纹理坐标,并基于特定材质进行美化,美化后的白模GIF动图如下所示: 文章目录 1.实现目标2.实现过程2.1 基于Cesium材质美化2.1.1实现原理2.1.2 C++代码2.1.3 蓝图应…