- 积分
- 42
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2010-1-2
- 精华
|
马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
x
数据恢复学习笔记之线性地址(LBA)与C/H/S地址之间的转换
系统在写入数据时是按照从柱面到柱面的方式,在上一个柱面写满数据后才移动磁头到下一个柱面,并从下一柱面的第一个磁头的第一个三扇区开始写入,从而使磁盘性能优化,所以,在对物理扇区进行线性编址时,也按照这种方式进行。即把第一柱面(0C)第一磁头(0H)的第一扇区(1S)编为逻辑“0”扇区,第一柱面(0C)第一磁头(0H)的第一扇区(2S)编为逻辑“1”扇区,直到第一柱面(0C)第一磁头(0H)的第一扇区(63S)编为逻辑“62”扇区,然后转到第一柱面(0C)第一磁头(1H)的第一扇区(1S),接着上一面编为逻辑“63”扇区,0柱面所有扇区编号完毕后转到1柱面的0磁头1扇区,依次往下进行,直到把所有扇区都编上号。
其次要注意C/H/S中的扇区编号是从1到63,而LBA方式下扇区从0开始编号,所有扇区顺序进行编号。
(1) 从c/h/s到LBA
从编号规则很容易看出C/H/S与LBA地址的对应关系,用C表示当前柱面号,H表示当前磁头号,S表示当前扇区号,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,LBA计算如下:
C/H/S=0/0/1时带入公式可得LBA=0
C/H/S=0/0/63时带入公式可得LBA=62
C/H/S=0/1/1时带入公式可得LBA=63
C/H/S=0/5/1时带入公式可得LBA=315
C/H/S=130/30/1时带入公式可得LBA=2090340
系统在管理扇区(簇)时就是按照LBA地址进行的,而在最终写入(或读出)硬盘进行ATA调用时需要C/H/S参数。
(2)从LBA到C/H/S
先介绍两种运算:DIV和MOD(这里指对整数的操作)。DIV称做整数运算,即被除数除以除数所得商取整数部分。如5 DIV 2=2,22 DIV 7=3。MOD就是取余运算,即取商的余数。如:5 DIV 2=1,22 DIV 7=1。
哥变量仍按上述假设进行,则有:
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 DVI PS –(C-Cs)*PH+Hs
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=0/1/1
LBA=315,则C/H/S=0/5/1
后续还会有。相互学习相互进步啊。。。。。。下面是今天的笔记,doc格式 |
|