基础IO(二)

news2024/11/28 5:28:09

磁盘

  • 1.基础概念
  • 2.磁盘线性理解
  • 3.文件系统
  • 4.inode与文件名
  • 5.理解增删查改
  • 6.补充细节

🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Linux的学习】
📝📝本篇内容:基础概念;磁盘线性理解;文件系统;inode与文件名;理解增删查改;补充细节
⬆⬆⬆⬆上一篇:基础IO(一)
💖💖作者简介:轩情吖,请多多指教(> •̀֊•́ ) ̖́-

1.基础概念

在这里插入图片描述
①磁盘是我们计算机上唯一的一个机械设备,同时也是外设,因此它非常慢
②内部结构:
盘片:一片两面,一沓盘片,可以进行读写
磁头:每一面的盘片都有一个磁头,一个磁头负责一个一面的读取,磁头共进退的,磁头和盘面是没有挨着的,但是距离很近,对数据做写入和读取是更改基本元素的南北极
在这里插入图片描述

③磁盘中存储的基本单元:
在这里插入图片描述
扇区:512字节或者4kb;一般磁盘,所有的扇区都是512字节
磁道:同半径的所有扇区
④读取定位:
通过磁头来确定哪一个面(编号)—>先定位在哪一个磁道(由半径决定,磁头会进行摇摆)—> 根据扇区的的编号,定位一个扇区
在这里插入图片描述
柱面是指相同位置上磁道的集合
也就是可以理解为当你知道了在哪一个盘面,就可以把柱面和磁道看成相同的,都能确定在哪个磁道上
因此磁头:head;柱面:cylinder;扇区:sector,未来定位任意一个扇区:CHS定位法

2.磁盘线性理解

然而OS内部不能直接使用CHS的地址
①OS是软件,磁盘是硬件,硬件定位一个地址可以使用CHS定位法,但是如果OS直接使用了这个地址,万一硬件变了,OS也要发生变化,OS要和硬件做好解耦工作
②即便是扇区,512,字节,单位IO的基本数据量也是很小的!硬件:512字节,OS实际进行IO,基本单位是4kb(可以调整),因此磁盘被称为块设备,所以OS需要有一套新的地址来进行块级别的访问
在这里插入图片描述
而其中我们的OS是以4KB为单位进行IO的,故一个OS级别的文件块要包含8个扇区,甚至,在OS角度它不关心扇区
计算机常规的访问方式:起始地址+加上偏移量的方式(在C语言中,一个地址加上所对应的变量类型的大小)
那么在这里也是同理,只需要知道第一个扇区的下标地址+4KB(块类型)我们把数据块可以看做一种类型
所以块的地址,本质上就是数组的一个下标,以后要表示任何一个块,可以采用线性下标的方式
OS——>下标(N)——>LBA(逻辑块地址)
LBA和CHS可以互相转换的
OS要管理磁盘,就将磁盘看做一个大数组,对磁盘的管理就变成了对数组的管理

3.文件系统

大家应该都知道windows下有好几个盘吧
在这里插入图片描述
这个就是文件系统的分治
在这里插入图片描述
在这里插入图片描述
磁盘是典型的块设备,硬盘分区被划分为一个个的block,一个block的大小由格式化的时候确定,并且不可更改
Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有相同的结构组成
超级块(Super Block):文件系统本身的结构信息:文件系统类型、整个分组的情况,其在各个分组里面都有可能存在,而且是统一更新的,是为了防止此区域坏掉,如果出现故障,整个分区不可被使用,做好备份
GDT:块组的描述符,组内的详细统计等属性信息
inode Table:inode节点表;一个文件,内部所有属性的集合,inode节点(128字节),一个文件一个inode,一个group需要有一个区域来专门保存该group内的所有文件的inode节点。分组内部可能会存在多个inode,需要将inode区分开来,每一个inode都会有自己的inode编号,也属于对应文件的属性id
Data blocks:存放文件内容,数据块,Linux查找一个文件,是根据inode编号,来进行文件查找的,一个inode对应一个文件,文件inode属性和文件对应的数据块是有映射关系的
Block Bitmap(块位图):每一个bit表示datablock中哪个数据块是否空闲可用
inode位图(inode Bitmap):每一个bit位表示一个inode是否空闲可用

4.inode与文件名

Linux系统只认inode号,文件的inode属性中,并不存在文件名,文件名是给用户用的,目录也有inode,任何一个文件一定是在一个目录内部,目录的数据块里面保存的是该目录下文件名和文件inode编号对应的映射关系,而且两个互为key值
在这里插入图片描述
ls -i是可以查看文件的inode编号的

5.理解增删查改

①当我们访问一个文件的时候,我们是特定目录下访问的,cat log.txt
②当前目录下,找到log.txt的inode编号
③一个目录也是一个文件,也一定隶属于一个分区,结合inode,在分区中找到分组,在该分组中inode table中,找到文件的inode
④通过inode和对应的databack的映射关系,找到该文件的数据块,并加载到OS,并显示到显示器
删:
①根据文件名找到inode编号
②inode编号——>inode属性中的映射关系,设置block bitmap对应的比特位值0
③inode编号设置inode bitmap对应的比特位为0
删除文件只需要修改位图

6.补充细节

①当文件被误删时,会有日志可以找到对应的inode,来修改对应的block bitmap与inode bitmap
②inode,确定分组指的是每个组都有固定的inode编号范围,通过±组内的inode编号来确定分组
③我们所学到的分组、分区、增写系统属性OS做的,分区完成之后,后面要让分区能正常使用,我们需要对分区做格式化,格式化的过程其实是OS向分区写入系统的管理属性信息
④inode节点里有与数据的映射关系,就是一个数组,但是NUM的大小有限,万一数据很大怎么办呢?
在这里插入图片描述
在这里插入图片描述
那我们可以使用二级索引来解决这个问题
在这里插入图片描述

🌸🌸基础IO(二)的知识大概就讲到这里啦,博主后续会继续更新更多Linux的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪

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

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

相关文章

Chapter7:非线性控制系统分析(下)

第七章:非线性控制系统分析 Exercise7.11 设非线性系统结构图如下图所示,分析系统运动并计算自振参数。 解: 将 3 3 3个串联非线性环节进行等效合并,由于反馈通道饱和特性与前向通道饱和特性同时进入饱和状态,所以反馈通道的非线性环节相当于不起作用,将前向通道的另两…

【计算机视觉 | 自然语言处理】Hugging Face 超详细介绍和使用教程

文章目录 一、前言二、可以获得什么?三、入门实践3.1 帮助文档3.2 安装3.3 模型的组成3.4 BERT模型的使用3.4.1 导入模型3.4.2 使用模型3.4.2.1 tokenizer 3.5 model3.6 后处理 一、前言 Hugging Face 起初是一家总部位于纽约的聊天机器人初创服务商,他…

URP渲染管线里面的摄像机用法

大家好,我是阿赵,这里继续讲一下URP渲染管线。 这次要讲的是URP渲染管线里面的摄像机用法 之前介绍过,URP摄像机和普通摄像机的属性显示上有比较大的变化: 接下来从用法上来说明一下: 1、多个摄像机的处理变化 多个…

unity UGUI系统梳理 -交互组件

概述 unity 中的交互组件可用于处理交互,例如鼠标或触摸事件以及使用键盘或控制器进行的交互 1、按钮 (Button) Button详解 2、开关 (Toggle) Background:背景图片,控制toggle组件的背景颜色改变,从而展示此物体是否被选中的…

5.View的事件分发机制/事件处理机制原理分析

事件MotionEvent包含了哪几个? ACTION_DOWN 手指触碰到屏幕时触发,只会执行一次ACTION_MOVE 手指在屏幕上滑动出发,会执行多次ACTION_UP 手指抬起离开屏幕出发,只会执行一次ACTION_CANCEL 事件被上层拦截时会触发 父容器ViewGroup需要从子View手中抢夺分发的事件进行处理时,会…

【SCI】综合能源系统中热电联产、电制气和碳捕集系统的建模与优化(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Java 网络编程 —— 非阻塞式编程

线程阻塞概述 在生活中,最常见的阻塞现象是公路上汽车的堵塞。汽车在公路上快速行驶,如果前方交通受阻,就只好停下来等待,等到公路顺畅,才能恢复行驶。 线程在运行中也会因为某些原因而阻塞。所有处于阻塞状态的线程…

C++数据结构:哈希 -- unordered系列容器、哈希表的结构以及如何通过闭散列的方法解决哈希冲突

目录 一. unordered系列关联式容器 1.1 unrodered_map和unordered_set 综述 1.2 常见的接口函数(以unordered_map为例) 1.3 unordered系列与map和set的效率对比 二. 哈希表的底层结构 2.1 什么是哈希 2.2 哈希函数 2.3 哈希冲突 三. 通过闭散列的…

JavaEE(系列2) -- 多线程(创建多线程)

讲述下面的内容之前,先来回顾一下一个重要的知识点 进程和线程之间的区别 1.进程包括线程。 2.进程有自己独立的内存空间和文件描述符表。同一个进程中的多个线程之间,共享同一份地址空间和文件描述符表。 3.进程是操作系统资源分配的基本单位,线程是操作…

5.14学习周报

文章目录 前言文献阅读摘要介绍方法模型框架评价指标结果结论 时间序列预测总结 前言 本周阅读文献《A Hybrid Model for Water Quality Prediction Based on an Artificial Neural Network, Wavelet Transform, and Long Short-Term Memory》,文献主要提出了基于人…

iconfont-extract: 一个将iconfont图标转化为React组件的工具

iconfont 提供了海量的图标,同时也方便了前端开发者使用这些图标,只需要添加对应的js、css或者字体文件即可。在我们的项目中使用添加js文件的方式,js文件中都包含了所有的图标,一个项目中通常只会使用其中的一部分,所…

【架构设计】DDD 到底解决了什么问题

文章目录 前言一、架构设计是为了解决系统复杂度1.1 架构设计的误区1.1.1 每个系统都要做架构设计/公司流程要求有架构设计1.1.2 架构设计是为了追求高性能、高可用、可扩展性等单一目标 1.2 架构设计的真正目的1.3 系统复杂度的六个来源及通用解法1.3.1 高性能1.3.1.1 单机复杂…

JavaWeb-一篇文章带你入门CSS(笔记+案列)

目录 CSS是什么基本语法 CSS的引入方式内部样式表行内样式表外部样式表 选择器基础选择器标签选择器类选择器id选择器通配符选择器 复合选择器后代选择器子选择器 常用元素属性字体属性文本属性背景属性圆角矩形 元素的显示模式块级元素行内元素 我们可以使用display属性来修改…

对称加密/非对称加密

古典密码学 起源于古代战争:在战争中,为了防止书信被截获后重要信息泄露,人们开始对书信进行加密。 移位式加密 如密码棒,使用布条缠绕在木棒上的方式来对书信进行加密。 加密算法:缠绕后书写 密钥: 木棒的尺寸 替…

[笔记]深入解析Windows操作系统《四》管理机制

文章目录 前言4.1注册表查看和修改注册表注册表用法注册表数据类型注册表逻辑结构HKEY_CURRENT_USERHKEY_USERS 实验:观察轮廓加载和卸载HKEY_CLASSES_ROOTHKEY_LOCAL_MACHINE 实验:离线方式或远程编辑BCDHKEY_CURRENT_CONFIGHKEY_PERFORMANCE_DATA 前言 本章讲述了…

day3_垃圾回收器

文章目录 Serial回收器ParNew回收器Parallel Scavenge回收器Serial Old回收器Parallel Old回收器CMS(Concurrent Mark Sweeping)回收器G1 主要有7种垃圾回收器,如下所示: 其中有直线关联的表示,这2种垃圾回收器可以配合使用的。 S…

大模型之PaLM2简介

1 缘起 大模型时代。 时刻关注大模型相关的研究与进展, 以及科技巨头的商业化大模型产品。 作为产品&技术普及类文章,本文将围绕PaLM2是什么、特点、如何使用展开。 想要了解更多信息的可以移步官方网站提供的参考文档,后文会给出相关链…

Oracle11g服务说明

一、服务说明 1.OracleDBConsoleorcl:非必须启动 Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务。 2.OracleJobS…

一文了解异步编程

promise 什么是promise promise是异步编程的一种解决方案,从语法上来说,Promise是一个对象,从它可以获取异步操作的消息 ES6规定,Promise对象是一个构造函数,接受一个函数作为参数,这个函数会立即执行&a…

Long类型返回前端精度丢失

【1】给前端返回Long会出现精度丢失问题 在《阿里巴巴Java开发手册》中,有一条关于前后端超大整数返回的规约,具体内容如下: 【2】问题复现 后端直接用postman测试接口,返回数据没有问题。但是前端访问接口的时候,发…