文件系统理解——磁盘文件

news2024/11/16 2:49:19

磁盘文件

  • 1. 问题提出
  • 2. 了解磁盘的物理结构
    • 2.1 磁盘大体结构
    • 2.2 磁盘的具体物理结构
  • 3.对磁盘结构逻辑抽象
    • 3.1 OS是通过CSH方法进行扇区的管理的吗?
    • 3.2 磁盘逻辑过程
  • 4.文件系统
    • 4.1 管理思想
    • 4.2 区结构
      • Boot Block
      • Super Block
      • Group Descriptor Table
      • inode Table & iNode bitmap
      • Data Blocks & Blockbitmap
    • 4.3 重新理解文件名
    • 4.4 如何理解文件的增删改查
      • 查 & 删除
    • 4.5 面试题
  • 5.软硬连接
    • 5.1 制作软硬连接,对比差别
    • 5.2 软硬连接的应用场景

1. 问题提出

在语言操作的文件,都是内存级文件,都是被打开的!如果文件没有被打开呢?在哪里?一定不在内存中!只能在磁盘外设等中静静的等待。

磁盘文件,如果没有被打开,如何理解这些文件?没有被打开的文件,有什么问题?

1.如何合理存储文件的问题
2.存储结构主要是为了解决:快速定位,快速读写——磁盘文件也是如此

问题:
a.如何表示一个文件?
b.如何定位一个文件?
c.如何对文件进行写入?

2. 了解磁盘的物理结构

2.1 磁盘大体结构

磁盘是我们计算机上唯一的机械设备!同时它还是外设。
在这里插入图片描述
盘片:一个盘片有两个盘面,有一摞盘片叠在一起——存储数据区。
磁头:一个盘面一个磁头,一个磁头负责一个盘面的读取!磁头在马达的控制下前后移动,它们是共进退的
磁头和盘片之间的距离无限靠近,但没有接触。距离数量级为μm——作用:防止接触,在高速移动的时候摩擦生热,使得数据丢失!

盘片对数据的读取与写入的本质是对盘片每个极小的单元的磁化,用N,S级表示0,1!
在这里插入图片描述

2.2 磁盘的具体物理结构

在这里插入图片描述

磁盘中存储的基本单元:扇区,512字节 或者 4kb字节;一般所有的磁盘扇区都是512字节

如何定位一个扇区?
CSH法
首先是确定是哪一个面:对磁头进行编号,编号代表就是哪一个面
接着就是定义磁道:通过磁头的前后移动来改变半径的大小
最后根据扇区的编号确定准确的扇区!

定位完扇区之后就可对该扇区进行管理(0,1读写)——存储数据!
在这里插入图片描述

3.对磁盘结构逻辑抽象

3.1 OS是通过CSH方法进行扇区的管理的吗?

如果OS得到任意一个CSH的值,就可以访问任意一个扇区,所以OS同过CSH方法管理磁盘的吗?答案:否!

为什么呢?
①OS是软件,磁盘是硬件,硬件定位一个地址,CSH,但是如果OS使用CSH来管理,万一磁盘的物理结构改变了呢?OS也需要改变——显然这会复杂,所以OS要和硬件之间解耦合!
②一个扇区,512字节,单位IO的基本量也是很小的!硬件:512字节,OS实际进行IO,基本单位是4KB(可以调整)——所以,OS需要有一套新的地址,来进行块结构的管理。

3.2 磁盘逻辑过程

将圆盘展开,就可得到一个线性结构!
在这里插入图片描述

将几个扇区合并成4KB的数据块,OS就可以通过结构体数组,对这些数据块进行管理!
在这里插入图片描述

4.文件系统

4.1 管理思想

512G的磁盘很大,要怎么管理呢?答案:分而治之!分区,管理好一个区,通过复制粘贴管理剩下的区。区中在分成若干各组!
在这里插入图片描述

4.2 区结构

在这里插入图片描述
注:Linux ext2文件系统

Boot Block

为开机时,加载操作系统数据的存储块

Super Block

【作用】
存储文件系统所有的属性信息
①文件系统的类型;②整个分组情况。
【注】
Super Block在各个分组之中基本都会存在,而且是统一更新的。
意义:Super Block如果只存储一次,一旦该区域的数据丢失,对导致整个512G文件信息无法使用。多个地方存储,防止数据丢失,多个备份,相互之间恢复!

Group Descriptor Table

组描述符:该组内详细统计的属性信息

inode Table & iNode bitmap

一般而言,一个文件,内部所有属性的集合,存储到一个iNode结点(128字节),一个文件对应一个iNode。其中,即便是一个分区,内部也会存在大量的文件即会存在大量的iNode结点,一个group中,需要有一个区域,来专门保存该group内的所有文件的iNode结点–iNode Table,iNode表。
分组内部,可能会存在多个iNode,需要将iNode区分开来,每一个iNode都会有自己的iNode编号,iNode编号,也属于对应的文件属性ID

iNode bitmap来管理这些iNode结点。0表示没有使用,1表示使用了。

Linux查找文件,需要更据iNode编号,来进行文件查找,包括读取数据!一个iNode对应一个文件,而该文件iNode属性和文件对应的文件数据吗,存在映射关系!
在这里插入图片描述

Data Blocks & Blockbitmap

Data blocks 存在多个数据块,一个文件的存储,会用到多个数据块。

blockbitmap:表示数据块是否被使用

4.3 重新理解文件名

在这里插入图片描述

4.4 如何理解文件的增删改查

查 & 删除

在这里插入图片描述

在这里插入图片描述
新增iNode结点编号,设置inode bitmap对应编号为1
通过iNode结点中成员变量datablock数组与数据块之间的映射关系,对相关的数据块进行相应的写入。
该数组对应的数据分层分级,通过不同级别的索引,适应文件的存储大小!
在这里插入图片描述

4.5 面试题

有没有可能,一个分组,数据块用完了,iNode没有,或者iNode用完了,数据块没有?
答:存在!因为这些是更据概率来提前分区数量的,是写死的,写死必然存在问题!

5.软硬连接

5.1 制作软硬连接,对比差别

在这里插入图片描述
软连接是一个独立的连接文件,有自己的iNode number,必定有自己的iNode属性和内容。软连接存放的内容是自己所指向的文件路径!——类似于Windows的快捷方式!

硬连接和目标文件共用一个iNode number,意味着硬连接一定是和目标文件使用一同一个iNode的!硬连接没有独立的iNode!硬连接建立了新的文件名和老的iNode的映射关系!
在这里插入图片描述

5.2 软硬连接的应用场景

软连接:方便找到深目录下的文件

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

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

相关文章

共享办公室在国内外的发展史以及现状介绍

共享办公室,这个曾经陌生的概念,如今已成为全球范围内炙手可热的话题。在这个时代,越来越多的人开始关注灵活性和协作性,而共享办公室正是在这种需求下应运而生的。本文将带您一探共享办公室的国内外发展史、国内当前发展现状以及…

记录一次nginx占用cpu饱满解决

一天下午,突然就爆满了。刚开始服务器都登不上,后来服务器可以登录上,宝塔进不去,网站访问不了,top后发现nginx爆满 执行下列代码,停止nginx服务 systemctl stop nginx 虽然停止了 可以上宝塔 再次手动…

硬件工程师JD

不知道这么做合不合适,我先发一个试试,团队在招人, 岗位是 航天航空电子工程师1,混合电推和起发电方向; 电机控制硬件工程师1,新能源汽车电机控制器硬件开发方向。 工作内容: 1、负责硬件系…

美国首只杠杆比特币期货ETF开盘,成交量近550万美元!

纽约时间6月27日,美国首只杠杆比特币期货ETF(股票代码:BITX)在CBOE BZX交易所开盘,成交量近550万美元,成为今年推出的ETF中首日交易量最大的产品。 BITX的推出,正值贝莱德(BlackRock)向SEC递交现…

【教学类-36-04】Midjounery 各种图片切割(通用公式)

作品展示: 6*6切割36图 5*4图:20张 问题产生: 之前的代码是:一张图的四个坐标,有4张就要写4行。 后续发现,Midjounery生成的图片矩阵X Y数量不等,不仅有3*3,还有4*3、5*4的结构&am…

基于appnium+python+夜神模拟器的自动化

目录 1、安装夜神模拟器 2、定位元素 3、开始编码 首先搭好appnium环境!参考https://www.cnblogs.com/testlearn/p/11419797.html 1、安装夜神模拟器 下载安装夜神模拟器后,在cmd命令输入adb connect 127.0.0.1:62001,显示出设备则表示…

虚拟稀疏卷积在多模态 3D 目标检测中的应用

论文背景 虚拟点云生成时,从图像中生成的虚拟点非常密集,在检测过程中引入了大量的冗馀计算量。同时,不准确的深度补全所带来的噪声会显著降低检测精度。 早期利用图像特征扩展LiDAR点的特征的方法,如语义掩膜和二维CNN特征。他…

机器学习11:逻辑回归-Logistic Regression

目录 1.计算概率 2.损失和正则化 2.1 逻辑回归的损失函数 2.2 逻辑回归中的正则化 3.参考文献 1.计算概率 许多问题需要概率估计作为输出。逻辑回归是一种极其有效的概率计算机制。实际上,我们可以通过以下两种方式使用返回的概率: 原始概率&…

Appium安装部署

目录 一、检查Java环境 二、安装android SDK 一、检查Java环境 Android SDK依赖ava环境,因此需要先安装jdk。在CMD中输入java -version 出现下图的结果,说明当前环境已安装jdk 如果提示java命令无效,请安装后进行下一步。 二、安装androi…

360手机打开USB调试+文件传输

360手机USB调试文件传输[用户版] 参考:360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机:360rom.github.io 【前言】 *360手机USB调试 ,必须提前打开“开发者模式USB调试”进行 【操作流程】 打开:开发者模式、USB调…

vue3进阶-----单文件组件

目录 三.vue3进阶 1.单文件组件 1-1组件定义-重塑经脉,断了? 1-2单文件组件(SFC)-独立日 1-3Vue-CLI创建项目-锅灶升级 1-4 vuecli选项介绍 1-5 VueCLI创建项目-风云再起 index.html main.js 作用 ES6 导入 导出 解决跨域之“Vue-Cli配置跨域…

Vue 自定义ColorPicker

Vue 自定义ColorPicker 创建自定义组件ColorPicker.vue <template><div class"box"><div class"picker-box"><div class"color" :style"{ background: color }"></div><div class"el-icon-arr…

使用元类实现ORM

使用元类实现ORM ORM 是 python编程语言后端web框架 Django的核心思想&#xff0c;“Object Relational Mapping”&#xff0c;即对象-关系映射&#xff0c;简称ORM。 我们想实现的目标是: 创建一个实例对象&#xff0c;用创建它的类名当做数据表名&#xff0c;用创建它的类属…

十分钟实现 Android Camera2 相机拍照

1. 前言 因为工作中要使用Android Camera2 API&#xff0c;但因为Camera2比较复杂&#xff0c;网上资料也比较乱&#xff0c;有一定入门门槛&#xff0c;所以花了几天时间系统研究了下&#xff0c;并在CSDN上记录了下&#xff0c;希望能帮助到更多的小伙伴。 上篇文章 我们使用…

【数据分享】1929-2022年全球站点的逐月平均压力数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

paddlespeech 声纹识别embedding向量提取;TTS文本合成语音

1、声纹识别embedding向量提取 参考&#xff1a; https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md https://aistudio.baidu.com/aistudio/projectdetail/4…

Apache Zeppelin 番外篇——参与开源的得与失

背景 经常在公司做一些业务开发&#xff0c;公司里面由于各种人员流动等问题&#xff0c;导致代码质量也是参差不齐&#xff0c;最终问题就是很难维护&#xff0c;前期还想着能够优化代码&#xff0c;但是大部分时间都是需求都是倒排期&#xff0c;所以也导致不再想进行代码优…

车联网 CAN Bus 协议介绍与数据实时流处理

什么是 CAN Bus&#xff1f; CAN&#xff08;Control Area Network&#xff09;Bus 是一种串行通信协议&#xff0c;能够让设备之间可靠而高效地传输数据。它广泛应用于车辆领域&#xff0c;像神经系统一样连接车辆内部的各个电子控制单元。 CAN Bus 最初由博世公司在 20 世纪…

matlab合并/拼接多个excel表

一、 说明&#xff1a;Excel中数据含有 日期&#xff0c;double如何实现多个表合并 解&#xff1a; path E:\xxx\; namelist dir([path,*.csv]); L length(namelist); a []; for i 1:Lfilename{i} [path,namelist(i).name];bb readtable(filename{i},Range,A1:G2881)…

智能指针

目录 RAII auto_ptr unique_ptr shared_ptr shared_ptr的循环引用 weak_ptr 删除器 智能指针的出现主要是针对程序的资源泄露问题而产生的。 RAII RAII&#xff08;Resource Acquisition Is Initialization)是种利用对象生命周期来控制程序资源的简单技术。 在对象构…