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

CHS和LBA的地址与的磁盘关联

1 磁盘

这里需要首先理解磁盘的物理构造,才能理解具体的CHS和LBA。磁盘是一种外设所具有的的优点就是容量大,价格便宜,但是毕竟是外设访问速度,肯定是比较慢的。这里直接上物理结构,来详细讲解:

对应的结构主要有:机械臂,磁头,扇区,主轴,磁道,盘面,柱面。

磁头(head)数:每个盘片一般有上下两面,分别对应1个磁头,共2个磁头(细节:传动臂上的磁头是共进退的)

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

柱面(cylinder)数:磁道构成柱面,数量上等同于磁道个数

扇区(sector)数:每个磁道都被切分成很多扇形区域,每道的扇区数量相同

圆盘(platter)数:就是盘片的数量

所以这里就可以算出磁盘容量:

 磁头数×磁道(柱面)数×每道扇区数×每扇区字节数

那这和CHS寻址又有什么关系呢?

首先要理解如何确定一个扇面:

1.需要确定磁头吧(这里可是有多个磁头的),才能确定访问那个柱面

2.需要确定磁道吧(这里有这么多圈的磁道),就可以确定在那个环上了

3.最后再确定在那个扇区上就找到对应的扇面

 之前的讲过文件,是有内容加属性确定的,文件的属性和内容就可以存放在扇区内(一个扇区就是512字节)。

这里的CHS寻址也就是确定柱面(cylinder),磁头(head),扇区(sector),就可以确定一块扇区,所以就是CHS寻址。

这里有一些问题就是:CHS模式下支持的硬盘容量有限,因为系统用8bit来存储磁头地址,用10bit来存储柱面地址,用6bit来存储扇区地址,而⼀个扇区共有512Byte,这样使用CHS寻址⼀块硬盘最大容量 为256*1024*63*512B=8064MB(1MB=1048576B)(若按1MB=1000000B来算就是 8.4GB)

 2 磁盘的逻辑结构

磁盘本质上虽然是硬质的,但是逻辑上我们可以把磁盘想象成为卷在⼀起的磁带,那么磁盘的逻 辑存储结构我们也可以类似于:

 像这样每⼀个扇区,就有了⼀个线性地址(其实就是数组下标),这种地址叫做LBA地址。

3 重构理解LBA和CHS(真实物理过程)

记得前面有一个点吗?传动臂上的磁头是共进退的

柱⾯是⼀个逻辑上的概念,其实就是每⼀面上,相同半径的磁道逻辑上构成柱面。磁盘物理上分了很多面,但是在我们看来,逻辑上,磁盘整体是由“柱⾯”卷起来的。

所以柱面可以理解为:

柱面上的每个磁道,扇区个数是⼀样的,看起来就像是一个二维数组。

再扩展到整个盘上:

就是很多张二维数组表,也就是三维数组。所有,寻址⼀个扇区:先找到哪⼀个柱面(Cylinder),在确定柱面内哪⼀个磁道(其实就是磁头位置, Head),在确定扇区(Sector),所以就有了CHS。

在之前学习数组时,不论是二维数组还是三维数组,都可以看做一个一维数组:

所以,每⼀个扇区都有⼀个下标,我们叫做LBA(Logical Block Address)地址,其实就是线性地址。

从逻辑的LBA到CHS转化就显得尤为重要,这样OS就使用LBA地址,所以从磁盘到OS就需要CHS转LBA,从LBA到CHS就是从OS到磁盘(这个工作就是磁盘自己来做,用来服务操作系统的,属于固件,硬件电路)。

3.1 CHS&&LBA地址的转化

CHS转成LBA:

LBA=柱⾯号C*单个柱⾯的扇区总数+磁头号H*每磁道扇区数+扇区号S-1

这里减一的原因是:扇区号通常是从1开始的,而在LBA中,地址是从0开始的

LBA转成CHS:

柱⾯号C=LBA//(磁头数*每磁道扇区数)

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

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

(//表示向上取整)磁盘使用者看来,根本就不关心CHS地址,而是直接使用LBA地址,磁盘内部自己转换。

http://www.xdnf.cn/news/14147.html

相关文章:

  • C# 中委托和事件的深度剖析与应用场景
  • 求解偏微分方程组的通解
  • 小智AI为何要用MQTT+UDP?怎么接入MQTT?
  • Spring Boot 启动原理(SpringApplication.run(...) 流程)
  • 【Playwright MCP 实战分享:AI时代的浏览器自动化测试】
  • 销售预测的方法与模型(三)丨安全库存与再订货(补货)
  • AndroidMJ-基础-05
  • 数字人分身系统之数字人克隆功能板块开发,支持OEM
  • 一文了解sonar的搭建和使用
  • 基于openlayers开发北斗应用支撑平台
  • 1.2、SDH的复用结构
  • 2025年真实面试问题汇总(三)
  • 开启奇妙的 VR 刀剑博物馆之刀剑世界​
  • 大模型及agent开发1——基础知识及实现具备Funcation Calling功能的智能电商客服
  • 在C#中的锁
  • druid 数据库密码加密
  • FEMFAT许可与软件版本对应关系
  • 深度解析一下 llama.cpp 的源代码
  • 每日算法刷题Day30 6.13:leetcode二分答案2道题,用时1h10min
  • 打印机共享问题一键解决,附带设置维护工具
  • Python Day50 学习(仍为日志Day19的内容复习)
  • kafka版本升级3.5.1-->3.9.1(集群或单体步骤一致)
  • B/S架构
  • 上海市计算机学会竞赛平台2022年4月月赛丙组步步高
  • Qoppa Software提供的15款PDF产品组件科学学习
  • HarmonyOS 组件复用面试宝典 [特殊字符]
  • 【技术工具】源码管理 - GIT工具
  • Java 传输较大数据的相关问题解析和面试问答
  • ffmpeg subtitles 字幕不换行的问题解决方案
  • LeetCode 209.长度最小的子数组