chs模式值转成lba值教程

发布时间:2023-09-10 22:50:29阅读:2465

硬盘的每个盘片都有两个盘面(side),即上、下盘盘面,安照顺序从上至下从“0”开始依次编号。磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫磁道(track)。磁道从外向内从0开始顺序编号。所有盘面上的同一磁道构成的一个圆柱,通常称做柱面(cylinder),每个柱面上的磁头由上而下从“0”开始编号。

操作系统以扇区(sector)形式将信息存储在硬盘上,每个扇区包括512个字节的数据和一些其他信息。

这些通常用来表示硬盘的物理地址,现在随着硬盘容量增大我们用逻辑地址即线性地址(lba)。因此我们需要了解chs与lba之间的转换。

c/h/s与lba地址的对应关系:
从chs到lba
假设用c表示当前柱面号,h表示当前磁头号,cs表示起始柱面号,hs表示起始磁头号,ss表示起始扇区号,ps表示每磁道有多少个扇区,ph表示每柱面有多少个磁道,则有以下对应关系:
lba=(c-cs)*ph*ps+(h-hs)*ps+(s-ss)
一般情况下,cs=0、hs=0、ss=1;ps=63、ph=255
那么以下可以根据公司计算,如下:
c/h/s=0/0/1,代入上述公式中得到lba=0
c/h/s=0/0/63,代入上述公式中得到lba=62
c/h/s=1/0/1,代入上述公式中得到lba=63
c/h/s=220/156/18,代入上述公式中得到lba=3544145
从lba到chs
在这里先介绍两种运算div和mod。div做整除运算,即被除数除以除数所得的商的整数部分;比如5div3=1,33div6=5。
mod是余运算,mod运算则取商的余数;比如:5mod3=2,33mod6=5。
div和mod是一对搭档,一个取整一个取余。各个变量按照上面的进行假设,那么有:
c=lbadiv(ph*ps)+cs
h=(lbadivps)modph+hs
s=lbamodps+ss
如果上述不用mod运算,只用div运算可以如下:
c=lbadiv(ph*ps)+cs
h=lbadivps–(c-cs)*ps+ss
s=lba-(c-cs)*ph*ps-(h-hs)*ps+ss
那么按照这个规律则有:
lba=0,相应地c/h/s=0/0/1
lba=62,相应地c/h/s=0/0/63
lba=63,相应地c/h/s=1/0/1
lba=62,相应地c/h/s=0/0/63
lba=3544145,相应地c/h/s=220/156/18,

通过以上转换,大家对chs与lba之间的转换有一定的了解了。

排行榜