| 
 | 
	
 
发表于 2011-7-28 07:33:18
|
显示全部楼层
 
 
 
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我详谈。 |   
		
 
 
 
 |