Linux小黑板(5):磁盘与文件系统

news2025/1/12 8:41:59

 "这月蹦迪没我"


一、浅谈磁盘

        磁盘作为计算机硬件里,唯一的机械设备。在数据存储的领域,有着不可磨灭的作用。相较于,保持通电情况下具有保持数据的不丢失的内存,磁盘能够"永久性"地存储 数据。

         磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。

        磁盘作为外设,访问肯定会很慢!因此,它常常被拿来同内存的访问读取速度相比较,

  • 内存访问速度是纳秒级(10的-9次方)
  • 硬盘的访问速度是微秒级(10的-3次方)

 对比内存与磁盘从访问方式上:

  • 顺序访问:这种情况下,内存访问速度仅仅是硬盘访问速度的6~7倍
  • 随机访问:这种情况下,内存访问速度就要比硬盘访问速度快上10万倍以上 

但是很多时候,在企业中,并不会因为磁盘的访问速度而将其淘汰掉! 毕竟,内存的成本造价 远超于硬盘的成本,硬盘仍然能以更大的容量,成为存储的主流。 

(1)磁盘的存储结构

俯视结构;

盘片结构;

侧视图;

        有了上面盘片寻址的基础,也就不难理解下面的图。   

         我们都知道,计算机只认识二进制数据。那么磁盘是如何读写的呢?它是如何区别0,1的呢?

        硬盘的盘片上具有磁性,利用磁头进行影响这些带磁的物质排列顺序。磁铁圈影响它们的带电状况,来表示0,1。(显然这里的专业性,不在本篇所讲)。

(2)磁盘的逻辑结构

①LBA地址

        如果你有无穷大的力气,掰直由铝合金打造的硬盘;正如拉常 “老古董”磁带般轻松;

      逻辑区块地址(Logical Block AddressLBA)是描述计算机存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。LBA可以意指某个数据区块的地址或是某个地址所指向的数据区块。

 那么操作系统如何进行 LAB的地址转换呢? 下面我就小小地举个例子;

         为什么需要抽象成逻辑地址?按照磁盘寻址的地址(CHS)难道不香吗?

         1.其原因一肯定在于:抽象成LAB地址 一定是便于OS进行管理的。其次这与后面操作系统与磁盘进行的数据交互的大小也相关(之后会提及)。

        2.其原因二在于:软件与硬件层面上的解耦。

②inode 

        虽然,磁盘寻址按照扇区(512byte)进行,但是这依旧很小!!当要读取足够大的数据时,显然不够有效地减少IO的次数。OS文件系统定制了对多个扇区进行读取: 1KB\2KB\4KB为基本本单位。 哪怕! 你就仅仅要读取或者写入1byte,OS也按照以页(Page)为单位,将数据进行load,并为你写回磁盘!

       这里当然又是局部性原理“救”了我们。

        一个计算机程序倾向于引用邻近于其最近引用过的数据项的数据项。从效率上能够提高cpu高速缓存的命中率。从程序安全上,有可能程序在进行磁盘数据交互时的字节大小,超过了物理内存的总大小,因为其"倾向于较小的活动页面集合上的工作",接下来会对这个工作集命中,而不会产生额外的磁盘流量。

         我们大多数笔记本都只携带了一个硬盘(固态),只不过这个硬盘被划分为了多个区。

那么为什么要么做呢?

        举个例子:

        我们大中国的领土面积有九百六十多万平方千米,但是我们并不是"一方"管理这庞大的区域面积。 而是分为34个省会,四川省、云南省、陕西省……,同时省下面又分了很多个市级,四川省成都市、四川省内江市……。 

        同样的,幼稚园初中高中只有班主任 ,但到了大学就有辅导员。初高中没有各级学院,但到了大学就有经济、护理、电子信息学院等等。

        这么做的目的 就是为了方便管理! 

   然而,计算机里的磁盘分区,远远比不上那些行政区划的管理! 因为一方水土,一方文化。 不是靠模板就能治理好的! 

    对于磁盘而言,500GB和100GB的区别相差无几! 管理好500G大小的磁盘 就等于只需要管理好100GB大小的磁盘大小! 其余的 照着复制粘贴即可!

Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子
Super Block:存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了。

Group Descriptor Table:块组描述符,描述块组属性信息,有兴趣的同学可以在了解一下块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用。

inode Bitmap:每个bit表示一个inode是否空闲可用
Data Blocks:存放文件内容

inode_block存储;

再谈目录 

①文件名与inode

        目录是不是文件呢? 是的! 那它是不是也是有它的属性 + 内容呢?是的!

        刚刚才说了文件的结构。目录也是文件,那它也有自己的inode。那么目录的Datablock是什么呢? inode里不包括文件名,系统查找文件的属性内容只认inode,

        那么我们所看到的文件名是给谁用的呢? 答案是目录! 目录的数据块里存储的数据,就是inode与文件名的映射关系。我们用户 访问某个文件不用知道它的inode,只需要在一个目录下,拿文件名进行访问即可! 底层就是目录帮我 建立了 inode与文件名的映射关系。

②再谈目录权限

        如果要进入一个目录,我们不陌生,需要可执行权限,才能能够进入目录。那么

        如何理解目录的写权限?

对于目录而言,当用户创建一个文件时,本质就是拿着创建好的文件inode与文件名 建立映射关系,并向目录的数据块写入的过程。

同样,删除一个文件,其本质就是根据文件名找到对应的inode,根据inode将inode里的标记位"清零",同时目录并将文件名与inode的映射关系清空即可。

        如何理解目录的读权限?

对于目录而言,读权限,就是访问目录数据块。只有拥有读权限,才能够拿到文件名映射的inode。


总结:

①磁盘是外设具有高容量存储,但低访问效率(相较于cpu、内存)的特点

②磁盘的物理结构:写入读取的磁头、存储信息的扇区。

③磁盘定位算法(CHS),先确定在哪一个磁头,在确定在哪一个柱面(一条磁道),定位在哪一个扇区。

④磁盘的LAB(逻辑)地址是 OS与磁盘数据交互的单位。可以实现软硬件功能的解耦。

⑤linux系统中访问文件的本质,是访问inode。inode是文件系统中文件的唯一标识。

⑥目录也是文件,也是有独立的inode的。但是目录的数据块存储的是文件名与inode的唯一映射关系


本篇就到此结束了,

感谢你的阅读,

祝你好运~

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

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

相关文章

1. R语言介绍、Rstudio的基本使用、【R包的安装与使用】、帮助命令、内置数据集

课程视频链接:https://www.bilibili.com/video/BV19x411X7C6?p1 本笔记参照该视频,笔记顺序做了些调整【个人感觉逻辑顺畅】,并删掉一些不重要的内容 系列笔记目录【持续更新】:https://blog.csdn.net/weixin_42214698/category_…

【Linux】进程控制:父进程与子进程

目录1 进程创建1.1 认识fork1.2 进程创建的目的1.3 写时拷贝1.4 进程创建失败的场景2 进程退出2.1 进程退出状态2.2 进程退出的方式2.3 exit、_exit、return2.3.1 概念2.3.2 区别3 进程等待3.1 理解进程等待3.2 进程等待的方式3.2.1 wait和waitpid3.2.2 status位图结构3.3 阻塞…

【一起从0开始学习人工智能0x04】python相关AI复习【超全面】【收藏】

基础小结 数据类型:Numbers、String、list、tuple、dict字符编码:可以直接.encode(‘utf-8’)、.decode(ascii)循环:for-in迭代器、whilelist列表-最频繁的数据类型。-完成大多数集合类的数据结构实现。它支持字符&am…

十六、状态管理——Vuex(4)

本章概要 表单处理Vuex 与组合 API模块 16.8 表单处理 在表单控件上通常会使用 v-model 指令进行数据绑定&#xff0c;如果绑定的数据是 Vuex 中的状态数据&#xff0c;就会遇到一些问题。看以下代码&#xff1a; form.html <div id"app"><my-component&…

一场衍生于产业的深度变革正在上演,总结起来就是产业互联网的变革

毫无疑问的是&#xff0c;一场衍生于产业的深度变革正在上演。在这样一场深度变革之中&#xff0c;曾经看似无法改变的存在&#xff0c;有了进化的可能性&#xff1b;曾经让玩家们望而却步的领域&#xff0c;有了进军的可能性。如果对这样一场深度变革进行一次总结的话&#xf…

vanishing point detection in autopilot

1. 概述 消失点一种直观的解释是图像中的平行线的交点&#xff0c;也就如下图中路面边界绘制的直线在图像中的交点。 这样的点在自动驾驶场景下可以为解析车辆状态提供一些信息&#xff0c;比如较为常规的运用便是用于车辆的pitch角度。在传统方法中会通过如霍夫算子检测图片…

2022稳定学习年度研究进展系列报告丨精华观点总结

近年来&#xff0c;在独立分布假设的前提下&#xff0c;机器学习模型的表现越来越好。但在实际应用场景中&#xff0c;数据本身却具有很强的异质性和差异性&#xff0c;这就对模型的泛化能力产生了较高的要求。为了解决分布外泛化问题&#xff0c;稳定学习应运而生。12月28日&a…

Python计算机视觉:人脸识别

讲明一下:并没有实现人脸识别的算法,只是利用人脸特征文件(文件从官网上下载),从而进行人脸识别,总感觉识别出来的效果还是有问题的,如:图片最好是人脸的正脸。 1. 人脸特征文件下载 直接去github或者gitee(建议gitee)上去搜索opencv即可,如下: 选择第一个直接进入即…

一篇文章带你了解——Linux中 文件权限 和 粘滞位的 概念 / 作用 及 实现方法

粘滞位首言用户权限文件权限文件类型分类文件访问者的分类实际解读文件权限文件权限设置方法为啥要有文件权限为啥要有粘滞位粘滞位的好处如何添加粘滞位首言 要了解粘滞位&#xff0c;首先得了解文件及用户权限 用户权限 Linux下有两种用户&#xff1a;超级用户&#xff08…

共享内存原理与使用

共享内存是System V版本的最后一个进程间通信方式。共享内存&#xff0c;顾名思义就是允许两个不相关的进程访问同一个逻辑内存&#xff0c;共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一…

vite学习详解

简介 前言 之前vite2刚出的时候其实已经自学过一波&#xff0c;但是老实说学起来完全不入脑&#xff0c;一方面本来这方面的基础就很差&#xff08;指项目配置&#xff09;&#xff0c;另一方面学的时候没有跟着去动手&#xff0c;纯理论的学那完全就是越看越困。最后就是急躁…

java书店带商家商城书店多单商书店系统源码

简介 Java ssm开发的多商家书店商城&#xff0c;用户可以浏览商品&#xff0c;加入购物车&#xff0c;直接下单支付&#xff0c;在我的个人中心里可以管理自己的订单&#xff0c;收货地址&#xff0c;编辑资料等&#xff0c;还可以申请开店&#xff0c;店铺开通后可以发布商品…

C++--list

前言 这篇文章对于理解封装是非常有帮助的&#xff0c;list的底层是双向链表结构&#xff0c;我们在学习数据结构是就已经学过了双向链表&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。因为list独特的结…

nsis打包程序自动生成的快捷方式打不开

nsis 打包程序自动生成的快捷方式打不开 一: 问题描述: nsis 打包程序自动生成的快捷方式打不开, 报的是: 打不开数据库 , 但是在目录下双击exe 是能够打开的 一: 问题推导: 我是先右击自动生成的快捷方式 选择打开文件所在位置, 我发现确实是 我想要那个exe 的所在位置然后…

Zynq PL端调用PS端的时钟

ZYNQ PS端最多可以分配4个时钟供给PL端使用&#xff0c;见下图。 本文的目的&#xff1a;在XCZU21DR环境下&#xff0c;PS给PL提供一个100MHz的时钟&#xff0c;PL端根据此时钟产生1S信号&#xff0c;点亮LED。 添加&配置Zynq UltraScale MPSoc IP 双击该IP&#xff0c;在…

【C++】C++入门知识(一)

作者&#xff1a;一个喜欢猫咪的的程序员 专栏&#xff1a;《C》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 1.C关键字 2.命名空间 2.1局部变量和全局变量 2.2命名空间的概念及使用 2.3…

本硕985计算机,34岁的字节大头兵,上司很器重我,给我加薪不少,但国企也欢迎我,好犹豫该不该去国企!...

互联网VS国企&#xff0c;该怎么选&#xff1f;这是一位34岁的字节程序员面临的选择&#xff1a;在头条是2-2大头兵&#xff0c;本硕985计算机&#xff0c;国企还是比较欢迎他的。原本的想法是在私企干几年&#xff0c;如果干不成管理就去国企。如今没当成管理&#xff0c;但上…

【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛(第二场)程序设计试题及其题解

原题展示 &#x1f4c4; 本试题目的是制作一个商品管理系统&#xff0c;其主要功能为&#xff1a;购买商品、增加商品储量、调节商品价格、查询商品价格&#xff0c;并且能够保存改变后的商品数量与商品价格&#xff0c;总体上看跟第一场的试题差不多&#xff0c;下面就让我们一…

Python Selenium 获取动态网页指定元素的超链接

Python Selenium 获取动态网页指定元素的超链接前言前提条件相关介绍实验环境获取动态网页指定元素的超链接目标网址代码实现前言 本文是个人使用Python Selenium 获取动态网页指定元素的超链接的电子笔记&#xff0c;由于水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评…

详解浮点数在内存中的存储

目录 前言 一、 32 位单精度浮点数在内存中的存储 1.1 - 符号位 sign 1.2 - 偏移后的指数位 biased exponent 1.3 - 尾数位 fraction&#xff08;mantissa&#xff09; 二、64 位双精度浮点数在内存中的存储 三、浮点数的比较 前言 计算机内部实际上只能存储和识别二进制…