文档库 最新最全的文档下载
当前位置:文档库 › MBR 硬盘 内存

MBR 硬盘 内存

MBR 硬盘 内存
MBR 硬盘 内存

MBR、DPT、DBR、BPB 详解

硬盘主引导扇区= 硬盘主引导记录(MBR)+ 硬盘分区表(DPT)

物理位置:0面0道1扇区(clindyer 0, side 0, sector 1)

大小:512字节0

MBR 446字节(0000--01BD)

DPT 64字节(01BE--01FD)

结束标志2字节(55 AA)

功能:MBR通过检查DPT分区信息来引导系统跳转至DBR;

读取: 使用NORTON DISKEDIT,在OBJECT菜单中选择DRIVE —>PHYSICAL DISK —>HARD DISK,然后在OBJECT菜单中选择DISK PARTITION TABLE即可读取,并使用TOOLS菜单中的WRITE OBJECT TO选项存入指定文件备份;

写入: 使用NORTON DISKEDIT,在OBJECT菜单中选择DRIVE —>FLOOPY DISK,选择备份的DPT 文件,然后使用TOOLS菜单中的WRITE OBJECT TO —>PHYSICAL SECTOR选项写入001 (clindyer 0, side 0, sector 1);

详解:

000H--08AH MBR启动程序(寻找开机分区)

08BH--0D9H MBR启动字符串

0DAH--1BCH 保留("0")

1BEH--1FDH 硬盘分区表

1FEH--1FFH 结束标志(55AA)

活动分区主引导扇区(DBR)

物理位置:1面0道1扇区(clindyer 0, side 1, sector 1)

大小:FAT16 1扇区512字节FAT32 3扇区1536字节

功能:包含机器CMOS等信息(0000--0059),核对该信息并引导指定的系统文件,如NTLDR等;

读取: 使用NORTON DISKEDIT,在OBJECT菜单中选择DRIVE —> LOGICAL DISK —> DISK C,然后,在OBJECT菜单中选择BOOT RECORD即可读取,并使用TOOLS菜单中的WRITE OBJECT TO选项存入指定文件备份;

写入: 使用NORTON DISKEDIT,在OBJECT菜单中选择DRIVE —> FLOOPY DISK,选择备份的DBR 文件,然后使用TOOLS菜单中的WRITE OBJECT TO —> PHYSICAL SECTOR选项写入011 (clindyer 0, side 1, sector 1);

详解:

000H--002H 3 BYTE的跳转指令(去启动程序, 跳到03EH)

003H--03DH BIOS参数区

03EH--19DH DOS启动程序

19EH--1E5H 开机字符串

1E6H--1FDH 文件名(IO.SYS, MSDOS.SYS)

1FEH--1FFH 结束标记(55AA)

硬盘的数据结构

初买来的硬盘是没有办法使用的,还要将它分区,格式化(我们这里所说的格式化是高级格式化,格式化分为高级格式化和低级格式化,低级格式的目的是在将磁盘格式化分成磁道、扇区、柱面),然后再安装上操作系统才可以使用。就拿windows9X/Me 来说,我们一般要将硬盘格式化成MBR(主引导扇区)、DBR(分区引导记录)、FAT(分区表)、DIR(目录区)、和DATA(数据区)等五部分(其中只有主引导扇区是唯一的,其它的随分区数增加而增加)。

当我们删除一个文件(无论是从回收站里删除还是按下Shift+Delete),其实文件并未真正的从磁盘里删

除,只是在文件上做一个标记而已(在目录区里将第一个字符改成“E5”,在数据区里,把文件首字节改为“0E”,标记这个文件占的空间已释放,就算格式化也是只是重写文件分配表(FAT)而已,只有当写入一个文件到硬盘上,并且把这个空间占用覆盖时,这个文件才真正的删除了,如果没有补占用,还是有很大希望恢复的。

首先有必要说一下一些专业名词:

磁头:一张硬盘有两个盘面,每一个盘面都有一个读写磁头。将盘面进行编号,起始号为0,磁头号的编号和盘面的编号相同。

磁道:当磁头停在一个位置,盘片旋转一周,磁头就在盘的表面画出一个圆形轨迹,这个圆形轨迹就称为磁道,随着磁头的移动,磁盘就被画出许多个封闭的同心圆磁道。磁道从盘片的外缘开始编号,起始号为0。

柱面:硬盘一般由很多个盘面构成,每个盘面都补划分成相等的磁道,每个盘面的相同磁道就形成一个圆柱,这就是硬盘的柱面。硬盘有多少个磁道就有多少个柱面,柱面编号和磁道编号相同。

扇区:磁盘上每个磁道被划分成很多个弧段,弧段之间有间隔,这些弧段称为扇区。扇区也进行编号,起始号为1,每个磁道被除分成63个扇区,每个扇区可存储的数据是512个字节。实际现在的大容量硬盘,为了提高磁介质的利用率,使用了等密度的存储方式,也就是说外圈磁道扇区数比内圈的多,为了与老的硬盘制式相兼容,由硬盘控制器的驱动程序将参数进行转换。

簇:扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区(到底多少个扇区,根据具体文件分配格式而定)。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。

为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。

注意:磁头(Head),柱面(Cylinder)的编号都是从0开始的,而扇区(Sector)编号是从1开始的。CHS:在对扇区进行编号计算的过程中,是沿着柱面(Cylinder)-->磁头(Head)-->扇区(Sector)进行的,这就是物理扇区的CHS(柱面数、磁头数、扇区数)寻址方式。有了CHS参数,就可以很容易的计算出硬盘的容量,只要将这三个想乘得到总的扇区数,再乘上512就是硬盘容量。

MBR(主引导记录)

MBR(Main Boot Recore)既主引导记录扇区,它位于磁盘的0柱面0磁头1扇区。它总共512字节,前446字节为一段引导程序,主要任务是检查分区表是否正确,以及确定哪一个分区是操作系统可引导,并且在程序结束时把该分区的启动程序(例如MS-DOS的IO.sys)调入内存,交予控制权。后面的64字节为分区表(Disk Partition Table,DPT)分区表大多以80H或00H为开始标志,以“55AA”为结束标志,共四个,每个16字节,结束标志位与本扇区的最末端。

注意:主引导记录(MBR)不依赖于任何操作系统,也就是与操作系统无关。

以下是MBR的具体图解:

DBR(分区引导记录)

DBR(分区引导记录)硬盘引导记录只有一个,而分区引导(DOS Boot Record)记录不只一个,每一个逻辑驱动器都有一个分区引导记录(存储在逻辑驱动器的开始处的第一个扇区)分区引导记录主要由以下四部分组成:

1、BIOS参数记录块BPB(BIOS Parameter Block)表,它的主要作用是:记录了硬盘容量的大小、FAT(文件分配表)的位置和大小、FDT(文件目录表)的位置和大小。

2、磁盘标志记录表。

3、分区引导记录代码区(引导程序):引导程序的作用是判断本分区根目录下的前两个文件是否为操作

系统的引导文件(例如DOS的Io.sys Msdos.sys),如果是就把它读入内存并交予控制权

4、结束标志“55AA”:对扇区进行搜索,用于寻找分区引导记录所在扇区地址的依据。

下面例举目前常用的FAT32分区格式的BPB表,共53字节:

FAT(文件分配表)

文件分配表(File Allocation Table),记录的是磁盘中每个簇的的使用情况,其大小由本分区的大小及文件分配单元的大小决定,由于FAT对于文件管理非常重要,所以一开始设计者们就为它做了一个备份,所以有两个FAT,一直廷续到现在。

当操作系统或应用程序,将数据写入磁盘时,必须在磁盘上找到相应的可以利用的扇区;反过来,要将数据从磁盘中读出时,也要在磁盘上找到已经存储了相应数据的扇区的地址,文件分配表FAT就是记录扇区地址的。

因为磁盘的扇区非常多,如果将每个扇区都记录在FAT中必然会导致FAT体积的庞大,查找时的效率会低下,为了解决这个问题,采用的将扇区分组的方法,这个分组的过程称为扇区的分簇。

当使用了一个新格式化的逻辑驱动器时,文件数据存放的簇号是连续的,使用一段时间后,由于经常对文件进行删除、复制和修改等重要操作,每个文件的簇号就不一定连续了,为了确保取文件时,能够检索到所以连续或不连续的扇区地址,文件分配表采用了“簇链”的记录方式。

Ⅰ、当需要从磁盘上读取一个文件时,首先从文件目录表(FDT)中找到该文件的目录登记项。继而从目录登记项的有关字段,查到分配给该文件的第一个簇号(在FAT里查),根据第一个簇号,可以计算出两组数据。

1、一组数据记录了文件在数据区(DATA)里的第一簇扇区的首地址,第一簇扇区的首地址是开始数据是连续存放的,连续存放多少个扇区由分区格式,和分区大小决定。下表列它们的对应关系:

FAT16 FAT32

分区大小/MB 簇大小/KB 扇区数分区大小/MB 簇大小/KB 扇区数

256---511 8 16 0.512--8 4 8

512--1023 16 32 8--16 8 16

1024--2047 32 64 16--32 16 32

2、另外一组数据指出了FAT表内簇登记项的地址,如果其值是结束标志“ffffH"(FAT16格式)或

ffffff0fH(FAT32格式),说明文件至此结束。如果不是结束标志,则该登记项的值为第二个簇号,据此又可以计算出两组数据,继而确定文件在第数据区里第二簇扇区的首地址和FAT内第二个簇登记项的地址. 继续重复上面的过程,就可以得到DATA区里全部数据,以及文件在FAT表里所有簇登记项的地址。Ⅱ、当需要在硬盘上建立文件时,首先顺序检索FAT表,找到第一个可用簇,可用簇登记项的地址为0000H (FAT16格式)或00000000H(FAT32格式),将该簇作为起始簇,写入文件目录表(FDT)的相关登记项的起始簇字段中,然后继续检索后面的可用簇,找到后将其写入第一个可用簇项内。

按照上过程进行下去,将满足文件长度所需的簇全部找到。使每一个簇项的值指向下一个所需簇项,在最后的簇登记项内写入结束标志ffffH或ffffff0fH,于是一条能够检索整个文件的“簇链”就形成了。

当需要对一个文件进行扩展时,先检索FAT表,找到一个可用簇。将簇项的内容置为结束标志,并将文件原来的最后簇项改为指向此可用簇,依次类推,直到满足文件扩展要求。

Ⅲ、当删除文件时,除了将目录登记项的第一个字节改为“e5H”,还要在FAT表的“簇链”中对应的簇项全部清零,这些被清零的簇项又可以供给其它的文件使用,不过在删除文件结束以后目录登记项的其它字段仍然保存完好,只是文件名的第一个字节变成了“e5H",并且文件存储在扇区中的所有数据依然存在。这时,只要FAT表中被清零的簇项没有被新的文件使用,就可以运行相关的软件来恢复被删除的文件。

硬盘的系统信息被破坏时,一般情况下FAT被破坏的可能性较小,特别是第二个FAT表一般能够保存完好,因为第二个FAT表很少受到应用程序的访问。

每个FAT表的前两个字节都是:"F8FF"

文件目录表(FDT)

操作系统为了管理磁盘上的目录和文件,在特定的扇区上建立了一个文件目录表。

FAT16格式的FDT表占用32个扇区,扇区地址紧跟在第二个FAT后,FAT32分区格式没有固定的FDT 表,在第二个FDT表之后就是数据区DATA

两种分区格式都使用一个长32B的“目录登记项”来说明目录或文件的有关特性,FAT16的目录登记项放在FDT里,FAT32的目录登记项放在数据区里,下表列出了目录登记项的有关内容:

位移字节内容说明

00H 8 文件名

08H 3 扩展名

0bH 2 属性

0cH 10 系统保留

16H 2 建立或最后修改的时间

18H 2 建立或最后修改的日期

1aH 2 起始簇号

1cH 4 文件长度

若文件名不足8个字节则用空格补充。

数据区(DATA)

数据区里所有的扇区都划分为以簇为单位的逻辑结构,每一个簇在FAT里都有相应的簇登记项与之对应。

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统(图一)。图一.jpg (194.55 KB)

硬盘MBR图

2006-11-13 03:42

MBR由三部分构成:

1.主引导程序代码,占446字节

2.硬盘分区表DPT,占64字节

3.主引导扇区结束标志AA55H

一、硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节;主引导程序代码包括一小段执行代码。启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区MBR的内容到内存指定单元0:7C00 首地址开始的区域,并执行MBR程序段。

主引导代码实现下列功能:

1.扫描分区表查找活动分区;

2.寻找活动分区的起始扇区;

3.将活动分区的引导扇区读到内存;

4.执行引导扇区的运行代码。

如果主引导代码未完成这些功能,系统显示下列错误信息:

Invalid partition table

Error loading operating system

Missing operating system二、硬盘分区表DPT是从偏移01BEH开始到偏移01FDH结束的64字节(图二);硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动

分区数必须小于等于1。图二.jpg (26.13 KB)

硬盘分区表DPT

2006-11-13 03:46

分区表的每一分区的第0个字节是自举标志,其值为80H时,表示该分区是当前活动分区,可引导,其值为00H时,表示该分区不可引导。

第4字节是分区类型(图三)。图三.jpg (70.05 KB)

分区类型标志

2006-11-13 03:46

每一分区的第1至第3字节是该分区起始地址。其中第1字节为起始磁头号(面号);第2字节的低6位为起始扇区号,高2位则为起始柱面号的高2位;第3字节为起始柱面号的低8位。因此,分区的起始柱面号是用10位二进制数表示的,最大值为2^10 = 1024,因逻辑柱面号从0开始计,故柱面号的显示最大值为1023。同理,用6位二进制数表示的扇区号不会超过2^6 - 1 = 63;用8位二进制数表示的磁头号不会超过2^8 - 1 = 255。每一分区的第5至第7字节表示分区的终止地址,各字节的释义与第1至第3字节相同。这里我们假设一种极端的情况:如果让第5至第7字节的所有二进制位都取1,就获得了柱面号、磁头号和扇区号所能表示的最大值,从而得到最大绝对扇区号为:

1024 × 256 × 63 = 16,515,072

这个扇区之前的所有物理扇区所包含的字节数为:

16,515,072 × 512Bytes ≈ 8.46GB。

由此可知硬盘的容量设计为什么会有8.4GB这一档,分区表每一分区的第1至第3字节以及第5至第7字节的数据结构已经不能满足大于8.46GB的大容量硬盘的需要。考虑到向下兼容的需要,业界并未对从DOS时代就如此定义的硬盘分区表提出更改意见,否则改动所牵涉的面太广,会造成硬件和软件发展上的一个断层,几乎无法被业界和用户所接受。硬盘厂商解决这一问题的方法是定义了新的INT 13服务扩展标准。新的INT 13服务扩展标准不再使用操作系统的寄存器传递硬盘的寻址参数,而使用存储在操作系统内存里的地址包。地址包里保存的是64位LBA地址,如果硬盘支持LBA寻址,就把低28位直接传递给ATA接口,如果不支持,操作系统就先把LBA地址转换为CHS地址,再传递给ATA接口。通过这种方式,能实现在ATA总线基础上CHS寻址的最大容量是136.9 GB,而LBA寻址的最大容量是137.4GB。新的硬盘传输规范ATA 133规范又把28位可用的寄存器空间提高到48位,从而支持更大的硬盘。

分区表每一分区的第8至第11字节表示该分区的起始相对扇区数(即该扇区之前的绝对扇区个数),高位在右,低位在左;第12至第15字节表示该分区实际占用的扇区数,也是高位在右,低位在左;分区表这类数据结构的表达方式与机器中数据的实际存储方式在顺序上是一致的,即低位在前,高位在后。因此,在从16进制向十进制作数值转换时,需将字段中的16进制数以字节为单位翻转调位,用4个字节可以表示最大2^32个扇区,即2TB=2048GB。

系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。在未超过8.4GB的分区上,C/H/S的表示方法和扇区数的表示方法所表示的分区大小是一致的。超过8.4GB的/H/S/C 一般填充为FEH/FFH/FFH,即C/H/S所能表示的最大值;有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。

扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录(Extended Boot Record,EBR)(图四)。图四.jpg (25.05 KB)

扩展分区引导记录EBR

2006-11-13 03:48

扩展引导记录包括一个扩展分区表和扇区结束标志55AA。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区;第二项指向下一个逻辑驱动器的EBR,如果不存在进一步的逻辑驱动器,第二项就不会使用,而被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻

辑驱动器的扩展分区表的第一项会指向它本身的引导扇区,第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。

扩展分区表项中的相对扇区数是从扩展分区开始的扇区到该逻辑驱动器中第一个扇区的扇区数;占用的扇区数是指组成该逻辑驱动器的扇区数目。

有时候在磁盘的末尾会有剩余空间,由于分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。

三、主引导扇区的最后两个字节(偏移1FEH和偏移1FFH),其值为AA55H,它表示该扇区是个有效的引导扇区,可用来引导硬磁盘系统。分区引导扇区DBR(DOS BOOT RECORD)是由FORMAT高级格式化命令写到该扇区的内容;DBR是由硬盘的MBR装载的程序段。DBR装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区的DBR才会被MBR装入内存运行。

DBR主要由下列几个部分组成:

1.跳转指令,占用3个字节的跳转指令将跳转至引导代码。

2.厂商标识和DOS版本号,该部分总共占用8个字节。

3.BPB(BIOS Parameter Block,BIOS 参数块)。

4.操作系统引导程序。

5.结束标志字,结束标志占用2个字节,其值为AA55

DBR中的内容除了第5部分结束标志字固定不变之外,其余4个部分都是不确定的,其内容将随格式化所用的操作系统版本及硬盘的逻辑盘参数的变化而变化。

一、FAT32的分区引导扇区

为了使加载文件的操作更加灵活,加上FAT32文件系统采用"活动"的FDT表,,同时考虑到引导程序的代码量和为今后发展保留适当的余量,FAT32文件系统分区引导扇区占据了6个扇区,只有前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用;引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。

由于分区引导扇区的重要性,FAT32文件系统在在第一个分区引导扇区的6个扇区后的6个扇区里保留了分区引导扇区的备份,在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。

分区引导扇区的第一个扇区(图六)的前三个字节是一条跳转指令,然后是8个字节长的OEM ID(厂家标识)和版本号,其后是简称为BPB的BIOS参数块(BIOS Parameter Block)。对于FAT32其各部分的意义如下表:偏移地址

长度(字节)

意义

0BH

2

每个扇区的字节数,常取512。

0DH

1

每簇扇区数;可以是1, 2, 4, 8, 16, 32, 64, 128,取决于文件系统格式及分区大小。

0EH

2

为操作系统保留的扇区数;FAT32时多为十进制的32,FAT16时为1,有的格式化工具可能将它设为36或63。

10H

1

FAT表的个数;常取2。

11H

2

在FAT16中存放系统根目录中允许登记的目录项个数,FAT32中用于标注系统采用的是否为FAT32文件系统。其值为0000H表示磁盘使用FAT32文件系统。

13H

2

值为00H,为保持兼容性而保留,未使用。

15H

1

磁盘介质标志,硬盘为F8。

16H

2

未使用,值为00H。

18H

2

每个磁道的扇区数。

1AH

2

磁盘的磁头数。

1CH

4

分区前隐藏扇区的个数。

20H

4

逻辑磁盘中的扇区总数。

24H

4

每个FAT表所占的扇区数。

28H

2

FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1份FAT表。2AH

2

文件系统的主次版本(保留)。

2CH

4

磁盘根目录的起始簇号。

30H

2

文件系统参数的扇区号,通常位于引导扇区的下一个扇区。

32H

2

备份分区引导扇区的逻辑扇区号。

34H

12

保留,未使用。

40H

1

中断13呼叫的预设值,指明访问的设备;软盘为00H,硬盘为80H。

41H

1

用于中断13呼叫。

42H

1

磁盘读写参数扩展标志,其值为29H。

43H

4

格式化时随机产生的磁盘卷的序列号。

47H

11

格式化时人工输入的磁盘卷标号。

52H

8

文件系统的标识号(FAT32)。

从偏移0x5A开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的,此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。

扇区的最后两个字节存储值为0x55AA的DBR有效标志,对于其他的取值,系统将不会执行DBR相关指令。

附件2006-11-15 02:54

图六.jpg (195.24 KB)

分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区(图七),除了保存扇区的标识信息(RraA (00H)和rrAa(1E4H))外,还可能在偏移地址1E8H处存储了文件系统有关的信息。其中扇区偏移地址1E8H~1EBH的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的"可用磁盘空间"参数),而1ECH~1EFH 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问FAT表就直接获得磁盘剩余空间和可以分配的簇号。图七.jpg (176.64 KB)

2006-11-15 02:59

分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码(图八)。

附件2006-11-15 03:07

图八.jpg (194.33 KB)

二、NTFS的分区引导扇区

对于NTFS分区来说,分区引导扇区DBR只占用一个扇区(图五),并且在该分区的最后一个扇区做了备份;NTFS的引导扇区也是完成引导和定义分区参数,NTFS分区的引导扇区不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。其BPB参数如下表所示:偏移地址长度(字节)

常用值

意义

0x0B

2

0x0002

每扇区字节数

0x0D

1

0x08

每簇扇区数

0x0E

2

0x0000

保留扇区

0x10

3

0x000000

总为0

0x13

2

0x0000

NTFS未使用,为0

0x15

1

0xF8

介质描述

0x16

2

0x0000

总为0

0x18

2

0x3F00

每磁道扇区数

0x1A

2

0xFF00

磁头数

0x1C

4

0x3F000000

隐藏扇区数

0x20

4

0x00000000

NTFS未使用,为0

0x28

8

0x4AF57F0000000000

扇区总数

0x30

8

0x0400000000000000

$MFT的逻辑簇号

0x38

8

0x54FF070000000000

$MFT Mirr的逻辑簇号

0x40

4

0xF6000000

每MFT记录簇数

0x44

4

0x01000000

每索引簇数

0x48

8

0x14A51B74C91B741C

卷标

0x50

4

0x00000000

检验和

MBR、DPT、DBR、BPB 详解

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬

盘分区时由分区软件(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统(图一)。图一.jpg (194.55 KB)

硬盘MBR图

2006-11-13 03:42

MBR由三部分构成:

1.主引导程序代码,占446字节

2.硬盘分区表DPT,占64字节

3.主引导扇区结束标志AA55H

一、硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节;主引导程序代码包括一小段执行代码。启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区MBR的内容到内存指定单元0:7C00 首地址开始的区域,并执行MBR程序段。

主引导代码实现下列功能:

1.扫描分区表查找活动分区;

2.寻找活动分区的起始扇区;

3.将活动分区的引导扇区读到内存;

4.执行引导扇区的运行代码。

如果主引导代码未完成这些功能,系统显示下列错误信息:

Invalid partition table

Error loading operating system

Missing operating system二、硬盘分区表DPT是从偏移01BEH开始到偏移01FDH结束的64字节(图二);硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动分区数必须小于等于1。图二.jpg (26.13 KB)

硬盘分区表DPT

2006-11-13 03:46

分区表的每一分区的第0个字节是自举标志,其值为80H时,表示该分区是当前活动分区,可引导,其值为00H时,表示该分区不可引导。

第4字节是分区类型(图三)。图三.jpg (70.05 KB)

分区类型标志

2006-11-13 03:46

每一分区的第1至第3字节是该分区起始地址。其中第1字节为起始磁头号(面号);第2字节的低6位为起始扇区号,高2位则为起始柱面号的高2位;第3字节为起始柱面号的低8位。因此,分区的起始柱面号是用10位二进制数表示的,最大值为2^10 = 1024,因逻辑柱面号从0开始计,故柱面号的显示最大值为1023。同理,用6位二进制数表示的扇区号不会超过2^6 - 1 = 63;用8位二进制数表示的磁头号不会超过2^8 - 1 = 255。每一分区的第5至第7字节表示分区的终止地址,各字节的释义与第1至第3字节相同。这里我们假设一种极端的情况:如果让第5至第7字节的所有二进制位都取1,就获得了柱面号、磁头号和扇区号所能表示的最大值,从而得到最大绝对扇区号为:

1024 × 256 × 63 = 16,515,072

这个扇区之前的所有物理扇区所包含的字节数为:

16,515,072 × 512Bytes ≈ 8.46GB。

由此可知硬盘的容量设计为什么会有8.4GB这一档,分区表每一分区的第1至第3字节以及第5至第7字节的数据结构已经不能满足大于8.46GB的大容量硬盘的需要。考虑到向下兼容的需要,业界并未对从DOS时代就如此定义的硬盘分区表提出更改意见,否则改动所牵涉的面太广,会造成硬件和软件发展上的一个断层,几乎无法被业界和用户所接受。硬盘厂商解决这一问题的方法是定义了新的INT 13服务扩展标准。新的INT 13服务扩展标准不再使用操作系统的寄存器传递硬盘的寻址参数,而使用存储在操作系统内存里的地址包。地址包里保存的是64位LBA地址,如果硬盘支持LBA寻址,就把低28位直接传递给ATA接口,如果不支持,操作系统就先把LBA地址转换为CHS地址,再传递给ATA接口。通过这种方式,能实现在ATA总线基础上CHS寻址的最大容量是136.9 GB,而LBA寻址的最大容量是137.4GB。新的硬盘传输规范ATA 133规范又把28位可用的寄存器空间提高到48位,从而支持更大的硬盘。

9 回复:MBR、DPT、DBR、BPB 详解

分区表每一分区的第8至第11字节表示该分区的起始相对扇区数(即该扇区之前的绝对扇区个数),高位在右,低位在左;第12至第15字节表示该分区实际占用的扇区数,也是高位在右,低位在左;分区表这类数据结构的表达方式与机器中数据的实际存储方式在顺序上是一致的,即低位在前,高位在后。因此,在从16进制向十进制作数值转换时,需将字段中的16进制数以字节为单位翻转调位,用4个字节可以表示最大2^32个扇区,即2TB=2048GB。

系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。在未超过8.4GB的分区上,C/H/S的表示方法和扇区数的表示方法所表示的分区大小是一致的。超过8.4GB的/H/S/C 一般填充为FEH/FFH/FFH,即C/H/S所能表示的最大值;有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。

扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录(Extended Boot Record,EBR)(图四)。图四.jpg (25.05 KB)

扩展分区引导记录EBR

2006-11-13 03:48

扩展引导记录包括一个扩展分区表和扇区结束标志55AA。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区;第二项指向下一个逻辑驱动器的EBR,如果不存在进一步的逻辑驱动器,第二项就不会使用,而被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区,第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。

扩展分区表项中的相对扇区数是从扩展分区开始的扇区到该逻辑驱动器中第一个扇区的扇区数;占用的扇区数是指组成该逻辑驱动器的扇区数目。

有时候在磁盘的末尾会有剩余空间,由于分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。

三、主引导扇区的最后两个字节(偏移1FEH和偏移1FFH),其值为AA55H,它表示该扇区是个有效的引导扇区,可用来引导硬磁盘系统。分区引导扇区DBR(DOS BOOT RECORD)是由FORMAT高级格式化命令写到该扇区的内容;DBR是由硬盘的MBR装载的程序段。DBR装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区的DBR才会被MBR装入内存运行。

DBR主要由下列几个部分组成:

1.跳转指令,占用3个字节的跳转指令将跳转至引导代码。

2.厂商标识和DOS版本号,该部分总共占用8个字节。

3.BPB(BIOS Parameter Block,BIOS 参数块)。

4.操作系统引导程序。

5.结束标志字,结束标志占用2个字节,其值为AA55

DBR中的内容除了第5部分结束标志字固定不变之外,其余4个部分都是不确定的,其内容将随格式化所用的操作系统版本及硬盘的逻辑盘参数的变化而变化。

一、FAT32的分区引导扇区

为了使加载文件的操作更加灵活,加上FAT32文件系统采用"活动"的FDT表,,同时考虑到引导程序的代码量和为今后发展保留适当的余量,FAT32文件系统分区引导扇区占据了6个扇区,只有前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用;引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。

由于分区引导扇区的重要性,FAT32文件系统在在第一个分区引导扇区的6个扇区后的6个扇区里保留了分区引导扇区的备份,在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。

10 回复:MBR、DPT、DBR、BPB 详解

分区引导扇区的第一个扇区(图六)的前三个字节是一条跳转指令,然后是8个字节长的OEM ID(厂家标识)和版本号,其后是简称为BPB的BIOS参数块(BIOS Parameter Block)。对于FAT32其各部分的意义如下表:偏移地址

长度(字节)

意义

0BH

2

每个扇区的字节数,常取512。

0DH

1

每簇扇区数;可以是1, 2, 4, 8, 16, 32, 64, 128,取决于文件系统格式及分区大小。

0EH

2

为操作系统保留的扇区数;FAT32时多为十进制的32,FAT16时为1,有的格式化工具可能将它设为36或63。

10H

1

FAT表的个数;常取2。

11H

2

在FAT16中存放系统根目录中允许登记的目录项个数,FAT32中用于标注系统采用的是否为FAT32文件系统。其值为0000H表示磁盘使用FAT32文件系统。

13H

2

值为00H,为保持兼容性而保留,未使用。

15H

1

磁盘介质标志,硬盘为F8。

16H

未使用,值为00H。

18H

2

每个磁道的扇区数。

1AH

2

磁盘的磁头数。

1CH

4

分区前隐藏扇区的个数。

20H

4

逻辑磁盘中的扇区总数。

24H

4

每个FAT表所占的扇区数。

28H

2

FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1份FAT表。2AH

2

文件系统的主次版本(保留)。

2CH

4

磁盘根目录的起始簇号。

30H

2

文件系统参数的扇区号,通常位于引导扇区的下一个扇区。

32H

2

备份分区引导扇区的逻辑扇区号。

34H

12

保留,未使用。

40H

1

中断13呼叫的预设值,指明访问的设备;软盘为00H,硬盘为80H。

41H

1

用于中断13呼叫。

42H

1

磁盘读写参数扩展标志,其值为29H。

4

格式化时随机产生的磁盘卷的序列号。

47H

11

格式化时人工输入的磁盘卷标号。

52H

8

文件系统的标识号(FAT32)。

从偏移0x5A开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的,此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。

扇区的最后两个字节存储值为0x55AA的DBR有效标志,对于其他的取值,系统将不会执行DBR相关指令。

附件2006-11-15 02:54

图六.jpg (195.24 KB)

分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区(图七),除了保存扇区的标识信息(RraA (00H)和rrAa(1E4H))外,还可能在偏移地址1E8H处存储了文件系统有关的信息。其中扇区偏移地址1E8H~1EBH的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的"可用磁盘空间"参数),而1ECH~1EFH 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问FAT表就直接获得磁盘剩余空间和可以分配的簇号。图七.jpg (176.64 KB)

2006-11-15 02:59

分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码(图八)。

附件2006-11-15 03:07

图八.jpg (194.33 KB)

二、NTFS的分区引导扇区

对于NTFS分区来说,分区引导扇区DBR只占用一个扇区(图五),并且在该分区的最后一个扇区做了备份;NTFS的引导扇区也是完成引导和定义分区参数,NTFS分区的引导扇区不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。其BPB参数如下表所示:偏移地址长度(字节)

常用值

意义

0x0B

2

0x0002

每扇区字节数

0x0D

0x08

每簇扇区数

0x0E

2

0x0000

保留扇区

0x10

3

0x000000

总为0

0x13

2

0x0000

NTFS未使用,为0

0x15

1

0xF8

介质描述

0x16

2

0x0000

总为0

0x18

2

0x3F00

每磁道扇区数

0x1A

2

0xFF00

磁头数

0x1C

4

0x3F000000

隐藏扇区数

0x20

4

0x00000000

NTFS未使用,为0

0x28

8

0x4AF57F0000000000 扇区总数

8

0x0400000000000000 $MFT的逻辑簇号

0x38

8

0x54FF070000000000 $MFT Mirr的逻辑簇号0x40

4

0xF6000000

每MFT记录簇数

0x44

4

0x01000000

每索引簇数

0x48

8

0x14A51B74C91B741C 卷标

0x50

4

0x00000000

检验和

转载

原码、反码、补码

数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的结果.尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚."(摘自<<数学发展史>>有空大家可以看看哦~,很有意思的).为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制(23).下面进入正题.

数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的原码了.假设机器能处理的位数为8.即字长为1byte,原码能表示数值的范围为

(-127~-0 +0~127)共256个.

有了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下: 假设字长为8bits

( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)原+ (10000001)原= (10000010)原= ( -2 ) 显然不正确.

因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间和原码相同且一一对应. 下面是反码的减法运算:

( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10

(00000001) 反+ (11111110)反= (11111111)反= ( -0 ) 有问题.

( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 反+ (11111101)反= (11111110)反= ( -1 ) 正确

问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大).

于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示范围为:

(-128~0~127)共256个.

注意:(-128)没有相对应的原码和反码, (-128) = (10000000) 补码的加减运算如下:

( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)补+ (11111111)补= (00000000)补= ( 0 ) 正确

( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 补+ (11111110) 补= (11111111)补= ( -1 ) 正确

所以补码的设计目的是:

⑴使符号位能与有效值部分一起参加运算,从而简化运算规则.

⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计

所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。看了上面这些大家应该对原码、反码、补码有了新的认识了吧!

有网友对此做了进一步的总结:

本人大致总结一下:

1、在计算机系统中,数值一律用补码来表示(存储)。

主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

2、补码与原码的转换过程几乎是相同的。

数值的补码表示也分两种情况:

(1)正数的补码:与原码相同。

例如,+9的补码是00001001。

(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。

例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码0000111按位取反为1111000;再加1,所以-7的补码是11111001。

已知一个数的补码,求原码的操作分两种情况:

(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。

(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。

例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。

在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模”的概念:“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如:

时钟的计量范围是0~11,模=12。

表示n位的计算机计量范围是0~2(n)-1,模=2(n)。【注:n表示指数】

“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。

例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:

一种是倒拨4小时,即:10-4=6

另一种是顺拨8小时:10+8=12+6=6

在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。

对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。

对于计算机,其概念和方法完全一样。n位计算机,设n=8,所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2(8)。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。

把补数用到计算机对数的处理上,就是补码。

硬盘绝密维修资料

1 硬盘绝密维修资料

2 回复:硬盘绝密维修资料

第一章硬盘的物理结构和原理

一、引言

自1956年IBM推出第一台硬盘驱动器IBM RAMAC 350至今已有四十多年了,其间虽没有CPU那种令人眼花缭乱的高速发展与技术飞跃,但我们也确实看到,在这几十年里,硬盘驱动器从控制技术、接口标准、机械结构等方面都进行了一系列改进。正是这一系列技术上的研究与突破,使我们今天终于用上了容量更大、体积更小、速度更快、性能更可靠、价格更便宜的硬盘。

如今,虽然号称新一代驱动器的JAZ、DVD-ROM、DVD-RAM、CD-RW、MO、PD等纷纷登陆大容量驱动器市场,但硬盘以其容量大、体积小、速度快、价格便宜等优点,依然当之无愧地成为桌面电脑最主要的外部存储器,也是我们每一台PC必不可少的配置之一。

二、硬盘磁头技术

1、磁头

磁头是硬盘中最昂贵的部件,也是硬盘技术中最重要和最关键的一环。传统的磁头是读写合一的电磁感应式磁头,但是,硬盘的读、写却是两种截然不同的操作,为此,这种二合一磁头在设计时必须要同时兼顾到读/写两种特性,从而造成了硬盘设计上的局限。而MR磁头(Magnetoresistive heads),即磁阻磁头,采用的是分离式的磁头结构:写入磁头仍采用传统的磁感应磁头(MR磁头不能进行写操作),读取磁头则采用新型的MR磁头,即所谓的感应写、磁阻读。这样,在设计时就可以针对两者的不同特性分别进行优化,以得到最好的读/写性能。另外,MR磁头是通过阻值变化而不是电流变化去感应信号幅度,因而对信号变化相当敏感,读取数据的准确性也相应提高。而且由于读取的信号幅度与磁道宽度无关,故磁道可以做得很窄,从而提高了盘片密度,达到200MB/英寸2,而使用传统的磁头只能达到20MB/英寸2,这也是MR磁头被广泛应用的最主要原因。目前,MR磁头已得到广泛应用,而采用多层结构和磁阻效应更好的材料制作的GMR磁头(Giant Magnetoresistive heads)也逐渐普及。

2、磁道

当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。这些磁道用肉眼是根本看不到的,因为它们仅是盘面上以特殊方式磁化了的一些磁化区,磁盘上的信息便是沿着这样的轨道存放的。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会相互产生影响,同时也为磁头的读写带来困难。一张1.44MB的3.5英寸软盘,一面有80个磁道,而硬盘上的磁道密度则远远大于此值,通常一面有成千上万个磁道。

3、扇区

磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节的信息,磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。1.44MB3.5英寸的软盘,每个磁道分为18个扇区。

4、柱面

硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的CHS的数目,即可确定硬盘的容量,硬盘的容量=柱面数×磁头数×扇区数×512B。

三、硬盘接口技术

硬盘接口是连接硬盘驱动器和计算机的专用部件,它对计算机的性能以及在扩充系统时计算机连接其他设

相关文档