请教一个小问题
书上看了磁头和柱面是从0开始编号,而扇区是从1开始编号,但为什么又要从0扇区开始呢,没有搞明白,原文是《数据重现文件系统原理精解与数据恢复最佳实践》.(马林)第一章和第二章,是不是有点矛盾啊,望知道的朋友解释一下,谢谢 我给你解释下 一个是CHS ,一个是LBA 这位仁兄说的是寻址方式吧, 回复 3# 掮肩而过谢谢 这书上的错误也太多了吧,是不是盗版哦,剪刀加浆糊 CHS (Cylinder/Head/Sector)----CHS寻址模式将硬盘划分为磁头(Heads)、柱面(Cylinder)、扇区(Sector)。磁头柱面从0开始定义,扇区从1开始。
LBA(Logical Block Addressing)----LBA逻辑块寻址模式,只是用Sector扇区定义,从0开始。
CHS--0 0 1 转换成 LBA 等于0.(转换参考:http://www.onegreen.net/Article/HTML/2600.html)
防止以上链接失效,原文如下:
硬盘的每个盘片都有两个盘面(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做整除运算,即被除数除以除数所得的商的整数部分;比如5 div 3=1,33 div 6=5。
mod是余运算,mod运算则取商的余数;比如:5 mod 3=2,33 mod 6=5。
div和mod是一对搭档,一个取整一个取余。各个变量按照上面的进行假设,那么有:
c=lba div (ph*ps) + cs
h=(lba div ps) mod ph + hs
s=lba mod ps + ss
如果上述不用mod运算,只用div运算可以如下:
c= lba div (ph*ps) + cs
h=lba div ps –(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之间的转换有一定的了解了。
不知道你能否理解。还有不明白的地方,可以Q我详谈。 (38:向楼上学习! 烟台牛逼,从来没研究过这个 谢谢了朋友,知道了,废了很多时间才搞懂
页:
[1]