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

理解磁盘结构---CHS---LAB---文件系统

1,初步了解磁盘

机械磁盘是计算机中唯的一个机械设备,

特点是慢,容量大,价格便宜。

磁盘上面的光面,由数不清的小磁铁构成,我们知道磁铁是有n/s极的,这刚好与二进制的01相对应,操作系统也是以01来读写,所以改变数据等于对01做改变,也就是在对小磁铁的n/s极做改变。

可以看到磁盘中有一条杠在盘面上,这就是磁头,磁头与盘面不接触。

磁头摆动,定位磁道。

磁盘盘片旋转:定位扇区

扇区:是磁盘存储数据的基本单位(基本上512字节)

读写磁盘,是从一扇区来读的而不是字节,所以磁盘是块设备

磁盘的每一面都有一个磁头,读写哪一个磁头的本质就是读写哪一面!

2,如何定位扇区

先定位磁头(heander)

磁头移动要访问哪一个柱面(磁道)(cylinder)

定义一个扇区(sector)

这就是        CHS:地址定位法。

上面指令可以查看自己的盘

3,如何将磁盘抽象成逻辑概念?

我们拿磁带举例子:

磁带是通过卷在一起的方式存储起来,但我们可以认为手动的把它拉直,磁盘也是一样,磁盘就是一个卷起来的磁带,可以把它拉成线性结构,抽象成线性结构。

所以定位扇区从用CHS定位变成了使用数组下标来定位,磁盘就被拉成了数组结构,这就是线性地址---LBA

但是磁盘真实的物理运动过程还是通过CHS的方式,但是这里面有一个细节:

传动臂的磁头是共进退的

磁盘整体是由柱面卷起来的,所以真实情况就是某一个磁道展开就成了一个一维数组:

柱面是由多个磁道构成,对柱面展开就是一个二维数组:

整个磁盘由n个柱面组成,展开就相当于三维数组:

那么三维数组需要三个参数来定位,因此就有了CHS!!!

所以定位磁面就抽象成了找哪个二维数组

定位磁道就抽象成了找二维数组中哪个以为数组

然后就是定位扇区

又因为各二维数组本质其实也是一维数组,所以定位数组可以用到下标,也就是LBA

通过LBA给的指引,原理上可以找到块,但是因为磁盘物理结构就是这样不变,所以要把LBA转变成CHS,这个过程由磁盘自己做,磁盘里由固件(硬件电路,伺服系统)会帮我们完成这项任务。

LBA = 柱面号*单个柱面扇区总数 + 磁头号 * 每磁道扇区数 +扇区号s -1;

由于(磁头数*每磁道扇区数)< 每磁道扇区数 < 扇区

所以LBA->CHS:

柱面号(C) = LBA / (磁头数*每磁道扇区数) 余数就是柱面号

磁头号(H)    = LBA %  (磁头数*每磁道扇区数)

扇区(S)        =  (LBA % 每磁道扇区数)+1;

4,引入文件系统

os和磁盘进行io的时候,如果以扇区为基本单位进行io,512字节那就太少了效率太低了,

一般以1kb ,2kb,4kb,8kb等进行io,现在大部分都是以4kb进程io,4kb这一内存开出来叫做一个数据块,由八个扇区组成。

所以io的基本单位是八个扇区--》4kb -- 》数据块

那么就可以引入块号的概念:

块号*8 + 【1,8】就可以找到扇区,一块等于八个LBA的地址。

所以可以抽象成:磁盘是以块为单位的一维数组。

5,分区管理

一个盘里由500GB如何做管理?

这就和一个国家如何管理一片国土一样,需要划分各个区域,比如说每个划分为多个省,省可以划分为多个市。

磁盘也可以分区,如果做过分盘的知道一个电脑只有一个盘,但是它可以分成c盘d盘。

这样我们只用管理好一个分区就可以同一个方法管理好多个分区

磁盘分完区之后可以分组

这样就可以细化为只用管理好一组其他复制其管理方式就行。

6,初见磁盘中组内划分

我们知道,一个文件等于内容加属性

属性也是数据,是通过结构体的方式构建出来(inode)

一个文件只有一个inode,inode是一个文件数据属性的集合。

每个inode都有自己的唯一编号(不重复):

组内有一个区域叫inodetable,里面管理了一组里的所有属性集,

数据就存在datablock中,里面全是划分好的4kb大小的块

Linux中文件属性和文件内容分开存储。

图中BootBlock里存与开机相关我们不管,剩下的Block group中就是存数据的地方。

相关文章:

理解磁盘结构---CHS---LAB---文件系统

1&#xff0c;初步了解磁盘 机械磁盘是计算机中唯的一个机械设备&#xff0c; 特点是慢&#xff0c;容量大&#xff0c;价格便宜。 磁盘上面的光面&#xff0c;由数不清的小磁铁构成&#xff0c;我们知道磁铁是有n&#xff0f;&#xff53;极的&#xff0c;这刚好与二进制的&…...

我在1024谈华为

华为的发展历程与技术创新 华为自成立以来&#xff0c;一直是通信技术领域的重要参与者。让我们回顾一下华为的一些关键发展里程碑&#xff1a; 1987年&#xff0c;华为在深圳成立&#xff0c;起初专注于电话交换网络的研发和销售。 进入1990年代&#xff0c;华为转型为通信…...

NVR小程序接入平台/设备EasyNVR多品牌NVR管理工具/设备视频监控解决方案

随着科技的飞速发展&#xff0c;安防视频监控已成为维护公共安全、提升管理效率的重要手段。在这一领域中&#xff0c;NVR小程序接入平台/设备EasyNVR凭借其灵活的部署方式、强大的功能以及卓越的性能表现&#xff0c;脱颖而出&#xff0c;引领着安防视频监控的新纪元。 NVR小程…...

二叉树前序遍历的 Java 实现,包括递归和非递归两种方式

二叉树前序遍历是一种遍历树节点的方式&#xff0c;遵循特定的顺序。其基本过程可以总结为以下几个步骤&#xff1a; 前序遍历的顺序 访问根节点&#xff1a;首先处理当前节点。 递归遍历左子树&#xff1a;然后依次访问左子树。 递归遍历右子树&#xff1a;最后访问右子树。 …...

QT开发:构建现代UI的利器:深入详解QML和Qt Quick基础开发技术

目录 引言 目录 1. 什么是QML和Qt Quick QML的优势 2. QML基础语法 组件 属性 JavaScript表达式 3. 数据绑定 直接绑定 双向绑定 4. 属性和属性别名 属性 属性别名 5. 信号与槽机制 定义信号 处理信号 6. 动画与过渡效果 简单动画 过渡效果 7. 构…...

vue前端使用pdfjs与pdfdist-mergeofd 实现预览pdf并翻页,同时解决预览pdf显示模糊的问题

vue前端使用pdfjs与pdfdist-mergeofd 实现预览pdf并翻页&#xff0c;同时解决预览pdf显示模糊的问题 插件介绍 pdfdist-mergeofd插件的作用可查看这篇文章&#xff0c;同时使用ofdjs和pdfjs遇到的问题&#xff0c;和解决方法——懒加载 该插件主要是为了解决pdfjs和ofdjs同时…...

C语言——回调函数

1、回调函数 在学习了函数之后&#xff0c;我发现了一个比较难的函数——回调函数 回调函数 (Callback Function) 指的是一种函数&#xff0c;它被作为参数传递给另一个函数&#xff0c;并在满足特定条件或事件发生后被调用执行。 它允许你将一段代码延迟执行&#xff0c;或者…...

2016年ATom-1飞行活动期间以10秒间隔进行的一氧化碳(CO)观测数据

目录 简介 摘要 代码 引用 网址推荐 知识星球 机器学习 ATom: Observed and GEOS-5 Simulated CO Concentrations with Tagged Tracers for ATom-1 简介 该数据集包含2016年ATom-1飞行活动期间以10秒间隔进行的一氧化碳&#xff08;CO&#xff09;观测数据&#xff0c;…...

MLM之Emu3:Emu3(仅需下一个Token预测)的简介、安装和使用方法、案例应用之详细攻略

MLM之Emu3&#xff1a;Emu3(仅需下一个Token预测)的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;这篇论文介绍了Emu3&#xff0c;一个基于单一Transformer架构&#xff0c;仅使用下一个token预测进行训练的多模态模型。 >> 背景痛点&#xff1a; 多模态任…...

Spring Boot与Flyway实现自动化数据库版本控制

一、为什么使用Flyway 最简单的一个项目是一个软件连接到一个数据库&#xff0c;但是大多数项目中我们不仅要处理我们开发环境的副本&#xff0c;还需要处理其他很多副本。例如&#xff1a;开发环境、测试环境、生产环境。想到数据库管理&#xff0c;我们立刻就能想到一系列问…...

input角度:I2C触摸屏驱动分析和编写一个简单的I2C驱动程序

往期内容 本专栏往期内容&#xff1a; input子系统的框架和重要数据结构详解-CSDN博客input device和input handler的注册以及匹配过程解析-CSDN博客input device和input handler的注册以及匹配过程解析-CSDN博客编写一个简单的Iinput_dev框架-CSDN博客GPIO按键驱动分析与使用&…...

SQL-lab靶场less1-4

说明&#xff1a;部分内容来源于网络&#xff0c;如有侵权联系删除 前情提要&#xff1a;搭建sql-lab本地靶场的时候发现一些致命的报错&#xff1a; 这个程序只能在php 5.x上运行&#xff0c;在php 7及更高版本上&#xff0c;函数“mysql_query”和一些相关函数被删除&#xf…...

【生成模型之二】diffusion model模型

【算法简历修改、职业规划、校招实习咨询请私信联系】 【Latent-Diffusion 代码】 生成模型分类概述 Diffusion Model&#xff0c;这一深度生成模型&#xff0c;源自物理学中的扩散现象&#xff0c;呈现出令人瞩目的创新性。与传统的生成模型&#xff0c;如VAE、GAN相比&…...

记录 Maven 版本覆盖 Bug 的解决过程

背景 在使用 Maven 进行项目管理时&#xff0c;依赖版本的管理是一个常见且重要的环节。最近&#xff0c;在我的项目中遇到了一个关于依赖版本覆盖的 Bug&#xff0c;这个问题导致了 Apollo 框架的版本不一致&#xff0c;影响了项目的正常运行。以下是我解决这个问题的过程记录…...

【K8S系列】Kubernetes Service 基础知识 详细介绍

在 Kubernetes 中&#xff0c;Service 是一种抽象的资源&#xff0c;用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口&#xff0c;解决了 Pod 可能频繁变化的问题。本文将详细介绍 Kubernetes Service 的类型、功能、使用场景、DNS 和负载均衡等方面。 1.…...

python在物联网领域的数据应用分析与实战!

引言 物联网(IoT)是一个快速发展的领域,涉及到各种设备和传感器的连接与数据交换。随着设备数量的激增,数据的产生速度也在不断加快。 如何有效地分析和利用这些数据,成为了物联网应用成功的关键。Python作为一种强大的编程语言,因其简洁易用的特性和丰富的库支持,成为…...

目标跟踪算法-卡尔曼滤波详解

卡尔曼滤波是一种递归的优化算法&#xff0c;用于估计一个系统的动态状态&#xff0c;常用于跟踪、导航、时间序列分析等领域。它的关键在于使用一系列测量数据&#xff08;通常含噪声&#xff09;来估计系统的真实状态&#xff0c;使得估计值更接近实际情况。卡尔曼滤波器适合…...

SpringBoot后端开发常用工具详细介绍——application多环境配置与切换

文章目录 引言介绍application.yml&#xff08;主配置文件&#xff09;application-dev.yml&#xff08;开发环境配置&#xff09;application-test.yml&#xff08;测试环境配置&#xff09;application-prod.yml&#xff08;生产环境配置&#xff09;激活配置文件参考内容 引…...

php反序列化漏洞典型例题

1.靶场环境 ctfhub-技能树-pklovecloud 引用题目&#xff1a; 2021-第五空间智能安全大赛-Web-pklovecloud 2.过程 2.1源代码 启动靶场环境&#xff0c;访问靶场环境&#xff0c;显示源码&#xff1a;直接贴在下面&#xff1a; <?php include flag.php; class pks…...

浅析Android View绘制过程中的Surface

前言 在《浅析Android中View的测量布局流程》中我们对VSYNC信号到达App进程之后开启的View布局过程进行了分析&#xff0c;经过对整个App界面的View树进行遍历完成了测量和布局&#xff0c;确定了View的大小以及在屏幕中所处的位置。但是&#xff0c;如果想让用户在屏幕上看到…...

Agnix:为AI智能体打造安全可控的操作系统级执行环境

1. 项目概述&#xff1a;从“智能体”到“操作系统”的范式跃迁最近在开源社区里&#xff0c;一个名为agent-sh/agnix的项目引起了我的注意。乍一看这个名字&#xff0c;agent和agnix的组合&#xff0c;很容易让人联想到这是又一个基于大语言模型的智能体&#xff08;Agent&…...

【临床研究者必藏】Perplexity+Lancet联合检索SOP:从预印本争议到正式发表的全周期追踪方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;PerplexityLancet联合检索SOP的临床价值与范式变革 在循证医学实践加速数字化的当下&#xff0c;Perplexity&#xff08;基于语义理解与推理增强的检索引擎&#xff09;与《The Lancet》开放文献元数据…...

C 语言开发一个简单的线程池函数

既然了解了为什么用线程池&#xff0c;那么就回到了怎么管理这些东西。在开发中肯定要设计怎么对齐进行管理。所有代码的开始都从设计结构开始。仔细想一下&#xff0c;我们的一个简单想法就是用链表保存一系列线程&#xff0c;然后用链表保存一系列处理线程的对象。所有我们就…...

W4A4量化技术:OSC框架如何实现高效LLM部署

1. OSC框架&#xff1a;硬件高效的W4A4量化革命在大型语言模型(LLM)部署领域&#xff0c;4-bit量化(W4A4)正成为突破算力瓶颈的关键技术。传统8-bit量化虽已成熟&#xff0c;但当我们将精度压缩至4-bit时&#xff0c;激活张量中的异常值(Outliers)会像"黑洞"般吞噬有…...

高速SerDes设计中BER预测的智能应力输入方法

1. 高速串行链路设计中的BER预测挑战在当今高速数字系统设计中&#xff0c;SerDes&#xff08;串行器/解串器&#xff09;技术已成为主流接口方案&#xff0c;数据传输速率已突破10Gbps大关。随着速率提升&#xff0c;信号完整性(SI)问题日益突出&#xff0c;其中误码率(BER)预…...

Python爬虫实战:构建智能职位信息聚合工具JobClaw

1. 项目概述&#xff1a;一个面向开发者的智能职位信息聚合与解析工具最近在帮团队招聘和看机会的朋友聊天&#xff0c;发现一个挺普遍的问题&#xff1a;大家找技术岗位&#xff0c;要么在几个主流招聘App上反复刷&#xff0c;信息分散且格式不一&#xff1b;要么就是盯着几个…...

氛围编程实战:用AI工具栈快速构建可部署应用

1. 项目概述&#xff1a;什么是“氛围编程”&#xff1f;如果你对“氛围编程”这个词感到陌生&#xff0c;或者觉得它听起来有点玄乎&#xff0c;那太正常了。我第一次听到时&#xff0c;也以为又是哪个硅谷弄潮儿发明的新潮黑话。但当我真正开始实践&#xff0c;并在几个月内从…...

Encounter/Innovus GIFT TCL 脚本流程索引清单

目录 一、 布局阶段 (Placement) 二、 布线阶段 (Routing) 三、 时序阶段 (Timing) 四、 电源阶段 (Power) 五、 IO 与端口处理 六、 调试与辅助工具 一、 布局阶段 (Placement) 脚本名称 核心用途 调用场景 userAddAllHInsts.tcl 为源模块中的每个扇出添加缓冲器 解决高扇…...

C++数据结构进阶|排序:吃透O(n log n)核心算法,搞定面试高频考点

文章目录 前言 一、希尔排序&#xff08;Shell Sort&#xff09;—— 插入排序的进阶优化版 二、快速排序&#xff08;Quick Sort&#xff09;—— C面试手写高频&#xff0c;实际开发首选 三、归并排序&#xff08;Merge Sort&#xff09;—— 稳定排序的核心选择 四、堆排…...

收藏!小白程序员必备:2026年AI大模型就业新机遇与学习路线指南

根据世界经济论坛报告&#xff0c;到2030年科技、数据、AI等领域将创造1.7亿工作机会&#xff0c;同时淘汰9200万个岗位。AI市场规模预计到2034年达36804.7亿美元&#xff0c;年复合增长率19.20%。中国AI人才需求将远超供应。文章介绍了AI运营/AIGC内容创作者、算法工程师、大模…...