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

这篇具有很好参考价值的文章主要介绍了【Linux】15. 文件系统与软硬链接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 文件系统的引出

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

2. 硬件结构的学习

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

2.1 磁盘的物理结构

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

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

2.2 磁盘的存储结构

【Linux】15. 文件系统与软硬链接
磁盘的盘面的转速很快,通常可能达到1w转1s,这么快的标准是什么,需要让磁头快速定位到磁道和扇区,在单位时间内(非常短:1s/1w)将该扇区的数据全部读出

2.3 磁盘的逻辑结构

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

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

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

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

3. 文件系统

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

创建/删除文件操作

创建文件: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的映射关系

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

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

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

4. 软硬链接

【Linux】15. 文件系统与软硬链接
【Linux】15. 文件系统与软硬链接
【Linux】15. 文件系统与软硬链接
【Linux】15. 文件系统与软硬链接
【Linux】15. 文件系统与软硬链接文章来源地址https://www.toymoban.com/news/detail-485285.html

到了这里,关于【Linux】15. 文件系统与软硬链接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】文件系统软硬链接的那些事儿

    作者:დ旧言~ 座右铭:松树千年终是朽,槿花一日自为荣。 目标:理解什么是软硬链接,并且能创建软硬链接。 毒鸡汤:再小的事,别人做了是情分,不做是本分。可是有些人,永远只要求他人付出,不懂得感恩。 专栏选自:Linux初阶 望小伙伴们点赞👍收藏✨加关注哟💕💕

    2024年04月22日
    浏览(30)
  • 【Linux】-文件系统的详解以及软硬链接

    💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C++ 动态规划算法🎄 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 今天我们开始讲解文件系统,上一篇我们通过文件操作,

    2024年02月04日
    浏览(27)
  • 【Linux】基础 IO(文件系统 & inode & 软硬链接)-- 详解

    1、前言 我们一直都在说打开的文件,磁盘中包含了上百万个文件,肯定不可能都是以打开的方式存在。其实文件包含打开的文件和普通的未打开的文件,下面重点谈谈未打开的文件。 我们知道打开的文件是通过操作系统被进程打开,一旦打开,操作系统就要维护多个文件,

    2024年03月21日
    浏览(35)
  • 【Linux】基础IO——文件系统|软硬链接|动静态库

    基于上篇博客所写到的文件各种操作都是基于被打开文件所进行操作的,那么如果一个文件没有被打开它存在哪里呢?这个答案毫无疑问肯定是存在于磁盘上的。那么,对于一个没有打开的文件(也就是磁盘文件)我们应该如何理解呢? 这里我们所要讲的磁盘是机械硬盘、即

    2024年02月04日
    浏览(33)
  • 【Linux】文件系统中inode与软硬链接以及读写权限问题

    我们接下来以磁盘举例: 文件=文件内容+文件属性 Linux中文件内容与属性是分开存储的。 文件内容:在数据块中存着 文件属性:在inode中存着 Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子 超级块(

    2024年02月05日
    浏览(60)
  • 【探索Linux】—— 强大的命令行工具 P.13(文件系统 | 软硬链接 | 动态库和静态库)

    在计算机科学领域中,Linux 系统一直以来都是备受推崇的操作系统之一。其中,文件系统、软硬链接、动态库和静态库是 Linux 系统中非常重要的概念,在实际应用中扮演着不可或缺的角色。 在上一篇文章中,我们了解了 Linux 系统中文件描述符、重定向以及基础 IO 操作的相关

    2024年02月04日
    浏览(37)
  • [Linux]理解文件系统!动静态库详细制作使用!(缓冲区、inode、软硬链接、动静态库)

            hello,大家好,这里是bang___bang_,今天来谈谈的文件系统知识,包含有缓冲区、inode、软硬链接、动静态库。本篇旨在分享记录知识,如有需要,希望能有所帮助。 目录 1️⃣缓冲区 🍙缓冲区的意义 🍙常见缓冲区刷新策略 🍙缓冲区位置猜想 🍥现象猜测 🍥现象解

    2024年02月13日
    浏览(31)
  • 文件系统和软硬链接

    文件操作就是进程和被打开文件之间的关系,但是操作系统不可能同时将磁盘中的所有文件打开。被打开的文件要被管理起来,没有被打开的文件为了方便我们随时去读取也要被管理起来。 1.了解磁盘的物理结构 磁盘是计算机中几乎唯一 一个机械设备并且是一个外设,它的

    2024年02月01日
    浏览(24)
  • 【linux】文件系统+软硬连接+动静态库

    自我名言 : 只有努力,才能追逐梦想,只有努力,才不会欺骗自己。 喜欢的点赞,收藏,关注一下把! 文件分为:被打开的文件和没被打开的文件,前面两篇博文主要讲解的是进程与被打开文件的关系。今天这篇博客讲的是没被打开的文件如何在磁盘上存放,文件系统如何

    2024年02月07日
    浏览(25)
  • 【Linux】—— 详解软硬链接

    前言: 本期,我将要给大家讲解的是有关 Linux下 软硬链接 的相关知识!!! 目录 前言 (一)理解硬链接 1.什么是硬链接 2.创建硬链接  3.硬链接的使用场景 (二)理解软链接 1.什么是软链接 2.创建软链接 3.软链接使用场景 (三)硬链接和软链接的对比 总结 文件共享可以

    2024年02月03日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包