Ext文件系统

文件=内容+属性

被打开的文件在内存中,没有被打开的文件在磁盘里文件系统的工作就是根据路径帮我们找到在磁盘上的文件

磁盘(硬件)

磁盘的存储结构

磁头在传动臂的运动下共同进退,向磁盘写入的时候是向柱面批量写入的

OS文件系统访问磁盘不以扇区为单位,而是以块为单位,一般是4KB(连续8个扇区),(可以调整)

磁盘的存储结构

扇区是磁盘存储数据的基本单位,512字节,块设备

定位一个扇区,可以先定位磁头,确定磁头要访问的柱面/磁道,再定位扇区

CHS地址定位     柱面(cylinder),磁头(head),扇区(sector)    数据定位

扇区是从磁盘读写信息的最小单位,通常大小为512字节

磁头数:每个盘片一般有上下两面,共两个

磁道数:磁道是从盘片外圈往内圈编号。靠近主轴的同心圆用于停靠磁头,不存储数据

柱面数:磁道构成柱面 柱面数=磁道数

扇区数:每个磁道的扇区数相等

圆盘数:盘片的数量

磁盘容量=磁头数*磁道数*每磁道扇区数)每扇区字节数

磁盘的逻辑结构

逻辑上我们可以把磁盘想象成磁带,磁盘的逻辑存储结构我们可以类似于数组

这样每一个扇区就有了一个线性地址(数组下标),这种地址也叫LBA(线性地址)

相同半径的磁道逻辑上构成柱面,逻辑上磁盘整体是由柱面卷起来的

柱面展开

CHS 和LBA

CHS -> LBA

LBA = 柱⾯号C*(磁头数*每磁道扇区数) + 磁头号H*每磁道扇区数 + 扇区号S - 1
扇区号通常是从1开始的,⽽在LBA中,地址是从0开始的
柱⾯和磁道都是从0开始编号的

LBA -> CHS

柱⾯号C = LBA // (磁头数*每磁道扇区数)【就是单个柱⾯的扇区总数】

磁头号H = (LBA % (磁头数*每磁道扇区数)) // 每磁道扇区数
扇区号S = (LBA % 每磁道扇区数) + 1
"//": 表⽰除取整

磁盘使用者直接使用LBA地址

OS使用磁盘就可以使用一个数字访问磁盘扇区

文件系统

硬盘是"块"设备

连续8个扇区组成一个块,块是文件存取村的最小单位

一个块的大小是在格式化的时候确定的,不可以更改,最常见的是4KB

磁盘就是⼀个三维数组,我们把它看待成为⼀个"⼀维数组",数组下标就是LBA,每个元素都是扇区
每个扇区都有LBA,那么8个扇区⼀个块,每⼀个块的地址我们也能算出来。
LBA:块号 = LBA/8
块号:LAB=块号*8 + n. (n是块内第⼏个扇区)

分区

分区是对硬盘的一种格式化

windows方向看,磁盘分为CDE盘,CDE就是分区

柱面是分区的最小单位

只要知道每个分区的起始和结束柱⾯号,知道每 ⼀个柱⾯多少个扇区,那么该分区多大,解释LBA是多少也就清楚了

inode

文件=内容+属性

Linux中,内容和属性是分开存储的,任何正常文件都要有自己的属性集合

struct inode

{

  type

  size

  pri

  ...

};

文件的属性大小是一样的,128字节

文件名属性并没有在inode数据结构里

ext2 文件系统

我们想在硬盘上存储文件,必须先把硬盘格式化为某种格式的文件系统才能存储文件。文件系统的目的就是组织和管理硬盘中的文件

ext2是最常见的文件系统,ext2文件系统将整个分区划分成若干个同样大小的块组,只要能管理一个分区就能管理所有分区,也就能管理所有磁盘文件

ext2文件系统会根据分区的大小换份我数个Block Group,每个Block Group都有相同的结构组成

数据区:存放文件内容,也就是一个一个的Block

对于普通文件,文件的数据存储在数据块中

对于目录,该目录下的所有文件名和目录名存储在所在目录的数据块中,除了文件名以外,看到的其他信息保存在该文件的inode中

inode编号以分区为单位,整体划分,不可以跨分区

Block号按照分区划分,不可跨分区

目录与文件名:

目录也是文件,但是磁盘上没有目录的概念,只有文件内容+属性

目录的属性的内容保存的是文件名+inode号的映射关系

Filename: tmp, Inode: 1179650
917505 drwxr-xr-x 3 root root 4096 May 6 14 : 37 opt

访问文件必须打开当前目录,根据文件名获得对于的inode号,然后进行文件访问

软硬链接

找到磁盘上文件的不是文件名而是inode

软链接(类似快捷方式)是独立文件,因为他有独立的inode 

硬链接(对文件进行备份)只是文件名和目标文件inode的映射关系,不是一个独立的文件,因为他没有独立的inode

eg: . 和 ..

硬链接只能给普通文件进行建立,Linux系统不支持给目录建立硬链接,但  . 和 .. 本质就是对目录的硬链接。所以是不允许用户给目录建立硬链接,但是OS自己可以

用户自己给目录建立硬链接容易形成路径环问题

. 和 .. 名字特殊,做特殊处理即可,方便命令行操作

但是可以对目录建立软链接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AURIX TC275学习笔记3 官方例程 (UART LED WDT)

文章目录 参考资料1. ASCLIN_UART_12. GPIO_LED_Button_13. WDT (Watch Dog Timer) 参考资料 AURIX TC275学习笔记1 资料收集Getting Started with AURIX™ Development Studio 官方帮助文档happy hacking for TC275! 硬件平台使用AURIX™ TC275 Lite 套件,按照参…

免费接入DeepSeek等多种大模型

核心代码 import cn.hutool.core.collection.CollUtil; import com.tool4j.pasteshare.entity.params.AiParams; import com.tool4j.pasteshare.entity.params.Message; import com.tool4j.pasteshare.service.AiCompletionService; import com.tool4j.pasteshare.util.deepse…

PostIn简明安装教程(入门级)

PostIn是一款开源免费的接口管理工具,包含接口调试、接口文档设计、数据MOCK等模块,本文将介绍如何快速安装配置,以快速入门上手。 1、服务端安装 私有部署版本支持多种操作系统,包括 Linux、Docker、Windows及macOS,…

java Fx进阶操作

1.java Fx基本介绍 JavaFX是用于构建富互联网应用程序的Java库。 使用此库编写的应用程序可以跨多个平台一致运行。 使用JavaFX开发的应用程序可以在各种设备上运行,如台式计算机,手机,电视,平板电脑等。 要使用Java编程语言开…

java-重载与重写

介绍 在 Java 中,重载(Overloading) 和 重写(Overriding) 是两个重要的概念,它们都与方法有关,但它们的应用场景和行为完全不同。 通过理解重载和重写的区别,可以更好地设计类的继承…

数据库系统概念第六版记录 一

1.关系型数据库 关系型数据库(Relational Database,简称 RDB)是基于关系模型的一种数据库,它通过表格的形式来组织和存储数据。每个表由若干行(记录)和列(字段)组成,数据…

嵌入式工程师必学(143):模拟信号链基础

概述: 我们每天使用的许多电子设备,以及我们赖以生存的电子设备,如果不使用电子工程师设计的实际输入信号,就无法运行。 模拟信号链由四个主要元件组成:传感器、放大器、滤波器和模数转换器 (ADC)。这些传感器用于检测、调节模拟信号并将其转换为适合由微控制器或其他数…

2.5学习

misc buuctf-假如给我三天光明 下载附件后得到了一个压缩包和一个图片,压缩包为加密压缩包,需要解出密码,然后注意到这个图片并非简单的一个封面,在下方还有诸多点,有黑有灰。经过搜索,发现这是盲文通过与…

嵌入式八股文面试题(一)C语言部分

1. 变量/函数的声明和定义的区别? (1)变量 定义不仅告知编译器变量的类型和名字,还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型,但并不为它分配内存空间…

设备通过国标GB28181接入EasyCVR,显示在线但视频无法播放的原因排查

安防监控EasyCVR平台支持多种视频源接入,包括但不限于IP摄像头、NVR、编码器、流媒体服务器等。平台采用高效的视频流接入技术,支持大规模视频流的并发接入,确保视频流的稳定性和流畅性。 有用户反馈,项目现场使用国标GB28181接入…

Electricity Market Optimization 探索系列(三)

本文参考链接link 电网容量规划是一个寻求最优发电容量的过程,找到的最优发电容量能够可靠地满足未来电网的需求 发电机的容量和发电成本呈正相关关系,一台发电机的发电量不能超过其额定发电容量,结合我之前的博客所说的内容,可…

深入理解和使用定时线程池ScheduledThreadPoolExecutor

文章目录 前言认识定时线程池什么是定时线程池?定时线程池基本API使用定时线程池的应用场景1、定时任务调度2、缓存过期清理3、心跳检测4、延迟任务执行 定时线程池scheduleAtFixedRate与scheduleWithFixedDelay区别scheduleAtFixedRate案例demo(period&…

在Mac mini M4上部署DeepSeek R1本地大模型

在Mac mini M4上部署DeepSeek R1本地大模型 安装ollama 本地部署,我们可以通过Ollama来进行安装 Ollama 官方版:【点击前往】 Web UI 控制端【点击安装】 如何在MacOS上更换Ollama的模型位置 默认安装时,OLLAMA_MODELS 位置在"~/.o…

动态规划练习九(完全背包问题)

一、问题介绍与解题心得 完全背包问题与01背包问题很相似,不同点就是每个物品数量有多个,每个物品可以取多个或不取,来达到收益最大,或者收益在某个值。 限制条件:背包容量有限 解决问题:从价值入手&…

百亿大表的实时分析:华安基金 HTAP 数据库的选型历程与 TiDB 使用体验

导读 在金融科技迅猛发展的今天,华安基金作为行业的先行者,面临着数据管理和分析的全新挑战。随着业务的不断扩展和数据量的激增,传统的数据库架构已难以满足系统对实时性、灵活性和分析能力的需求。在这样的背景下,HTAP&#xf…

低代码系统-产品架构案例介绍、蓝凌(十三)

蓝凌低代码系统,依旧是从下到上,从左至右的顺序。 技术平台h/iPaas 指低层使用了哪些技术,例如:微服务架构,MySql数据库。个人认为,如果是市场的主流,就没必要赘述了。 新一代门户 门户设计器&a…

DeepSeek研究员在线爆料:R1训练仅用两到三周,春节期间观察到R1 zero强大进化

内容提要 刚刚我注意到DeepSeek研究员Daya Guo回复了网友有关DeepSeek R1的一些问题,以及接下来的公司的计划,只能说DeepSeek的R1仅仅只是开始,内部研究还在快速推进,DeepSeek 的研究员过年都没歇,一直在爆肝推进研究…

【Rust自学】20.1. 最后的项目:单线程Web服务器

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 20.1.1. 什么是TCP和HTTP Web 服务器涉及的两个主要协议是超文本传输​​协议(Hypertext T…

19.[前端开发]Day19-王者荣项目耀实战(二)

01_(掌握)王者荣耀-main-banner展示实现 完整代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

Java 基于微信小程序的高校失物招领平台小程序(附源码,文档)

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447…