【转】硬盘CHS模式与LBA模式

硬盘的chs模式是指chs(Cylinder/Head/Sector)模式,很久以前, 硬盘的容量还非常小的时候, 人们采用与软盘类似的结构生产硬盘. 也就是硬盘盘片的每一条磁道都具有相同的扇区数. 由此产生了所谓的3D参数 (Disk Geometry). 既磁头数(Heads), 柱面数(Cylinders), 扇区数(Sectors per track),以及相应的寻址方式.
其中: 磁头数(Heads) 表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 256 (用 8 个二进制位存储);柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道, 最大为 1024(用 10 个二进制位存储); 扇区数(Sectors per track) 表示每一条磁道上有几个扇区, 最大为63 (用 6 个二进制位存储). 每个扇区一般是 512个字节, 理论上讲这不是必须的, 但好象没有取别的值的. 所以磁盘最大容量为: 256 * 1024 * 63 * 512 / 1048576 = 8064 MB ( 1M = 1048576 Bytes)或硬盘厂商常用的单位:256 * 1024 * 63 * 512 / 1000000 = 8455 MB ( 1M = 1000000 Bytes )在 CHS 寻址方式中, 磁头, 柱面, 扇区的取值范围分别为 0 到 Heads-1,0 到 Cylinders-1, 1 到 Sectors per track (注意是从 1 开始).在 CHS 寻址方式中, 有以下几种尺寸单位:扇区 (Sector) = 512 字节 (一般情况下)磁道 (Track) = (Sectors per track) 扇区
柱面 (Cylinder)= (Sectors per track) * Heads 扇区
这种方式会浪费很多磁盘空间 (与软盘一样). 为了解决这一问题, 进一步提高硬盘容量, 人们改用等密度结构生产硬盘. 也就是说,
外圈磁道的扇区比内圈磁道多. 采用这种结构后, 硬盘不再具有实际的3D参数, 寻址方式也改为线性寻址, 即以扇区为单位进行寻址.
为了与使用3D寻址的老软件兼容 (如使用BIOS Int13H接口的软件), 在硬盘控制器内部安装了一个地址翻译器, 由它负责将老式3D参数翻译成新的线性参数. 这也是为什么现在硬盘的3D参数可以有多种选择的原因 (不同的工作模式, 对应不同的3D参数,如 LBA, LARGE, NORMAL). CHS模式只能识别大硬盘的前面8G.lba使用的线性寻址,突破了1024柱面的限制,能访问8G以外的空间了。

==================================================================
硬盘的每个盘片都有两个盘面(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=3。

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之间的转换有一定的了解了

猜你喜欢

转载自lingqi1818.iteye.com/blog/1637727