【Linux】15. 文件系统与软硬链接

1. 文件系统的引出

在之前的学习过程当中,我们知道当文件被打开后需要加载进内存,第一步为其创建struct file结构体描述其结构(操作系统需要管理被打开的文件:先描述再组织),在通过进程当中的文件描述符指针指向文件描述符表,根据文件描述符的分配规则给新打开的文件分配文件描述符,那么此时进程就通过文件描述符和文件建立起联系。
进程与文件关系的博客链接
当我们进行文件操作时,例如写入文件就需要先将数据拷贝进C语言封装的文件缓冲区,再拷贝进内核缓冲区,最后再写入到外设(磁盘)当中…
文件缓冲区的博客链接
而以上这些操作都是进程与被打开文件之间的关系,那么对于未打开的文件,操作系统是不是也需要进行管理操作呢?
没有被打开的文件都只能安静的在磁盘上存放着,磁盘上存在大量文件需要被OS静态管理起来,方便我们随时打开 – 这就是文件系统的作用

2. 硬件结构的学习

在详细描述文件系统之前,需要我们对硬件有一定程度的了解,下面咱们就来简单认识一下吧!!!

2.1 磁盘的物理结构

目前在笔记本当中已经很少见到使用磁盘来作为存储结构了,大多数都是固态硬盘(同等存储量固态硬盘的价格要高于机械硬盘,固态硬盘的访问速度更快)
但是在企业当中还是通常使用磁盘来作为数据存储的主流,因为固态硬盘还存在访问次数的限制(访问次数过多可能会造成击穿现象)
而且磁盘的造价更低
磁盘是属于计算机结构当中的唯一一个机械结构!!!
而且磁盘是外设,这二者结合起来导致硬盘的访问速度非常低(跟CPU相较而言)

在这里插入图片描述
盘面此时在高速旋转,磁头也在不停摆动
但是盘面和磁头不接触(盘面上存储的就是大量的数据,一旦磁头和盘面进行接触,可能会刮花盘面,导致数据丢失)
可以通过小时候使用的光盘来理解,光盘只有一面有数据,一旦刮花光盘播放起来就很卡(掉帧 – 数据丢失)
所以,磁盘对无尘环境的要求很高,一旦出现灰尘与盘面或者磁头发生碰撞,都可能导致磁盘的损坏

2.2 磁盘的存储结构

在这里插入图片描述
磁盘的盘面的转速很快,通常可能达到1w转1s,这么快的标准是什么,需要让磁头快速定位到磁道和扇区,在单位时间内(非常短:1s/1w)将该扇区的数据全部读出

2.3 磁盘的逻辑结构


在这里插入图片描述

为何OS要对磁盘进行逻辑抽象呢?直接用CHS寻址不行吗?

  1. 方便管理
  2. 不想让操作系统的代码和硬件强耦合(当磁盘切换成固态硬盘,这套管理方法也能适用,但是CHS就不行啦!)

虽然对应的磁盘访问的基本单位(扇区)是512字节,但是依旧很小,OS内的文件系统定制的进行多个扇区的读取都是以1KB或者2KB或者4KB(通常是以4KB)为基本单位。即便你只是单纯的想要读取或者修改1个比特位,也必须将4KB的空间加载进内存进行读取或者修改,再重新将这些数据写回磁盘
那么这种写入方式不是非常浪费内存空间吗?为啥操作系统会这样操作呢?
因为局部性原理的原因:
局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。通俗来讲,就是CPU访问该字节,那么极大概率会访问该字节前后的数据
所以,直接将这一块的数据全部加载进内存也能提高CPU访问数据的效率
内存是被划分成为4KB大小空间(页框) 磁盘当中的文件尤其是可执行文件也是按照4KB大小来划分的(页帧)

3. 文件系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建/删除文件操作

创建文件:1. 在inode位图结构当中将对应的比特位由0置1,根据inode找到inode table ,将文件的属性填入。
2. 将数据写入data block当中,建立inode和data block的映射关系
3. 最后返回inode编号
删除文件:1. 找到inode编号在inode bitmap当中的位置将其由1置0即可,数据块当中的bitmap位置也由1置0(惰性删除)

删除后恢复

文件删除后是可以恢复的,只需要将inode编号得到,将inode bitmap当中的比特位由0置1,再找到inode和数据块之间的映射关系
将data block中的比特位由0置1… 但是Linux当中恢复文件比较复杂
(不小心误删文件,什么都别做 再新建写入文件就真正删除)

目录也是文件

当我们自己在使用shell时,查找文件都是使用文件名,并不是inode ,文件名和inode之间存在什么关系嘛?
任何一个文件肯定在目录下,同样的,目录也是文件,也必然存在inode(文件属性)和数据块
目录的数据块当中存放什么内容呢?
目录里面存放的是文件名和inode的映射关系!!!

所以,我们在日常过程中使用ls,一定是查找当前目录下的数据块当中文件名,将inode和文件名之间的映射关系提取出来
同一目录下不能存在同名文件,文件名在当前目录下就属于唯一key值,通过文件名就可以索引到inode

之前的学习过程中,要在目录下新建文件必须要有该目录的写入权限,这是为何?
因为要新建文件就必须要往该目录的数据块当中写入文件名和inode的映射关系

在这里插入图片描述

创建一个新文件主要有一下4个操作:

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

4. 软硬链接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

江苏某农商行稳健发展,软件安全推动金融服务新气象

​江苏某农商银行是全国最早成立的农商行之一。面对复杂严峻的内外部形势,该农商行在坚守服务“三农”与小微市场的同时,紧跟改革脚步,不断探索业务创新与数字化转型,实现经营稳健发展。 打造多维度数字化体系 驱动农商行创新发展…

2024浙大GMSCM提面第一场:全英文项目的生死选择题

本周末是今年浙大MBA非全英文项目GMSCM的第一场提前批面试,作为诸多方向中相对比较稳定的项目之一,GMSCM项目每年的提前批面试申请也都表现的比较稳健,而其目前主要的招生也是依托于提前批面试,根据这几年的情况,每年浙…

【数据可视化】SVG(一)

一、邂逅SVG和初体验 什么是SVG  SVG全称为(Scalable Vector Graphics),即可缩放矢量图形。(矢量定义:既有大小又有方向的量。在物理学中称作矢量,如一个带箭头线段:长度表示大小&#xff0…

利用Visual Studio 2022 导出目标dll API接口

利用Visual Studio 2022 导出目标dll API接口 操作路径: 指令如下: dumpbin /exports /out:C:\\Users\\Administrator\\Desktop\\PlantSimCore.txt C:\\Users\\Administrator\\Desktop\\PlantSimCore.dll dumpbin /exports /out:C:\\Users\\Administrator\\Desktop\\

spring使用01

① 导入 Spring 开发的基本包坐标 ② 编写 Dao 接口和实现类 ③ 创建 Spring 核心配置文件 ④ 在 Spring 配置文件中配置 UserDaoImpl ⑤ 使用 Spring 的 API 获得 Bean 实例 第一步&#xff1a;创建maven的web骨架 然后&#xff0c;导入 Spring 开发的基本包坐标 <depe…

冯·诺依曼架构哈佛架构(嵌入式学习)

冯诺依曼架构&哈佛架构 0. 前言1. 冯诺依曼架构&#xff08;von Neumann architecture&#xff09;关键组件限制&挑战 2. 哈佛架构关键组件限制&挑战 3. 冯诺依曼架构&哈佛架构的区别4. 知识扩展 0. 前言 冯诺依曼架构&#xff08;von Neumann architecture&a…

Gartner发布2023新兴技术雷达图,超级自动化安全、生成式AI是高影响力技术

在Gartner发布的“2023新兴技术影响力雷达图”中&#xff0c;围绕智能世界、生产力革命、透明度和隐私****以及关键使能技术四大主题&#xff0c;对24种最具颠覆和市场变革性的新兴趋势和技术进行了评估。 其中&#xff0c;边缘AI、边缘计算机视觉处于雷达图核心位置&#xff…

大数据环境下保护个人隐私

近日&#xff0c;某高校毕业生在校期间窃取学校内网数据&#xff0c;收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代&#xff0c;算法分发带来了隐私侵犯&#xff0c;在享受消费生活等便捷权利的同时&#xff0c;似乎又有不…

电气自动化入门——总览

目录 学习路线 电气设备组成部分 设备驱动类设备元件 常用电机类型 电机控制器类型​编辑 气缸类设备驱动 设备控制与数据采集监控部分 小型PLC 中大型PLC 数据采集与监控 HMI——人机交互界面 IPC——工控机 设备检测反馈元件——传感器 学习路线 电气设备组成部分 …

基于matlab使用高斯混合模型检测和计数视频序列中的汽车(附源码)

一、前言 此示例演示如何使用基于高斯混合模型 &#xff08;GMM&#xff09; 的前景检测器检测和计数视频序列中的汽车。 检测和计数汽车可用于分析交通模式。检测也是执行更复杂的任务&#xff08;例如按类型跟踪或分类车辆&#xff09;之前的第一步。 此示例演示如何使用前…

Spring MVC是什么?详解它的组件、请求流程及注解

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 前言 本文将讲解Spring MVC是什么&#xff0c;它的优缺点与九大组件&#xff0c;以及它的请求流程与常用的注解。 目录 一、Spring MVC是什…

【Redis】五大数据类型

&#x1f3af;Redis 数据类型 &#x1f4ad;Redis支持五种数据类型&#xff1a;String(字符串)&#xff0c;Hash(哈希)&#xff0c;List(列表)&#xff0c;Set(集合)及zset(sorted set有序集合)。 &#x1f4dd;String(字符串) Redis的String类型是一种最基本的数据类型&…