了解硬盘
●C/H/S:
磁头(Head):硬盘为数个金属磁性物叠加而成的同心圆盘片,每盘片分两面(Side),依次为0和1、2和3…,每盘片分为上下两磁头读写。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。
磁道和柱面(Track and Cylinder):同一盘片不同半径的若干同心圆被划分为若干数目相等的磁道,并从外缘的“0”开始编号。柱面是具有相同编号的磁道形成一个圆柱(不同盘片相同半径构成的圆柱面,但不是一体的)。0柱面最外面,依次向里编号。一磁道对应一柱面,磁盘的柱面数与一个盘面上的磁道数是相等的。
扇区(Sector):磁盘上的每个磁道被等分为若干个弧段(与下图不同),这些弧段便是磁盘的扇区。一般每扇区可存储512字节(Byte)的信息。按公式计算,每个扇区可以存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节512个字节的信息。在向磁盘读取和写入数据时,都以扇区为单位。
磁道和扇区是由低级格式化产生的。低格的作用是将空白的磁片划分一个个半径不同的同心圆磁道,还将磁道划分为若干个扇区,每个扇区的容量一般为512字节。
CHS (3D参数):Cylinder(柱面)/ Head(磁头) /Sector(扇区),是硬盘的重要参数。一般书写时按照CHS的次序来做,如0,0,1。
硬盘示意图:
● 硬盘数据的记录方式
信息记录可表示为:××柱面(磁道),××磁头,××扇区,这在DOS下称为“绝对扇区”或“物理地址”,从0柱0磁1 开始。所谓 “相对扇区”或“逻辑(logic)地址”,只有一个逻辑扇区号,从0柱1磁1扇开始计数,把第一个 DOS扇区(DOS能访问的扇区)编号为逻辑0扇(DBR所在,被称为C盘逻辑0扇),作为C盘的开始,其它依此类推如。而MBR所在的0柱0磁1扇则没有DOS扇区编号,只能调用BIOS访问。两种地址记录方式的关系可以表示为:“绝对扇区”=“相对扇区”+“隐含扇区”。
不同的工作模式, 对应不同的3D参数,如 LBA, LARGE, NORMAL,CHS。
CHS寻址方式(物理寻址方式):
柱面范围为0~1023柱表示硬盘每一面盘片上有几条磁道,最大为 1024。
磁头为0~254个,表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 255。扇区表示每一条磁道上有几个扇区, 范围为1~63扇,最大为 63。
在CHS寻址方式中,最大寻址范围是:255×1024×63×512/1000/1000/1000=8.4G。
注意:这里的CHS参数与硬盘真实的柱面号、磁头号、扇区号其实并不相同(硬盘磁头数取决于硬盘中的
碟片数,盘片正反两面都存储着数据,所以一个盘片对应两个磁头才能正常工作。比如总容量80GB的硬盘,采用单碟容量80GB的盘片,那只有一张盘片,该盘片正反面都有数据,则对应两个磁头;而同样总容量120GB的硬盘,采用二张盘片,则只有三个磁头,其中一个磁头被两张盘片共用。因此磁头数不可能多达255个)。硬件意义上的CHS与文件系统的CHS存在一定的转换关系,这是由硬盘的固件来完成的,下面将要介绍。
LBA寻址方式(Logic Block Address,逻辑寻址方式):
扇区的逻辑块寻址模式。LBA中每个逻辑块的大小是512字节 。硬盘上的数据都是以每扇区512字节的格式存储的,所有的数据传输都是以扇区为单位的。
早期硬盘的扇区在同心圆磁道中呈扇面形状的。由于每个磁道的扇区数相等(与软盘一样),所以外磁道的记录密度要远低于内磁道,因此会浪费很多磁盘空间(如上图)。现在基于LBA或者GPT寻址,改用等密度结构生产硬盘,外侧磁道一圈因周长更大,所以扇区数量多,内侧则更少。采用这种结构后,硬盘不再具有实际的CHS参数,硬盘读写数据时采用以扇区为单位进行线性寻址的方式,扇区编号也就是该扇区的LBA地址。
系统在写入数据时是在上一个柱面写满后才移动磁头到下一个柱面,并从柱面的第一个磁头的第一个扇区开始写入,从而使磁盘性能最优。LBA也按照这种方式进行。即把0柱0磁1扇编为逻辑“0”扇区(此不同于上面“相对扇区”把0柱1磁1扇作为逻辑0扇),把0柱0磁2扇编为逻辑“1”扇区,直至0柱0磁63扇(此前都为隐含扇区)编为逻辑“62”扇区,然后转到0柱1磁1扇,接着上面编为逻辑“63”扇区,0柱面所有扇区编号完毕后转到低级格式化1柱面的0磁头1扇区,依次往下进行,直至把所有的扇区都编上号。PM分区软件也把它称为“绝对扇区”(PM的“绝对扇区”=相对扇区+隐含扇区-1)。
一般我们称CHS模式下的扇区号为物理扇区号,扇区编号是1”至“63”,而LBA方式的扇区从“0”开始。
LBA(逻辑扇区号)=总磁头数×每磁道扇区数×当前所在柱面号+每磁道扇区数×当前所在磁头号+当前所在扇区号–1
例如:CHS=0/0/1,则根据公式LBA=255×63×0+63×0+1–1= 0
也就是说物理0柱面0磁头1扇区,是逻辑0扇区。
28位和48位LBA寻址方式:IDE(ATA)界面是寄存器驱动式的并口总线。要传输数据,BIOS首先往IDE(ATA)里特定的寄存器写入数据的开始地址和数据传输的长度,再把有关的读/写命令往特定的寄存器里发
送从而开始数据传输。
数据传输的开始地址是写到4个8位寄存器里(柱面低位寄存器、柱面高位寄存器、扇区寄存器、设备/磁头寄存器)。因此,柱面地址是16位:柱面低位寄存器(8位)和柱面高位寄存器(8位),扇区地址是8位,而磁头地址是4位(没有完全占用8位),一共28位寄存器空间,被看作一个完整的LBA地址,因为包括位0(CHS里扇区不能从0开始计算)。因此,硬盘柱面的最大数是65,536(2的16次方),磁头的最大数是16(2的4次方),扇区的最大数是255(2的8次方-1,因为扇区寄存器里第一个扇区是1扇区,而不是0扇区)。所以,在28位LBA硬盘寻址方式下,逻辑块数目的理论极限是2的28次方即268435456块,每块乘以512字节,则硬盘的理论容量极限就是:268435456(块)*512(字节)=137,438,953,472字节=137GB。目前所有容量超过137G的IDE/ATA硬盘,使用的都是48位LBA寻址方式,而48位LBA寻址方式的理论容量极限是144,115,188,075,855,872字节=144,000,000 GB!很显然,在未来的许多年,这个容量极限绝对够用了。
INT 13管理:INT 13管理其实也是按照寄存器的模式来设计的,它的高层即文件管理器层发布数据读写命令和有关的参数给CPU,然后触发INT 13中断的进行,激活BIOS的磁盘服务来执行数据传输。数据的开始地址被写到3个8位寄存器里,分别是:
柱面低位寄存器、柱面高位/扇区寄存器、磁头寄存器。柱面地址是10位(柱面低位寄存器占用8位、柱面高位寄存器占用2位),扇区地址为6位(高位寄存器剩下的6位),磁头寄存器为8位。因此如果这样的话:柱面的最大数是1024(2的10次方) ,磁头的最大数是256(2的8次方),扇区的最大数是63(2的6次方-1)。所以,通过INT 13管理能寻址的扇区数是16,515,072 (1,024x256x63)。一扇区是512字节,也就是说如果以CHS寻址方式,IDE硬盘的最大容量为8.456GB。LBA寻址方式能寻址的扇区数是16,777,216(1024x256x64),这时IDE硬盘的最大容量为8.601GB。
小于8.4G的分区仍需用CHS 方式寻址,在大于8.4G的分区,CHS 参数就没有什么意义了,此时须用LBA 方式寻址。现代硬盘件系统的柱面数已经突破了1024的限制(柱面记录空间只有10位,柱面号最大为2的10次方-1,即为1023。小于1024道的扇区用INT13H的AH=2/3功能读/写,大于1023道的扇区用INT13H的AH=42H/43H功能读/写),最大磁头数和扇区数仍为255和63。相对于LBA来说,CHS模式较为直观,所以磁盘编辑器通常采用CHS模式来作为磁盘逻辑结构划分方式。
●硬盘存储计数
存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数。一个扇区若为512字节(Byte)大小,那么硬盘容量=C(柱面或磁道数)×H(磁头数)×S(扇区数)×512Byte。若干扇区为一簇(文件最小单位)
,FAT32一簇32扇区,NTFS一簇4K。
硬盘的容量以兆字节(MB)或千兆字节(GB)为单位,1GB=1024MB,1M=1024KB,1KB=1024B(yte) 1Byte=8bit(二进制位)。但硬盘厂商在标称硬盘容量时通常取1G=1000MB,因此我们在BIOS中或在格式化硬盘时看到的容量会比厂家的标称值要小。
DOS/Windows下硬盘数据结构
一个完整硬盘的数据应该包括五部分:MBR,DBR,FAT,DIR区和DATA区。其中只有MBR(主引导扇区)是唯一的,其它则随你的分区的不同而不同。
●MBR (Master Boot Record,主引导扇区或主引导记录):
主引导扇区,位于0柱0磁1扇(大小是512字节,也就是零磁道),外加DPT,由Fdisk命令产生,以55AA标志结束。
MBR主要完成的任务是:
(1) 存放硬盘分区表(DPT),这是硬盘正确读写的关键数据。
(2) 检查硬盘分区的正确性,要求只能并且必须存在一个活动分区。
(3) 确定活动分区号,并读出相应操作系统的引导记录。
(4) 检查操作系统引导记录的正确性,DOS引导扇区末尾也存在着一个AA55H标志,供引导程序识别。
(5) 释放引导权给相应的操作系统。例如,当确认DOS操作系统引导纪录存在时,则调出DOS引导程序并执行。
硬盘主引导区截图:
注:HEX为地址数值,十六进制。DEC为十进制。BIN为二进制。OCT为八进制。
MBR的结构:
1. 主引导程序(446字节,含出错提示),偏移地址为0H-1BDH。其中0000H-00D9H为主引导记录代码区(0000H-008AH寻开机分区;008BH-00D9H启动字符串)。00DAH-01BDH为保留的空闲区。
DOS命令Fdisk/MBR可以重写这一部分,内容较为固定。其在截图的上面,占了MBR的最大部分。
2. DPT(Disk Partition Table) 硬盘分区表(主分区表):01BEH-01FDH。有四个分区表项,各16字节,共64字节,后两项常不用。其内容在截图的下面最后五行内,以80开头,以55AA结束。
第一分区项(指向活动主分区)01BEH-01CDH(参照上图来寻此地址,01BEH纵坐标为1B0,横坐标为最上面一行的E,其它地址与此相同)。
80 01 01 00 0C FE FF FF 3F 00 00 00 9A E5 3F 01
发布评论