宁波数据恢复-硬盘数据寻址方式

2020-05-09 13:10:00
admin668
原创
650
访问硬盘上的数据总是以扇区为单位进行的,即每次读或写至少是一个扇区的数据。硬盘的寻址模式,通俗地说,就是主板BIOS通过什么方式,查找硬盘低级格式化划分出来的扇区的位置。为适应不同的硬盘的容量,有不同的寻址模式。
目前常用的有两种:物理寻址方式和逻辑寻址方式。
1.物理寻址方式
物理寻址方式又称CHS(Cylinder柱面/Head磁头/Sector扇区)方式,是用柱面号(即磁道号)、磁头号(即盘面号)和扇区号来表示一个特定的扇区。柱面和磁头从0开始编号,而扇区是从1开始编号的
知道了磁头数、柱面数、扇区数,就可以很容易地确定数据保存在硬盘的哪个位置。也很容易确定硬盘的容量,其计算公式是:硬盘容量=磁头数X柱面数×扇区数×512字节
CHS模式的地址是写到3个8位寄存器里的,分别是
柱面低位寄存器(8位)
柱面高位寄存器(高2位)+扇区寄存器(低6位)
磁头寄存器(8位)
因此,硬盘磁头最多有256(2的8次方)个,即0~255;扇区最多有63(2的6次方-1)个,即1-63;柱面最多有1024(2的10次方)个,即0~1023。这样使用CHS寻址一块硬盘最大容量为256*1024*63*512B=8064MB(1MB=1048576B)
(若按1MB=1000000B来算就是84GB)

系统在写入数据时是按照从柱面到柱面的方式,当上一个柱面写满数据后才移动磁头到下一个柱面,而且是从柱面的第一个磁头的第一个扇区开始写入,从而使磁盘性能最优。

比如:已知有一个4磁头(硬盘每柱面的磁道数为4),每磁道有17个扇区的硬盘读取1柱面1磁头1扇区之前会先读取的扇区数是
1.1柱面之前有一个柱面(0柱面),一个柱面共有4个磁道,每个磁道有17个扇区所以一个柱面一共有4*17=68个扇区;
2.在本柱面中(1柱面),1磁头之前有一磁头(0磁头),即有一个磁道,共有17个扇区
3.在本磁道中(1柱面1磁头),1扇区属于第一个扇区,所以在它前面不会再读取其他扇区;经过上面三步,可以确定1柱面1磁头1扇区之前应该读取42+17=85个扇区。思考练习:CHS寻址方式,某一硬盘有4磁头,每磁道有63个扇区。若某一文件的起始地址是2柱面2磁头2扇区,其结東地址为4柱面3磁头35扇区。请计算此文件共占用了多少个扇区?此文件有多大(以M为单位)?
2.逻辑寻址方式
逻辑寻址方式又称LBA(Logical Block Addressing)方式,是用逻辑编号来指定一个扇区的寻址方式
在早期的硬盘中,由于每个磁道的扇区数相同,外磁道的记录密度远低于内磁道,因此造成很多磁盘空间的浪费。为了解决这一问题,人们改用等密度结构,即外圈磁道的扇区比内圈磁道多。此种结构的硬盘不再具有实际的3D参数,寻址方式也改为以扇区为单位的线性寻址,这种寻址模式便是LBA。即将所有的扇区统一编号。
由于系统在写人数据时是按照从柱面到柱面的方式,当上一个柱面写满数据后才移动磁头到下一个柱面,而且是从柱面的第一个磁头的第一个扇区开始写入,从而使磁盘性能最优。
在对物理扇区进行线性编址时,也是按照这种方式进行的。我们需要注意的是,物理扇区C/HS中的扇区编号是从“1”至“63”,而逻辑扇区LBA方式下扇区是从“0”开始编号,所有扇区编号按顺序进行。
对于任何一个硬盘,都可以认为其扇区是从0号开始,但是每个硬盘到底有多少盘片,有几个磁头,却是不一样的。也就是数据到底存在哪个物理位置是不固定的。

CHs与LBA之间的相互转换
从上面的分析中可得到一结论,在CHS寻址方式中,读取某一扇区之前要读取的扇区数即为此扇区的LBA参数。于是可得出CHS参数转换成其相对应的LBA参数值的公式如下逻辑编号(即LBA地址)〓(柱面编号×磁头数十磁头编号)×扇区数+扇区编号-1上式中,磁头数为硬盘磁头的总数,扇区数为每磁道的扇区数。
为了验证此公式,下面我们来举个例子。
实例:已知有一个4磁头(硬盘每柱面的磁道数为4),每磁道有17个扇区的硬盘其中有一个逻辑硬盘D:,它的第一个扇区在硬盘的柱面号为120,磁头号为1,扇区号为1的位置,则计算柱面号为160,磁头号为3,扇区号为6的逻辑扇区号RS是多少?
分析:根据前面的说明,已知条件有:C1=120,H1=1,S1=1,NS=17,NH=4,C=160,H=3,S=6,则代入上面公式可得到逻辑扇区号RS=4×17×(160-120)+17×(3-1)+
(6-1)=2759,即硬盘柱面号为160,磁头号为3,扇区号为6的逻辑扇区号为2759。
在对硬盘进行故障维护或者进行相关软件开发时,不仅需要将硬盘的物理地址转换成逻辑地址,有时还需要知道逻辑地址转换为物理地址的方法。
首先介绍两种运算DIV和MOD(这里指对正整数的操作)。DIV称作整除运算,即被除数除以除数所得商的整数部分。比如,3DIV2=1,10DIV3=3;MOD运算则是取商的余数。比如,5MOD2=1,10MOD3=1。DIV和MOD是一对搭档,一个取整数部分,一个取余数部分。
各参数仍然按上述假设进行,则从LBA到C/HS的转换公式为C-LBA DIV(PH*PS)+CS H=(LBA DIV PS MOD PH +HS S=LBA MOD 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实例:设硬盘的磁头号为4,每磁道17个扇区,其中逻辑硬盘D:的第一个扇区在硬盘的柱面号为120、磁头号为1、扇区号为1上,求逻辑D:盘上逻辑扇区号为2757对应的物理地址是多少?
分析:根据上面的已知条件,可知C1=120,H1=1,S1=1,NS=17,NH=4,Rs=2757则将这些数据代入上面的公式可得
C=((2757div17)div4)+120=160
H=(2757div17)mod4)+1=3
S=(2757mod17)+1=4即逻辑扇区号RS为2757的硬盘对应的物理地址是柱面号为160、磁头号为3和扇区号为4。

文章分类
数据恢复知识