Linux基础之文件系统

news2024/9/27 7:26:21

一、磁盘结构的认识

       首先我们能认识到的一点是:不是所有的文件都被打开的!
       大部分文件都不是被打开的(当前并不需要被访问),都在磁盘中进行保存。那么没有被(进程)打开的文件,要不要管理呢?对于这部分文件的核心工作是什么呢? -- 肯定是需要管理的,以便于快速定位(根据路径)。
文件的管路工作(文件系统 -- 文件的存储的问题):
1.打开的文件进行管理
2.没有被打开的文件也要在磁盘中进行管理

 首先打开的文件会由我们的OS创建struct file进行管理,那未打开的文件呢。在讲这个之前,我们先来认识一下磁盘的结构。


可以看到磁盘可以分为多个盘面,一个盘面会有一个磁头。

而当我们读取文件时,其实在硬件上就是先选择盘面,再选择扇区和磁道,然后通过磁头进行数据的读取。扇区是磁盘的最小的存储单元,一般大小为512字节。

二、OS中对磁盘结构的管理

磁盘这个硬件肯定是会接入我们的电脑的,那么OS要不要对该硬件资源进行管理呢,很明显,是一定要的,这里之前我们已经提到过了。硬件资源管理好了,其内容我们需不需要管理了,同样也是需要得,而我们磁盘得所存储得内容就是我们一个个的文件资源。实际上,扇区会划分为多个块组(一个块组4KB),我们主要是针对一个个块组进行管理的,将所有的块组管理好,也就相当于把磁盘给管理好了。那么接下来让我们看看OS中块组的结构:

 接下来介绍一下这几个区域分别代表什么意思

        inode Table:一般情况一个文件会有一个inode编号,这个inode编号在整个分区具有唯一性,可以很好的来标识文件在linux内核中,识别文件,和文件名无关,只和inode有关。该inode表存放的是一个inode对应存放文件属性,如文件大小,所有者,最近修改时间等。

        inode Bitmao:inode 位图,每个bit表示一个inode是否空闲可用。

        Block Bitmap:数据块位图,标识哪些数据块未被使用或者正在被占用。

        Data blocks:数据块,存放文件的内容。

        Group Descriptor Table:块组描述符,描述该块组的信息,标识还有多少数据块,多少inode可以使用。

        Super Block:超级块,存放文件系统本身的结构信息。

通过这里我们可以了解到我们的OS是通过inode进行文件的定位和操作的,那为什么我们没有看见呢?我们可以通过命令查看,ls -i

每个文件的前面那一串数字就是其inode,也就是说在文件的目录中,OS已经将文件和inode映射好了。我们来回顾一下,我们想在一个目录底下创建和删除文件,需要什么权限呢?需要w权限,为什么呢?想必通过这个大家就可以理解了。

接下来再给大家展示一下文件的创建过程:

  1. 存储属性
    内核先找到一个空闲的i节点(这里是263466)。内核把文件信息记录到其中。
  2. 存储数据
    该文件需要存储在三个磁盘块,内核找到了三个空闲块:300,500,800。将内核缓冲区的第一块数据复制到300,下一块复制到500,以此类推。
  3. 记录分配情况
    文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表。
  4. 添加文件名到目录
    新的文件名abc。linux如何在当前的目录中记录这个文件?内核将入口(263466,abc)添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。
     

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

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

相关文章

Python 中什么是 Mock 对象?如何在测试中使用

Python 中什么是 Mock 对象?如何在测试中使用 在软件开发中,测试是确保代码质量的重要环节。尤其是在编写单元测试时,测试的准确性和可靠性至关重要。为了确保测试的有效性,开发者通常会使用 Mock 对象。本文将详细介绍 Mock 对象…

深度学习基础案例7--马铃薯病识别,对VGG16进行轻量级优化,计算量减少了99%,但是准确率下降4%

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 本来想继续优化的,但是我看论文和查阅一些资料,涉及到了知识蒸馏、量化的知识,这些知识我需要花一点时间去研究一下&…

4. 数据结构: 对象和数组

数字、布尔值和字符串是构建数据结构的原子。不过,许多类型的信息需要不止一个原子。对象允许我们对值(包括其他对象)进行分组,从而构建更复杂的结构。到目前为止,我们所构建的程序都受到限制,因为它们只能…

MyBatis 入门教程-搭建入门工程

Maven作为一个优秀的项目构建和管理工具,在日常的开发中被大多数开发者使用,后续的项目也是基于Maven来构建。 创建一个Maven项目 利用IDEA创建项目工具来创建一个Maven项目 添加MyBatis的依赖 这里可以从Maven仓库地址中进行查看, https://mvnrepository.com/ 从这里可…

SUB1G无线通信模块赋能对讲机无线联网

一、模组介绍: ANS TKM-220是一款专为LPWAN物联网应用而研制的SUB1G无线模组,使用全新的TurMassTM 技术,具有超大容量 、高速率 、广覆盖和低成本的特点,处于国际领先水平 。 二、模组特点: ◉ 采用独创的TurMass™…

Oracle 19c 使用EMCC 监控当前所有数据库

一.EMCC简介 EMCC,全称Oracle Enterprise Manager Cloud Control,是Oracle提供的一套集中化监控工具,可以对数据库、操作系统、中间件等进行监控,通过OMS(Oracle Management Service)收集监控数据并将监控信…

Golang | Leetcode Golang题解之第421题数组中两个数的最大异或值

题目: 题解: const highBit 30type trie struct {left, right *trie }func (t *trie) add(num int) {cur : tfor i : highBit; i > 0; i-- {bit : num >> i & 1if bit 0 {if cur.left nil {cur.left &trie{}}cur cur.left} else …

C# 数据校验与控件绑定

在上一篇中,写了使用特性对一个对象的值进行校验;虽然代码比较简单,但依然不是最优解,在做数据新增校验的时候,倒也没什么问题,毕竟这是WinForm;但是如果是做数据编辑,代码就会变得更…

遗忘的数学(拉格朗日乘子法、牛顿法)

目录 拉格朗日乘子法定理 证明:​编辑 应用条件与符号选择 雅可比矩阵 黑塞矩阵 牛顿法 解方程的根的牛顿法 解方程组的根的牛顿法 数值优化的牛顿法(求最值) 拉格朗日乘子法定理 证明: dSi这一段没看懂…… 应用…

“AI+Security”系列第3期(四):360安全大模型业务实践

近日,由安全极客、Wisemodel 社区、InForSec 网络安全研究国际学术论坛和海升集团联合主办的“AI Security”系列第 3 期技术沙龙:“AI 安全智能体,重塑安全团队工作范式”活动顺利举行。此次活动吸引了线上线下超过千名观众参与。 活动中&…

C++——关联式容器(5):哈希表

7.哈希表 7.1 哈希表引入 哈希表的出现依旧是为了查找方便而设计的。在顺序结构中,查询一个值需要一一比较,复杂度为O(N);在平衡树中,查询变为了二分查找,复杂度为O(logN);而对于哈希表,我们可…

BST-二叉搜索树

前言 从图的角度出发,树是一种特殊的图。图的大多数算法,树都可以适用。对树操作中,你可以发现有关图算法思想的体现。 不过, 本篇不是完全从图的角度解读树, 重点在初学者视角(一般学习数据结构顺序是从树…

码点和码元的区别--Unicode标准的【码点】和【码元】

Unicode是通用字符编码标准是计算机科学领域里的一项业界标准,包括字符集、编码方案等。 Unicode标准定义了一个统一的多语言文本字符集(即Unicode字符集)。 Unicode标准定义了三种字符编码方案:UTF-8、UTF-16、UTF-32。 因此&…

【Java面向对象高级06】static的应用知识:代码块

文章目录 前言一、代码块概述二、代码块分2种 1、静态代码块2、实例代码块总结 前言 记录static的应用知识:代码块 一、代码块概述 代码块是类的5大成分之一(成员变量,构造器,方法,代码块,内部类&#xf…

「Python教程」vscode的安装和python插件下载

粗浅之言,如有错误,欢迎指正 文章目录 前言Python安装VSCode介绍VSCode下载安装安装python插件 前言 Python目前的主流编辑器有多个,例如 Sublime Text、VSCode、Pycharm、IDLE(安装python时自带的) 等。个人认为 vscode 虽然在大型项目上有…

一个好用的MP3音乐下载网,我推荐给你(免费)

点击访问->https://www.gequbao.com/ 或用Bing搜索歌曲宝即可。 主页面长这样子~ 以最近大火的悲鸣海为例,搜索; 以第一个为例,点击; 它既支持下载.mp3格式的音乐文件,还支持下载.lrc的歌词文件。 非常好用&…

使用ChatGPT引导批判性思维,提升论文的逻辑与说服力的全过程

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 批判性分析(Critical Analysis) 是论文写作中提升质量和说服力的重要工具。它不仅帮助作者深入理解和评价已有研究,还能指导作者在构建自己论点时更加…

网络工程师学习笔记——网络互连与互联网(三)

TCP三次握手 建立TCP连接是通过三次握手实现的,采用三报文握手主要是为了防止已失效的连接请求报文突然又传送到了,因而产生错误 主动发起TCP连接建立的称为客户端 被动等待的为TCP服务器,二者之间需要交换三个TCP报文段 首先是客户端主动…

jQuery——对象的使用

1、理解:即执行 jQuery 核心函数返回的对象 2、jQuery 对象内部包含的是 dom 元素对象的伪数组(可能只有一个元素) 3、jQuery 对象是一个包含所有匹配的任意多个 dom 元素的伪数组对象 4、基本行为: ① size(&#xf…

Java_Se 数组与数据的存储

数组是相同类型数据的有序集合。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。 数组的四个基本特点: 1.长度是确定的。数组一旦被创建,它的大小就是不可以改变的。 2.其元素…