硬盘物理结构和fat文件结构分析

上传人:w****i 文档编号:108580915 上传时间:2019-10-24 格式:PDF 页数:22 大小:432.35KB
返回 下载 相关 举报
硬盘物理结构和fat文件结构分析_第1页
第1页 / 共22页
硬盘物理结构和fat文件结构分析_第2页
第2页 / 共22页
硬盘物理结构和fat文件结构分析_第3页
第3页 / 共22页
硬盘物理结构和fat文件结构分析_第4页
第4页 / 共22页
硬盘物理结构和fat文件结构分析_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《硬盘物理结构和fat文件结构分析》由会员分享,可在线阅读,更多相关《硬盘物理结构和fat文件结构分析(22页珍藏版)》请在金锄头文库上搜索。

1、硬盘物理结构和 FAT 文件结构分析 硬盘物理结构和 FAT 文件结构分析 一、硬盘的物理结构: 硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以 及盘片两面所安装的磁头和相应的控制电路组成(图 1),其中盘片和磁头密封在无尘的金属壳中。 硬 盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存 储或读取出来。当系统向硬盘写入数据时,磁头中 “写数据”电流产生磁场使盘片表面磁性物质状态发生改变,并 在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指 定区域,盘片

2、表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据。因此只要能将盘片表面处理得 更平滑、磁头设计得更精密以及尽量 提高盘片旋转速度,就能造出容量更大、读写数据速度更快的硬盘。这是因为 盘片表面处理越平、转速越快就能越使磁头离盘片表面越近,提高读、写灵敏度和速 度;磁头设计越小越精密就能 使磁头在盘片上占用空间越小,使磁头在一张盘片上建立更多的磁道以存储更多的数据。 二、硬盘的逻辑结构 硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有 N 个盘片。就有 2N 个面,对应 2N 个磁头(Heads),从 0、1、 2 开始编号。每个盘片被划分成若

3、干个同心圆磁道(逻辑上的,是不可见的。)每个盘 片的划分规则通常是一样的。这样每个盘片的半径均为固定值 R 的同心圆再逻 辑上形成了一个以电机主轴为轴的柱 面(Cylinders),从外至里编号为 0、1、2每个盘片上的每个磁道又被划分为几十个扇区(Sector), 通常的容量 是 512byte,并按照一定规则编号为 1、2、3形成 CylindersHeadsSector 个扇区。这三个参数即是硬盘的 物理参 数。我们下面的很多实践需要深刻理解这三个参数的意义。 三、磁盘引导原理 3.1 MBR(master boot record)扇区 计算机在按下 power 键以后,开始执行主板 b

4、ios 程序。进行完一系列检测和配置以后。开始按 bios 中设定的 系统引导顺序引导系统。假定现在是硬 盘。Bios 执行完自己的程序后如何把执行权交给硬盘呢。交给硬盘后又执行 存储在哪里的程序呢。其实,称为 MBR 的一段代码起着举足轻重的作用。MBR (master boot record),即主引导记录, 有时也称主引导扇区。位于整个硬盘的 0 柱面 0 磁头 1 扇区(可以看作是硬盘的第一个扇区),bios 在执行自己固有 的程序以 后就会 jump 到 mbr 中的第一条指令。将系统的控制权交由 mbr 来执行。在总共 512byte 的主引导记录中, MBR 的引导程序占了其中的

5、前 446 个字 节(偏移 0H偏移 1BDH), 随后的 64 个字节(偏移 1BEH偏移 1FDH)为 DPT(Disk PartitionTable,硬盘分区表),最后的两个字节“55 AA”(偏移 1FEH偏移 1FFH)是分区有效结束标志。 MBR 不随操作系统的不同而不同,意即不同的操作系统可能会存在相同的 MBR,即使不同,MBR 也不会夹带操作 系统的性质。具有公共引导的特性。 我 们 来 分 析 一 段MBR 。 下 面 是 用winhex查 看 的 一 块 希 捷120GB硬 盘 的MBR 。 1 你的硬盘的 MBR 引导代码可能并非这样。不过即使不同,所执行的功能大体是一

6、样的。 我们看 DPT 部分。操作系统为了便于用户对磁盘的管理。加入了磁盘分区的概念。即将一块磁盘逻辑划分为几 块。磁盘分区数目的多少只受限于 CZ 的英文字母 的数目,在上图 DPT 共 64 个字节中如何表示多个分区的属性 呢?Microsoft 通过链接的方法解决了这个问题。在 DPT 共 64 个字节中,以 16 个字节 为分区表项单位描述一个分区 的属性。也就是说,第一个分区表项描述一个分区的属性,一般为基本分区。第二个分区表项描述除基本分区外的 其余空间,一般而 言,就是我们所说的扩展分区。这部分的大体说明见表 1。 2 注:上表中的超过 1 字节的数据都以实际数据显示,就是按高位

7、到地位的方式显示。存储时是按低位到高位存储的。 两者表现不同,请仔细看清楚。以后出现的表,图均同。 也可以在 winhex 中看到这些参数的意义: 3 说明: 每个分区表项占用 16 个字节,假定偏移地址从 0 开始。如图 3 的分区表项 3。分区表项 4 同分区表项 3。 1、0H 偏移为活动分区是否标志,只能选 00H 和 80H。80H 为活动,00H 为非活动。其余值对 microsoft 而言为 非法值。 2、重新说明一下(这个非常重要):大于 1 个字节的数被以低字节在前的存储格式格式(little endian format) 4 或称反字节顺序保存下来。低字节在前的格式是一种保

8、存数的方法,这样,最低位的字节最先出现在十六进制数符 号中。例如,相对扇区数字段的值 0x3F000000 的低字节在前表示为 0x0000003F。这个低字节在前的格式数的十进 制数为 63。 3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。有时候我们分区 是输入分区的大小为 7000M,分出来却是 6997M,就是这个原因。 偏移 2H 和偏移 6H 的扇区和柱面参数中,扇区占 6 位(bit),柱面占 10 位(bit),以偏移 6H 为例,其低 6 位用作扇区数的二进制表示。其高两位做柱 面数 10 位中的 高两位,偏移 7H 组成的 8 位做柱面数

9、 10 位中的低 8 位。由此可知,实际上用这种方式表示的分区容量是有限的, 柱面和磁头从 0 开始编号,扇区 从 1 开始编号,所以最多只能表示 1024 个柱面63 个扇区256 个磁头 512byte=8455716864byte。即通常的 8.4GB(实际上 应该是 7.8GB 左右)限制。实际上磁头数通常只用到 255 个(由汇 编语言的寻址寄存器决定),即使把这 3 个字节按线性寻址,依然力不从心。 在后来的操作系统中,超过 8.4GB 的分 区其实已经不通过 C/H/S 的方式寻址了。 而是通过偏移 CH偏移 FH 共 4 个字节 32 位线性扇区地址来表示分区所 占 用的扇区总

10、数。可知通过 4 个字节可以表示 232 个扇区,即 2TB=2048GB,目前对于大多数计算机而言,这已经是个 天文数字了。在未超过 8.4GB 的分区上,C/H/S 的表示方法和线性扇区的表示方法所表示的分区大小是一致的。也 就是说,两种表示方法是协调的。即使不协调,也以线性寻址为 准。(可能在某些系统中会提示出错)。超过 8.4GB 的分区结束 C/H/S 一般填充为 FEH FFH FFH。即 C/H/S 所能表示的最大值。有时候也会用柱面对 1024 的模来填充。 不过这几个字节是什么其实都无关紧要了。 虽然现在的系统均采用线性寻址的方式来处理分区的大小。但不可跨柱面的原则依然没变。

11、本分区的扇区总数 加上与前一分区之间的保留扇区数目依然必须是柱面容 量的整数倍。(保留扇区中的第一个扇区就是存放分区表的 MBR 或虚拟 MBR 的扇区,分区的扇区总数在线性表示方式上是不计入保留扇区的。如果是第一个分 区,保留扇区是 本分区前的所有扇区。 附:分区表类型标志如图 4 5 3.2 扩展分区 扩展分区中的每个逻辑驱动器都存在一个类似于 MBR 的扩展引导记录( Extended Boot Record, EBR),也有人 称之为虚拟 mbr 或扩展 mbr,意思是一样的。扩展引导记录包括一个扩展分区表和该扇区的标签。扩展引导记录将记 录只包含扩展分区中每个 逻辑驱动器的第一个柱面

12、的第一面的信息。一个逻辑驱动器中的引导扇区一般位于相对扇 区 32 或 63。但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记 录和逻辑驱动器。第一个逻辑驱动器的扩 展分区表中的第一项指向它自身的引导扇区。 第二项指向下一个逻辑驱动器的 EBR。 如果不存在进一步的逻辑驱动器, 第 二项就不会使用,而且被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第 一项会指向它本身的引导扇区。第二个逻辑驱动器的 扩展分区表的第二项指向下一个逻辑驱动器的 EBR。扩展分区 表的第三项和第四项永远都不会被使用。 通过一幅 4 分区的磁盘结构图可以看到磁盘的大致组织形式。如图 5

13、: 关于扩展分区,如图 6 所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。该图显示了一个扩展分区 上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后一个逻辑驱动器之间在扩展分区表中的差异。 除了扩展分区上最后一个逻辑驱动器外,表 2 中所描述的扩展分区表的格式在每个逻辑驱动器中都是重复的: 第一个项标识了逻辑驱动器本身的引导扇区,第二个项 标识了下一个逻辑驱动器的 EBR。最后一个逻辑驱动器的扩 展分区表只会列出它本身的分区项。最后一个扩展分区表的第二个项到第四个项被使用。 表 2 扩展分区表项的内容 扩展分区表 项 分区表项的内容 第一个项 包括数据的开始地址在内的与扩展分区中当前逻辑

14、驱动器有关的信息 第二个项 有关扩展分区中的下一个逻辑驱动器的信息,包括包含下一个逻辑驱动器的 EBR 的扇区的地 址。如果不存在进一步的逻辑驱动器的话,该字段不会被使用 第三个项 未用 6 第四个项 未用 扩展分区表项中的相对扇区数字段所显示的是从扩展分区开始到逻辑驱动器中第一个扇区的位移的字节数。总 扇区数字段中的数是指组成该逻辑驱动器的扇区数目。总扇区数字段的值等于从扩展分区表项所定义的引导扇区到 逻辑驱动器末尾的扇区数。 有时候在磁盘的末尾会有剩余空间,剩余空间是什么呢?我们前面说到,分区是以 1 柱面的容量为分区粒度的, 那么如果磁盘总空间不是整数个柱面的话, 不够一个 柱面的剩下的

15、空间就是剩余空间了, 这部分空间并不参与分区, 所以一般无法利用。照道理说,磁盘的物理模式决定了磁盘的总容量就应该是整数个柱面的容量,为 什么会有不够 一个柱面的空间呢。在我的理解看来,本来现在的磁盘为了更大的利用空间,一般在物理上并不是按照外围的扇区 大于里圈的扇区这种管理方式,只是 为了与操作系统兼容而抽象出来 CHS。可能其实际空间容量不一定正好为整数 个柱面的容量吧。 四、FAT 分区原理 先来一幅结构图: 图 7 现在我们着重研究 FAT 格式分区内数据是如何存储的。FAT 分区格式是 MICROSOFT 最早支持的分区格式,依据 FAT 表中每个簇链的所占位数(有关概念,后面会讲到

16、)分为 fat12、fat16、fat32 三种格式“变种“,但其基本存储方 式是相似的。 仔细研究图 7 中的 fat16 和 fat32 分区的组成结构。下面依次解释 DBR、FAT1、FAT2、根目录、数据区、剩余扇 区的概念。提到的地址如无特别提示均为分区内部偏移。 7 4.1 关于 DBR. DBR 区(DOS BOOT RECORD)即操作系统引导记录区的意思,通常占用分区的第 0 扇区共 512 个字节(特殊情况也要 占用其它保留扇区,我们先说第 0 扇)。在这 512 个字节 中,其实又是由跳转指令,厂商标志和操作系统版本号, BPB(BIOS Parameter Block),扩展 BPB,os 引导程序,结束标志几部分组成。 以用的最多的 FAT32 为例说明分区 DBR 各字节的含义。见图 8。 图 8 的对应解释见表 3 表 3 FAT32 分区上 DBR 中各部分的位置划分 表 3 FAT32 分区上 DBR 中各部分的位置划分 字节位 移 字段长度 字段名 对应图 8 颜色 0x00 3 个字节 跳转指

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号