当前位置: 首页 > news >正文

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自己可以

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

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

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

相关文章:

Ext文件系统

文件内容属性 被打开的文件在内存中,没有被打开的文件在磁盘里文件系统的工作就是根据路径帮我们找到在磁盘上的文件 磁盘(硬件) 磁盘的存储结构 磁头在传动臂的运动下共同进退,向磁盘写入的时候是向柱面批量写入的 OS文件系统访…...

回溯算法---数独问题

回溯算法理论基础 回溯和递归密不可分,有回溯就有递归,所谓回溯就是基于一个叉树,可能是二叉树或者是三叉树,从root节点开始深度优先搜索遍历节点,当遍历到一个子节点时,回溯到上一个根节点选择另外一个子…...

蓝桥杯python基础算法(2-1)——排序

目录 一、排序 二、例题 P3225——宝藏排序Ⅰ 三、各种排序比较 四、例题 P3226——宝藏排序Ⅱ 一、排序 (一)冒泡排序 基本思想:比较相邻的元素,如果顺序错误就把它们交换过来。 (二)选择排序 基本思想…...

【课程笔记】信息隐藏与数字水印

文章总览:YuanDaiMa2048博客文章总览 【课程笔记】信息隐藏与数字水印 信号处理基础知识隐写系统隐写算法性能指标音频信号处理基础数字音频概念人类听觉系统与语音质量评价信息隐藏的原理数字指纹与版权保护盲水印与非盲水印私钥水印与公钥水印信息隐藏的研究层次信息隐藏与数…...

Page Assist实现deepseek离线部署的在线搜索功能

前面文章Mac 基于Ollama 本地部署DeepSeek离线模型 实现了deepseek的离线部署,但是部署完成虽然可以进行问答和交互,也有thinking过程,但是没办法像官方一样进行联网搜索。今天我们介绍一款浏览器插件Page Assist来实现联网搜索,完…...

composeUI中Box 和 Surface的区别

在 Jetpack Compose 中,Box 和 Surface 都是常用的布局组件,但它们的用途和功能有所不同。 Box 组件: 功能:Box 是一个用于将子组件堆叠在一起的布局容器,类似于传统 Android 中的 FrameLayout。用途:适用…...

【LeetCode】5. 贪心算法:买卖股票时机

太久没更了,抽空学习下。 看一道简单题。 class Solution:def maxProfit(self, prices: List[int]) -> int:cost -1profit 0for i in prices:if cost -1:cost icontinueprofit_ i - costif profit_ > profit:profit profit_if cost > i:cost iret…...

MySQL表的CURD

目录 一、Create 1.1单行数据全列插入 1.2多行数据指定列插入 1.3插入否则更新 1.4替换 2.Retrieve 2.1 select列 2.1.1全列查询 2.1.2指定列查询 2.1.3查询字段为表达式 2.1.4为查询结果指定别名 2.1.5结果去重 2.2where条件 2.3结果排序 2.4筛选分页结果 三…...

Java 如何覆盖第三方 jar 包中的类

目录 一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理 背景: 在我们日常的开发中,经常需要使用第三方的 jar 包,有时候我们会发现第三方的 jar 包中的某一个类有问题,或者我们需要定制化修改其中的逻辑&#xff0c…...

VSCode中使用EmmyLua插件对Unity的tolua断点调试

一.VSCode中搜索安装EmmyLua插件 二.创建和编辑launch.json文件 初始的launch.json是这样的 手动编辑加上一段内容如下图所示: 三.启动调试模式,并选择附加的进程...

【数据结构】_链表经典算法OJ(力扣/牛客第二弹)

目录 1. 题目1:返回倒数第k个节点 1.1 题目链接及描述 1.2 解题思路 1.3 程序 2. 题目2:链表的回文结构 2.1 题目链接及描述 2.2 解题思路 2.3 程序 1. 题目1:返回倒数第k个节点 1.1 题目链接及描述 题目链接: 面试题 …...

Spring Boot 2 快速教程:WebFlux优缺点及性能分析(四)

WebFlux优缺点 【来源DeepSeek】 Spring WebFlux 是 Spring 框架提供的响应式编程模型,旨在支持非阻塞、异步和高并发的应用场景。其优缺点如下: 优点 高并发与低资源消耗 非阻塞 I/O:基于事件循环模型(如 Netty)&am…...

自定义多功能输入对话框:基于 Qt 打造灵活交互界面

一、引言 在使用 Qt 进行应用程序开发时,我们经常需要与用户进行交互,获取他们输入的各种信息。QInputDialog 是 Qt 提供的一个便捷工具,可用于简单的输入场景,但当需求变得复杂,需要支持更多类型的输入控件&#xff0…...

基于springboot河南省旅游管理系统

基于Spring Boot的河南省旅游管理系统是一种专为河南省旅游行业设计的信息管理系统,旨在整合和管理河南省的旅游资源信息,为游客提供准确、全面的旅游攻略和服务。以下是对该系统的详细介绍: 一、系统背景与意义 河南省作为中国的中部省份&…...

LabVIEW图像采集与应变场测量系统

开发了一种基于LabVIEW的图像采集与应变场测量系统,提供一种高精度、非接触式的测量技术,用于监测物体的全场位移和应变。系统整合了实时监控、数据记录和自动对焦等功能,适用于工程应用和科学研究。 项目背景 传统的位移和应变测量技术往往…...

CommonAPI学习笔记-2

一. 概述 ​ 这篇文章主要是想整理并且分析CommonAPI代码生成工具根据fidl和fdepl配置文件生成出来的代码的结构和作用。 二. fidl ​ 用户根据业务需求在fidl文件中定义业务服务接口的结构以及自定义数据类型,然后使用core生成工具传入fidl文件生成该fidl的核心…...

ISP代理与住宅代理的区别

代理充当用户和互联网之间的中介,在增强安全性、隐私和可访问性方面提供多种功能。在众多代理类型中,ISP和住宅代理脱颖而出,各自拥有不同的功能和应用程序。 一、ISP代理 ISP代理,俗称Internet服务提供商代理,通过其…...

[25] cuda 应用之 nppi 实现图像色彩调整

[25] cuda 应用之 nppi 实现图像色彩调整 在 NPPI(NVIDIA Performance Primitives)中,图像色彩调整通常包括以下几种操作: 亮度调整:增加或减少图像的亮度。对比度调整:增强或减弱图像的对比度。饱和度调整:增强或减弱图像的颜色饱和度。色调调整:改变图像的色调(通常…...

Java 大视界 -- Java 大数据在智慧文旅中的应用与体验优化(74)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

PyTorch快速入门

Anaconda Anaconda 是一款面向科学计算的开源 Python 发行版本,它集成了众多科学计算所需的库、工具和环境管理系统,旨在简化包管理和部署,提升开发与研究效率。 核心组件: Conda:这是 Anaconda 自带的包和环境管理…...

100.7 AI量化面试题:如何利用新闻文本数据构建交易信号?

目录 0. 承前1. 解题思路1.1 数据处理维度1.2 分析模型维度1.3 信号构建维度 2. 新闻数据获取与预处理2.1 数据获取接口2.2 文本预处理 3. 情感分析与事件抽取3.1 情感分析模型3.2 事件抽取 4. 信号生成与优化4.1 信号构建4.2 信号优化 5. 策略实现与回测5.1 策略实现 6. 回答话…...

CF 465B.Inbox (100500)(Java实现)

题目分析 计算读取所有未读邮件所需的步数,其中1代表未读,0代表已读 思路分析 遍历邮件,如果当前是未读,那么所需步数1,如果下一封也是未读,不用管(遍历后会直接1),如果下一封是已读&#xff0…...

微信小程序获取openid和其他接口同时并发请求如何保证先获取到openid

在微信小程序中,如果你需要并发请求获取 openid 和其他接口的数据,并且希望确保先获取到 openid 之后再进行后续操作,可以考虑以下几种方法: 方法一:使用 Promise 链 1, 先请求 openid:使用 Promise 来请求 openid。 2, 在获取到 openid 后再请求其他接口。 function g…...

实现动态卡通笑脸的着色器实现

大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...

DeepSeek R1 模型解读与微调

DeepSeek R1 模型是 DeepSeek 团队推出的一款重要的大语言模型,旨在通过强化学习提升大型语言模型的推理能力。 模型架构 DeepSeek-R1-Zero DeepSeek-R1-Zero 是 DeepSeek 团队推出的第一代推理模型,完全依靠强化学习(RL)训练&…...

YOLOv11实时目标检测 | 摄像头视频图片文件检测

在上篇文章中YOLO11环境部署 || 从检测到训练https://blog.csdn.net/2301_79442295/article/details/145414103#comments_36164492,我们详细探讨了YOLO11的部署以及推理训练,但是评论区的观众老爷就说了:“博主博主,你这个只能推理…...

Node.js学习指南

一、模块化规范 nodejs使用的模块化规范 叫做 common.js 规范: 每一个模块都有独立的作用域 代码在各自模块中执行 不会造成全局污染 每一个模块都是一个独立的文件(module对象) 模块可以被多次加载(module.exports 属性) 但是仅…...

2.5学习总结

今天看了二叉树&#xff0c;看的一脸懵&#xff0c;写了两道题 P4913&#xff1a;二叉树深度 #include <stdio.h> #include <stdlib.h> struct hly {int left;int right; }tree[1000005]; int hulingyun(int x) {if(x0)return 0;return 1max(hulingyun(tree[x].le…...

java进阶文章链接

java 泛型&#xff1a;java 泛型详解-绝对是对泛型方法讲解最详细的&#xff0c;没有之一 Java 泛型&#xff0c;你了解类型擦除吗&#xff1f; java 注解&#xff1a;深入理解Java注解类型 秒懂&#xff0c;Java 注解 &#xff08;Annotation&#xff09;你可以这样学 jav…...

vue2+vue3 HMCXY基础入门

vue2vue3 HMCXY基础入门 一、Vue2.x技术精讲1.Vue快速上手&#xff08;1&#xff09;Vue概念&#xff08;2&#xff09;创建实例&#xff08;3&#xff09;插值表达式&#xff08;4&#xff09;响应式特性&#xff08;5&#xff09;开发者工具 2.Vue指令二、Vue3.x技术精讲 一、…...