<Linux系统复习>文件系统的理解

news2024/12/28 17:45:40

一、本章重点

1、磁盘的物理结构

2、磁盘文件如何存储?

3、目录的理解

4、创建一个文件做了什么?

5、删除一个文件做了什么?

6、软连接

7、硬链接

01 磁盘的物理结构

 

 磁盘是硬件结构唯一的机械设备,它通过磁头来进行磁盘的读写,磁头不与磁盘直接接触,中间留有一些空隙。读写时,N-S极来代表0-1数据。每个盘面都有一个磁头,磁盘的基本读写单位是扇区。以前的扇区大小一般是512字节,近几年出现了一些4k大小的扇区。

磁道(Tracker):磁盘表面被分为许多同心圆,每个同心圆称为一个磁道。

磁柱(Cylinder):多个磁盘的同一个磁道重叠起来叫做磁柱。

磁面(Head):一个盘面。

扇区(Sector):磁道的一个扇形区域

CHS的寻址方式:就是通过磁柱、磁面、扇区来确定一个唯一的扇区位置。

02 磁盘文件如何存储?

操作系统将磁盘看做线性结构,将每个扇区组合起来就是一个数组结构,不过扇区是512字节(之前的扇区),操作系统读写起来太慢了,会将多个扇区看成一个,操作系统的读写基本单位是4k。

对于磁盘的管理,一个大数组不好直接管理,先会分为几个区。

 这里的区1和区2相当于电脑上的c盘和d盘。

LBA:逻辑块地址,简单来说就是数组的下标 ,LBA可以转化为CHS地址,间接找到对应的扇区。

由于区还是太大了,会分为多个组进行管理。

 为方便管理,每一个BlockGroup结构和大小都是相同的。

1、Boot Block:启动块,包含了开机启动的操作系统的文件路径。

2、Group Descriptor Table:组描述表,记录块组属性信息,比如该组的Inode的使用情况、DataBlock的使用情况、整个组还剩多少空间等。

3、Block BitMap:数据块位图,标记哪些数据块已被使用,哪些数据块未被使用。

4、Inode BitMap: inode位图,标记哪些Inode已被使用,哪些inode未被使用。

5、Inode Tabel:Inode表,Inode结构体集合,每个inode都是有编号的,inode结构体用来存放文件的属性信息。

6、Data Blocks:数据块集合,每个数据块都是有编号的,数据块用来存放文件的内容。

提问:

inode结构体是如何指向Data Blocks的呢?

 原因在于inode中有一个数组保存着data block编号。

03 目录的理解

目录本质也是一个文件,是文件就分为文件属性和文件内容。文件属性存放在inode结构体中,目录的文件内容存放的是inode编号和文件名的集合。

inode编号:系统层面标识文件唯一性的编号,该编号在inode的结构体中。

文件名:属于文件属性,但不存放在inode结构体中,而是存放在文件所在的目录的数据块中。

04 创建一个文件做了什么?

先去inode位图找一个未被使用的inode编号,然后初始化该inode编号,如果文件有内容就去block位图申请几个数据块来存数据,没有就之后写的时候再申请。再找到当前目录的名字,进而找到目录的inode编号,然后再找到对应的数据块,将创建好的inode编号和文件名的映射关系写入目录的数据块中。

那么知道目录的名字如何找到该目录inode编号呢?

想要知道目录的inode,就必须知道上层的inode编号,想知道上层的inode编号,就必须知道上上层的inode编号.....。因此想通过目录名知道该目录的inode,一般得递归访问到根目录。

05 删除一个文件做了什么?

将inode位图的对应位置由1置为0,将block位图的对应位置由1置为0,将所在目录对应的数据块对应的block位图由1置为0。

06、软链接

软链接:创建一个文件,该文件的数据块存的是所指向文件的路径。

指令:ln -s 文件名1 文件名2

作用:文件名2 指向 文件名1

 

 软链接本质是:创建一个新的文件,该文件的数据块存放要指向的文件路径,类是于快捷方式。

07 硬链接

指令:ln 文件名1 文件名2

功能:给文件名1取个别名为文件名2

 硬链接并不会创建一个新的文件,而是在所在目录的数据块中添加了一对新的映射关系,相当于给test取了个别名。

硬链接数:

 普通文件的硬链接数是1,而目录文件的硬链接数是2?

硬链接数本质是一个inode结构体中的一个计数器,记录的是有多少个文件名与该inode编号映射。

普通文件只有test文件名与inode编号映射。

目录文件有dir和.这两个文件名与inode编号映射。

如果在目录文件下还有一个目录,那么它的硬链接数会达到3,因为有.和..和dir都与inode编号映射。

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

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

相关文章

LabVIEW前面板上的字体大小取决于操作系统

LabVIEW前面板上的字体大小取决于操作系统 创建了一个VI,其前面板使用了多个标签和文本。我发现Windows 7系统上的字体大小与Windows 10系统上的字体大小不同。这导致我的前面板看起来不像我希望在计算机上看到的那模样。如何使字体在所有Windows操作系统上变得相同…

【Linux_】权限

【Linux_】权限 心有所向,日复一日,必有精进专栏:《Linux_》作者:沂沐沐目录 【Linux_】权限 前言 Linux权限的概念(是什么)? 什么是权限? Linux权限管理 文件访问者的分类&am…

npm包学习

想开发自己的的工具包,那必然要借鉴一些常用的npm包来帮我们解决一些问题,下面就罗列一些在学习vue-cli实现原理时候遇到的一些依赖包吧。 1、chalk 用途:可以修改终端输出字符的颜色,类似css的color属性,npm地址&am…

100天精通Python(数据分析篇)——第62天:pandas常用统计方法与案例

文章目录每篇前言一、常用统计方法与案例1. 求和(sum)2. 求平均值(mean)3. 求最小值(min)4. 求最大值(max)5. 求中位数(median)6. 求众数(mode&am…

jQuery网页开发案例:jQuery 其他方法--jQuery 拷贝对象,多库共存,jQuery 插件

jQuery 对象拷贝 如果想要把某个对象拷贝(合并) 给另外一个对象使用,此时可以使用 $.extend() 方法 语法: $.extend([deep], target, object1, [objectN]) 1. deep: 如果设为true 为深拷贝, 默认为false 浅拷贝 …

做减法才是真本事,别以为你很能学,做加法一点都不难

文章目录 顶级的高手才敢做减法 前言 一、做减法才是真本事 二、大数据梦想联盟活动开启 顶级的高手才敢做减法 前言 大多数人不懂,不会,不做,才是你的机会,你得行动,不能畏首畏尾 大数据等于趋势,一…

Vue中computed和watch区别

前言 vue中的computed和watch我们经常会用到,那么在什么场景下使用computed和watch,两者又有什么区别呢,傻傻分不清楚。记录一下,温故而知新! computed computed是计算属性,基于data中声明过或者父组件传递…

makkefile文件自动化编译以及基础文件命令(补)

目录makefile文件:实现自动化编译基础文件命令find(查找)grep(过滤)| (管道)关机重启文件压缩解压分步压缩解压一步压缩解压makefile文件:实现自动化编译 文件名称必须是:makefile …

【day15】每日强训编程题——查找输入整数二进制中1的个数手套

查找输入整数二进制中1的个数_牛客题霸_牛客网 这道题非常简单,就一个思路: 按位与& 任何一个数按位与上1,如果这个数二进制的最后一位是1,那么按位与的结果就是1,否则就是0 代码思路:n按位与1后往右…

【splishsplash】PBD探究

上次我们探究了PBD是如何引入plishsplash的,以及其控制流。 https://blog.csdn.net/weixin_43940314/article/details/127569870 这次我们来讲如何在自己新建的类中控制PBD刚体。 上回说到 Simulator\PositionBasedDynamicsWrapper\PBDWrapper.cpp 中的 void PBD…

AXI协议详解(6)-原子访问

原子访问 本章介绍了 AXI 协议如何实现排他访问和锁定访问机制。 它包含以下部分: 原子访问排他访问锁定访问 6.1 原子访问 为了实现原子访问权限,ARLOCK[1:0] 或 AWLOCK[1:0] 信号提供排他访问和锁定访问。 表 6-1 显示了 ARLOCK[1:0] 和 AWLOCK[1:…

3.NLP基础:文本可视化简述

1.文本可视化的流程 文本可视化依赖于自然语言处理,因此词袋模型、命名实体识别、关键词抽取、主题分析、情感分析等是较常用的文本分析技术。文本分析的过程主要包括特征提取,通过分词、抽取、归一化等操作提取出文本词汇级的内容,利用特征…

Qt 集成 FFmpeg 实现颜色格式转换

目录 1. Qt 集成 FFmpeg 1.1 下载 FFmpeg 1.2 Qt 集成 FFmpeg 1.2.1 修改 .pro 文件 1.2.2 放入 dll 文件 1.2.3 代码中使用 FFmpeg 2. 图像格式转换 3. 预览 4. 项目地址 项目需要,写个小工具来实现图像颜色格式的转换,主要的 Feature 如下&am…

百度最强中文AI作画大模型

前言 最近文生图领域的发展可谓是分生水起,这主要是得益于最近大火的扩散模型,之前笔者也写过一篇关于文本生产3D模型的文章,大家感兴趣的可以穿梭: https://zhuanlan.zhihu.com/p/570332906 今天要给大家介绍的这一篇paper是百度…

AXI协议详解(10)-非对齐传输

非对齐传输 本章介绍 AXI 协议如何处理未对齐的传输。 它包含以下部分: • 未对齐的传输 • 示例 10.1 关于未对齐传输 AXI 协议使用基于突发的寻址,这意味着每个事务由多个数据传输组成。 通常,每个数据传输都与传输大小对齐。 例如&…

Linux入门

Liunx 一计算机发展历史第一台计算机的诞生时代背景线计算机的发展线国家线时间线收束Liunx诞生操作系统简述购买云服务器以及登录增加用户总结学习的同时别忘了每天运动! 身体才是革命的本钱 计算机发展历史 第一台计算机的诞生 第一台计算机在1946年2月14日在美国…

webpack学习踩坑笔记(持续更新中...)

目录 学习内容: 1.5使用plugin 1.6 使用DevServer 学习内容: 《深入浅出webpack》 深入浅出Webpack Dive Into GitBook 因为很多内容书上已经写了,这里主要是记录一下个人看书过程中遇到的坑 1.5使用plugin 这一部分介绍了一个可以把…

vue3事件处理

获取到用户点击或者勾选的值 <li click“clici(item)” v-for"item in data" :key"id"> {{item}}</li> <script> clici(item){ } </script> v-model 实现数据的双向绑定 v-model.lazy 只有当用户提交或enter键后才触…

【数据结构】动态顺序表(C语言实现)

文章目录0. 前言1. 线性表2. 顺序表2.1 概念及结构3. 动态顺序表的实现3.1 定义结构3.2 接口函数总览3.3 初始化3.4 检查增容3.5 尾插3.6 尾删3.7 头插3.8 头删3.9 查找3.10 指定下标位置插入3.11 指定下标位置删除3.12 修改3.13 打印3.14 销毁4. 完整代码SeqList.hSeqList.cte…

HTML常见标签总结

目录 1.标题标签 2.段落标签 3.字体修饰标签 4.图片标签 5.超链接标签 6.表格标签 7.列表标签 8.表单标签 9.下拉菜单 10 多行文本框 1.标题标签 一级标题是<h1></h1>中间填上标题的内容,一共可以设置六级标题,数字越小,标题就越大越粗 我们测试一段代码 …