硬盘的数据结构_第1页
硬盘的数据结构_第2页
硬盘的数据结构_第3页
硬盘的数据结构_第4页
硬盘的数据结构_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硬盘的数据结构

在上文中,我们谈了数据在硬盘中的存储的一般原理。为了能更深入的了解硬盘,我们还必

须对硬盘的数据结构有个简单的了解。硬盘上的数据按照其不同的特点和作用大致可分为5

部分:MBR区、DBR区、FAT区、DIR区和DATA区。我们来分别介绍一下:

(1)MBR区

MBR(MainBootRecord),按其字面上的理解即为主引导记录区,位于整个硬盘的0磁道0

柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节(偏

移0一偏移1BDH),另外的64个字节(偏移1BEH一偏移1EDH)交给了DPT(DiskPartition

Table硬盘分区表)(见下表),最后两个字节”55,AA”(偏移1FEH-偏移1FFH)是分区的

结束标志。这个整体构成了硬盘的主引导扇区。大致的结构如图5:

OOnnI--------------

m等冈虫

MainBootRecord

主引导记录(446字节)

O1BD

O1BE

O1CD分区信息1(16字节)

O1CE

O1DD分区信息2(16字节)

O1DE

O1ED|分区信息3(16字节)

O1EE|-------------------------------------

I

O1FD|分区信息4(16字节)

01FE|01FF

55

主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是

检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,

并将控制权交给启动程序。MBR是由分区程序(如F)所产生的,它不依赖任何操

作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。

下面,我们以一个实例让大家更直观地来了解主引导记录:

例:80010100OBFEBFFC3F0000007E86BB00

在这里我们可以看到,最前面的"80''是一个分区的激活标志,表示系统可引导;“010100”

表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;"0B”表示分区的系

统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);"FEBFFC”表示分区结束的

磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;"3F000000”表示首

扇区的相对扇区号为63;“7E86BB00”表示总扇区数为12289622。

偏移长度所表达的意义

分区状态:如o—>非活动分区

0字节

80~>活动分区

1字节该分区起始头(HEAD)

2字该分区起始扇区和起始柱面

该分区类型:如82-->LinuxNative分区

4字节

83-->LinuxSwap分区

5字节该分区终止头(HEAD)

6字该分区终止扇区和终止柱面

8双字该分区起始绝对分区

C双字该分区扇区数

(2)DBR区

DBR(DosBootRecord)是操作系统引导记录区的意思。它通常位于硬盘的0磁道1柱面1

扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为BPBCBios

ParameterBlock)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给

它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys

和Msdos.sys)。如果确定存在,就把其读入内存,并把控制权交给该文件。BPB参数块记

录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个

数,分配单元的大小等重要参数。

(3)FAT区

在DBR之后的是我们比较熟悉的FAT(FileAllocationTable文件分配表)区。在解释文

件分配表的概念之前,我们先来谈谈簇(cluster)的概念。文件占用磁盘空间时,基本单

位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是1个扇区,硬盘

每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64……

通过上文我们已经知道,同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域

内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。(见

图6)硬盘上的文件常常要进行创建、删除、增长、缩短等操作。这样操作做的越多,盘上

的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盘上保存着段与段之间的连

接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。

不过,这种以簇为单位的存储法也是有其缺陷的。这主要表现在对空间的利用上。每个文件

的最后一簇都有可能有未被完全利用的空间(称为尾簇空间)。一般来说,当文件个数比较

多时,平均每个文件要浪费半个簇的空间。

好了,我们言归正传,为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件

占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号,对一个文件的最后

一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一

个簇的信息。

由于FAT对于文件管理的重要性,所以FAT有一个备份,即在原FAT的后面再建一个同样的

FAT。初形成的FAT中所有项都标明为"未占用",但如果磁盘有局部损坏,那么格式化程序

会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT

的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存

放簇号。FAT的格式有多种,最为常见和为读者所熟悉的是FAT16和FAT32,其中FAT16是

指文件分配表使用16位数字,由于16位分配表最多能管理65536(即2的16次方)个簇,

也就是所规定的一个硬盘分区。

由于每个簇的存储空间最大只有32KB,所以在使用FAT16管理硬盘时,每个分区的最大存

储容量只有(65536X32KB)即2048MB,也就是我们常说的2G。现在的硬盘容量是越来越

大,由于FAT16对硬盘分区的容量限制,所以当硬盘容量超过2G之后,用户只能将硬盘划

分成多个2G的分区后才能正常使用,为此微软公司从Windows95OSR2版本开始使用FAT32

标准,即使用32位的文件分配表来管理硬盘文件,这样系统就能为文件分配多达4294967296

(即2的32次方)个簇,所以在簇同样为32KB时每个分区容量最大可达65G以上。此外使

用FAT32管理硬盘时,每个逻辑盘中的簇长度也比使用FAT16标准管理的同等容量逻辑盘小

很多。由于文件存储在硬盘上占用的磁盘空间以簇为最小单位,所以某一文件即使只有几十

个字节也必须占用整个簇,因此逻辑盘的簇单位容量越小越能合理利用存储空间。所以

FAT32更适于大硬盘。

(4)DIR区

DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)之后,记录着根目录

下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的

起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。

(5)数据(DATA)区

数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。

数据在硬盘上的存储

(创易工作室2001年06月26日11:37)

硬盘是现在计算机上最常用的存储器。我们都知道,计算机之所以神奇,是因为它具有高速

分析处理数据的能力。而这些数据都被以文件的形式存储在硬盘里。不过,计算机可不像人

那么聪明。在读取相应的文件时,你必须要给出它相应的规则。这就是分区概念的形成。分

区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物

理参数,指定了硬盘主引导记录(即MasterBootRecord,一般简称为MBR)和引导记录备份的

存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过之后的高级格

式化,即Format命令来实现。

硬件分区后,将会被划分为面、磁道和扇区。需要注意的是,这些只是个虚拟的概念,并不

是真正在硬盘上划道子二二先从面说起,硬盘一般是由一片或几片圆形薄膜叠加而成。我

们所说,每个圆形薄膜都有两个“面"(Side),这两个面都是用来存储数据的。按照面的多少,

依次称为0面、1面、2面……由于每个面都专有一个读写磁头,也常用。头(head)、1头……

称之•按照硬盘容量和规格的不同,硬盘面数(或头数)也不一定相同,少的只有2面,多

的可达数十面。各面上磁道号相同的磁道合起来,称为一个柱面(cylinder)(见图1)。

图1

上面我们提到了磁道的概念。那么究竟何为磁道呢?大家都知道,读写硬盘时,磁头依靠磁

盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离不到1微米(约为头发直径

的百分之一)。由于磁盘是旋转的,则连续写入的数据是排列在一个圆周上的。我们称这样

的圆周为一个磁道(Track)。(见图2)如果读写磁头沿着圆形薄膜的半径方向移动一段距

离,以后写入的数据又排列在另外一个磁道上。

图2

图2

根据硬盘规格的不同,磁道数可以从几百到数千不等;一个磁道上可以容纳数KB的数据,

而主机读写时往往并不需要一次读写那么多,于是,磁道又被划分成若干段,每段称为一个

扇区(Sector)o一个扇区一般存放512字节的数据。扇区也需要编号,同一磁道中的扇区,

分别称为1扇区,2扇区。。。。这里需要注意的是,硬盘在划分扇区时,和一般的软盘有一

定的区别。软盘的一个磁道中,扇区号依次编排,即2号与1号相邻,3号与2号相邻,以

此类推。而在硬盘的一个磁道中,扇区号是按照某个间隔跳跃着编排的。我们举一个例子来

说明:在某个硬盘上,以实际存储位置而论,2号扇区并不是1号扇区后的第一个,而是第

5个,3号扇区又是2号扇区后的第5个,以此类推。这个"5"就是我们说的交叉因子。(见

图3)当然,这个交叉因子的设定并不是绝对的,每个种类的硬盘为根据自身的情况加以变

化。选择适当的交叉因子,可使硬盘驱动器读写扇区的速度与硬盘的旋转速度相匹配,提高

存储数据的速度。

图3

图3

计算机对硬盘的读写,处于效率的考虑,是以扇区为基本单位的。即使计算机只需要硬盘上

存储的某个字节,也必须一次把这个字节所在的扇区中的512字节全部读入内存,再使用所

需的那个字节。不过,在上文中我们也提到,硬盘上面、磁道、扇区的划分表面上是看不到

任何痕迹的,虽然磁头可以根据某个磁道的应有半径来对准这个磁道,但怎样才能在首尾相

连的一圈扇区中找出所需要的某一扇区呢?原来,每个扇区并不仅仅是由512个字节组成

的,在这些由计算机存取的数据的前、后两端,都另有一些特定的数据,这些数据构成了扇

区的界限标志,标志中含有扇区的编号和其他信息。计算机就凭借着这些标志来识别扇区(见

图4)。

图4

(责任编辑Jackyschool@staff.ccidnet.com)

硬盘数据存储及其相关系统的原理

(胜鸥2001年04月29日02:13)

对计算机用户来说,硬盘故障简直就是一场灾难。很多时候硬盘里的数据比硬盘本身甚

至整台电脑更值钱。如果你没有按我上期“备份数据、有备无患”一文中所讲经常备份你宝

贵的数据,一旦遇到数据丢失的灾难,要恢复起来就很难了。但通过一些软件和方法,你还

是有可能恢复一些重要数据的•数据丢失后,你首先应该“保护好灾难现场”:即在确定恢

复计划前,不要再对硬盘进行任何写操作。在介绍一些数据恢复的软件及方法前,我们有必

要先来了解一下硬盘数据存储及其相关系统的原理。

硬盘驱动器

是一种采用磁介质的数据存储设备,数据存储在密封于洁净的硬盘驱动器内腔的若干个

磁盘片上。这些盘片一般是在以铝为主要成分的片基表面涂上磁性介质所形成,在磁盘片的

每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道

(track),每个磁道又被划分为若干个扇区(sector),数据就按扇区存放在硬盘上。在每

一面上都相应地有一个读写磁头(head),所以不同磁头的所有相同位置的磁道就构成了所

谓的柱面(cylinder)。传统的硬盘读写都是以柱面、磁头、扇区为寻址方式的(CHS寻址)。

硬盘在上电后保持高速旋转(5400转/min以上),位于磁头臂上的磁头悬浮在磁盘表面,可

以通过步进电机在不同柱面之间移动,对不同的柱面进行读写。所以在上电期间如果硬盘受

到剧烈振荡,磁盘表面就容易被划伤,磁头也容易损坏,这都将给盘上存储的数据带来灾难

性的后果。

硬盘的第一个扇区(0道。头1扇区)被保留为主引导扇区。在主引导区内主要有两项

内容:主引导记录和硬盘分区表。主引导记录是一段程序代码,其作用主要是对硬盘上安装

的操作系统进行引导;硬盘分区表则存储了硬盘的分区信息。计算机启动时将读取该扇区的

数据,并对其合法性进行判断(扇区最后两个字节是否为0x55AA或0xAA55),如合法则跳

转执行该扇区的第一条指令。所以硬盘的主引导区常常成为病毒攻击的对象,从而被篡改甚

至被破坏。可引导标志:0x80为可引导分区类型标志;0表示未知;1为FAT12;4为FAT16;

5为扩展分区等等。

CMOS中的硬盘信息

在计算机的CMOS中也存储了硬盘的信息,主要有硬盘类型、容量、柱面数、磁头数、

每道扇区数、寻址方式等内容,对硬盘参数加以说明,以便计算机正确访问硬盘。当CMOS

因故掉电或发生错误时,硬盘设置可能会丢失或错误,硬盘访问也就无法正确进行。这种情

况我们就必须重新设置硬盘参数,如果事先已记下硬盘参数或者有某些防病毒软件事先备份

的CMOS信息,只需手工恢复即可;否则也可使用BIOS设置(setup)中的“自动检测硬盘

类型"(HDtypeautodetection)的功能,一般也能得到正确的结果。

硬盘故障大体上可以分为软故障和硬故障两大类,具体有硬盘操作系统被损坏、硬盘主

引导区被破坏、FAT表表被破坏、CMOS硬盘参数不正确、硬盘控制器与硬盘驱动器未能正

常连接、硬盘驱动器或硬盘控制器硬件故障、主板故障等情况。比如:

开机自检过程中,屏幕提示“Harddiskdrivefailure"或类似信息,则可以判断为

硬盘驱动器或硬盘控制器(提示“Harddrivecontrollerfailure")硬件故障。

开机自检过程中,屏幕提示"HarddisknotpresentM或类似信息,则可能是CMOS

硬盘参数设置错误或硬盘控制器与硬盘驱动器连接不正确。

开机自检过程中,屏幕提示"Missingoperatingsystem"、"NonOS"、"Nonsystem

diskordiskerror,replacediskandpressakeytoreboot"等类似信息,则可能是

硬盘主引导区分区表被破坏、操作系统未正确安装或者CMOS硬盘参数设置错误等。

开机用软盘启动后无法进入C盘,可能是分区表被破坏……

1.硬盘结构

硬盘的内部是由圆形金属片堆叠起来的,每个盘片的两面都有一个磁头(Head)负责读

写这个磁面(Side),在每个磁面上划分了一圈一圈的同心圆,叫做柱面(Cylinder)对于

软盘通常称之为磁道,在每个柱面中又划分了若干段,称之为扇区(Sector)o

由于技术的发展,硬盘的密度越来越大,使得硬盘的实际盘片数越来越少,对磁盘操作

的柱面、磁头、扇区被硬盘控制器内部转换,已经不是实际的柱面、磁头、扇区了。由于最

早时磁盘存取系统估计不足,传输数据时只给扇区留了6位,柱面留了10位,磁头留了8

位。也就是说,柱面最大只能为1023»但是大硬盘的柱面远大于这个数,所以后来就采用

将柱面数减少,将磁头数增加的方式来满足磁盘寻址的要求,对于实际地址的转换在BIOS

中进行,这叫逻辑块寻址方式(LogicalBlockAddressing,LBA)硬盘中有关柱面、磁头、扇

区的数据都是以此为基准的。

2.分区结构

众多的文件数据存放在磁盘上,需要有组织,这就形成了文件系统。但是各个操作系统

的文件系统都不尽相同,为了划分管理文件系统,在现在的PC机上都采用通用的分区结构。

分区机构是这样的:硬盘的以一个扇区(就是。柱面0磁头1扇区)叫主引导扇区(Main

BootRecord,MBR),存放着引导程序和主分区表(MainPartitionTable)和结束标志"55AA"。

一般称的分区表即是主分区表。一个分区表最多可包含四个分区表项,每个分区表项中标示

着一个分区信息或一个扩展分区表的位置,而扩展分区表中可能还有扩展分区表,这就形成

了一个链状结构,可以记录很多个分区。

C语言定义如下

typedefstruct

charbootcode[0x1be];〃启动代码

PartitionTablePT[4];//分区表

wordEndingFlag;〃结束标识

}MBR;

分区表项的如下:

typedefstruct

byteBootFlag;〃启动标志

CHSStartCHS;〃分区开始的柱面、磁头、扇区

byteSystemID;〃分区类型

CHSEndCHS;〃分区结束的柱面、磁头、扇区

dwordRelativesectors;〃分区相对扇区数,指分区相对于记录该分区的分区表的扇区位

置之差

dwordTotalSectors;〃分区总扇区数

JPartitionTable;

其中CHS为一个柱面、磁头、扇区的结构,定义如下:

structCHS

(

byteHead;〃磁头

byteSector:6;〃扇区

byteCyH2:2;〃柱面的高两位

byteCyL8;〃柱面的低八位

wordCylinder(){return(word(CyH2)*256+CyL8);}〃返回柱面值

voidSetCylinder(wordCylinder)//设置柱面值

{

CyH2=(Cylinder»8)&0x3;CyL8=(Cy1inder&Oxff);

}

);

其中分区类型是对应于各种文件系统统一编排的一个代码。比如06H是大于32M的

FAT16分区的标,05H是扩展分区的标志,等等。

一般的,对于D0S/Windows3.x/Windows95/98的系统来说,第一个分区表项记录着DOS

主分区(C盘)的信息,而且是可以启动的,第二个分区表项一般是扩展分区,在这个扩展分

区表项所指向的分区表中又是一个Dos主分区(D盘)和一个扩展分区,依次类推。而在绝大

部分系统中Dos主分区(C盘)是从0柱面1磁头1扇区开始的。(有些机器在这个位置有个

小分区,专门用来管理启动或机器设置,之后才是C盘的分区)

3.FAT文件系统

FAT文件系统(FAT12/FAT16/FAT32)是从DOS发展过来的一种文件系统,其优点是简单

易用,并被多种操作系统支持。(目前支持FAT32的操作系统还不多)FAT文件系统名称后的

数字是标识文件中系统一个分配单元所需的位(bit)数。

一个FAT12/16文件系统的结构是这样的:引导扇区第一文件分配表第二文件分配表根

目录数据区

(D.引导扇区

引导扇区是文件系统的第一个扇区,其中包含分区重要的数据信息一BPB(BIOS

ParamenterBlock-磁盘参数表)。磁盘参数表中包含分区总大小、磁盘参数等重要信息。

其C语言定义为:

typedefstruct

wordSectorBytes;〃每扇区字节数

byteSectorsPerCluster;〃每簇扇区数

wordReservedSectors;〃保留扇区数

byteNbrFat;〃FAT的个数

wordRootEntry;〃根目录项数

wordTotalSectors;〃分区总扇区数(分区小于32M时)

byteMedia;//分区介质标识

wordSectorsPerFAT;〃每个FAT占的扇区数

wordSectorsPerTrack;〃每道扇区数

wordHeads;〃磁头数

dwordHiddenSectors;〃隐含扇区数

dwordBigTotalSectors;〃分区总扇区数(分区大于32M时)

}BPBFAT16;

其中保留扇区数为从分区开始到第一个FAT表开始中间的扇区数。隐含扇区数同分区表

中的隐含扇区数含义相同。虽然存在FAT个数的定义,但现在的FAT12/16系统基本上没有

除2以外的值。因而一般不考虑其他情况。根目录项数是指根目录总共能容纳下的目录的项

数。一个目录项占32个字节,所以一个扇区有512/32=16个目录项。用这个值除以16就是

根目录所占的扇区数。分区总扇区数在分区大于32M时己经超过65535,两个字节已经无法

表示,因此在大于32M的分区中TotalSector总是等于零,而将实际的数放在

BigTotalSectors中。

分区介质标识是确定BPB有效的标志。它必须与FAT表中第一个字节的分区介质标识统

一。硬盘的分区介质标识为0F8h,如果这个标识不对或者与EAT不统一则将会出"Invalid

mediatype"的错误。

SectorsPerFAT是每个FAT所占的扇区数。系统根据分区起始地址+保留扇区数+每个FAT

所占扇区数*FAT个数+根目录项数/16来确定数据区开始的位置,然后由这个位置+簇号*每

簇扇区数来最终确定数据在硬盘扇的具体位置。

(2)文件分配表

文件分配表是文件在磁盘上分布的信息。FAT文件系统将数据区按每簇扇区数为单位划

分成一个一个单元,每个单元是文件分配的最小单位。这个单元就称为簇。

一些大的文件可能占用了很多簇,而且在磁盘上没有连续存放。FAT表就是为了确定文

件每个簇的连接关系而设的。FAT表的每一项都对应着数据区的一个簇,FAT16的FAT表每

一项占16位,也就是两个字节。每一项的内容表示其对应簇的分配情况,0表示尚未分配;

FFF0h~FFF6h为备用;FFF7h表示坏簇,即该簇中磁盘有损坏;FFF8h'FFFF表示文件结束;

其他值则表示当前簇的下一簇的簇号。

FAT表的最前面两项是不用的,因此第一个数据簇的簇号为2。FAT表第一个字节也是

分区介质类型,和BPB中的一样。因此用"F8FFFF”可以作为硬盘FAT起始的标志。

绝大多数FAT系统有两个FAT表,第二个FAT表又称为后备文件分配表。系统内部完成

后备文件分配表与第一文件分配表的统一.

本文讨论的完全恢复是基于后备文件分配表没有被破坏的情况下的恢复,如果两个文件

分配表都被损坏,理论上就无法完全确定文件信息,因此无法完全恢复。

(3)根目录

FAT12/16的根目录是单独列出来的,在后备文件分配表和数据区之间。每个目录项为

32个字节,记录一个文件或目录的信息。(长文件名例外)

文件修复的原理就是由目录项中指示的起始簇号和数据区开始位置来确定文件的位置,

从而恢复小的文件。

4.FAT32文件系统

FAT32文件系统与FAT12/16的差别较大,一个主要的差别就是将根目录划归到数据区

中了,在BPB中专门加了一项根目录开始簇号。这样根目录的大小就不再受到限制,大大增

加了根目录的自由度。

FAT32的BPB定义如下:

typedefstruct

wordBytesPerSector;〃每扇区字节数

byteSectorsPerCluster;〃每簇扇区数

wordReservedSectors;〃保留扇区数

byteNumberOfFATs;〃FAT的个数

wordRootEntries;〃根目录项数(FAT32不用)

wordTotalSectors;〃分区总扇区数(FAT32不用)

byteMediaDescriptor;〃分区介质标识

wordSectorsPerFAT;〃每个FAT占的扇区数(FAT32不用)

wordSectorsPerTrack;〃每道扇区数

wordHeads;//磁头数

dwordHiddenSectors;〃隐含扇区数

dwordBigTotalSectors;〃分区总扇区数

dwordBigSectorsPerFat;〃每个FAT占的扇区数

wordExtFlags;//扩展标志

wordFSVersion;〃文件系统版本

dwordRootDirStartClus;〃根目录起始簇号

wordFSInfoSec;〃指向包含BIGFATBOOTFSINFO结构的扇区

wordBkUpBootSec;〃后备引导区的位置

byteReserved[12];〃备用}BPBFAT32;

从上可以看出,FAT32的BPB是在FAT16BPB的基础上加入了一些参数,并停用了一些

参数。每个FAT所占扇区数变为4个字节,根目录项数不再使用。

FAT32与FAT12/16的另一不同点在于,EAT32既可以同时使用多个EAT表,也可以只使

用其中的某一个FAT表。ExtFlags正是这个标志。当ExtFlags的第8位为0时表示同时使

用每个FAT表,当其为1时表示只使用其中的一个FAT表,这个FAT表的序号由ExtFlags

的低4位给出。

FSVersion文件系统版本现在都为0。

FAT32将根目录也视作一个目录文件,使用一个簇链(ClusterChain),

RootDirStartClus正是这个链的起始簇号。

FAT32有个专门放BIGFATBOOTFSINFO结构的扇区,该结构包含了剩余簇个数,下一个

空闲簇号等信息。这个扇区通常紧接着引导扇区。由于与恢复关系不大,本文不做讨论。

FAT32将引导扇区和文件系统信息扇区信息存了两份,另一份的位置由BkUpBootSec指

出。这样由于偶然发生的损坏就很容易恢复。

5.扩展BIOS参数块

在BPB的后面是ExtendedBIOSParamenterBlock»EBPB的结构如下:

typedefstruct//ExtendedBIOSParamenterBlock

(

bytePhysicalDriveNumber;〃物理硬盘号

byteCurrentllead;〃当前磁头

byteExtBootRecSign;〃扩展引导记录标志

dwordSerialNumber;〃序列号

charVolumeLabel[11];//卷标

charFSID[8];〃文件系统标识

}EBPB;

其中物理硬盘号和当前磁头是系统运行时使用的,硬盘上的值没有什么实际意义。

ExtBootRecSign一般为28h或29h。SerialNumber是格式化后生成的序列号。文件系统标

识指示了文件系统的类型,即”FAT12"、"FAT16"、"FAT32”。

6.压缩磁盘简介

从D0S6.0开始有了压缩磁盘的功能。DBLSPACE、DRVSPACE、DRVSPACE3是各个不同时

期的磁盘压缩系统。压缩磁盘其实是个大文件,其内部是个更为复杂的FAT系统。这个大文

件包含了文件头、MDFAT(MicrosoftDrivespaceFAT)>内部BPB、内部FAT、内部根目录及

内部数据区,和分区非常相似。主要不同的是,它的FAT不直接对应数据区,而是对应于

MDFAT表,每一个MDFAT表项包含扇区起始位置信息和扇区的压缩信息。

这样在存取一个文件时需要由目录项确定起始簇,由起始簇表确定MDFAT表项,再由

MDFAT得到扇区位置,并由压缩信息决定是否进行压缩解压。根据FAT表来确定下一个簇或

者文件结束。但其中的扇区位置等信息都是相对于这个文件的逻辑地址,具体物理地址还要

用外部的分区信息和外部FAT表决定•因此对于C盘被压缩后的恢复是非常困难的。

7.ROM、PROM、EPROM,EEPROM、FlashROM分别指什么?

ROM指的是"只读存储器",即Read-OnlyMemory。这是一种线路最简单半导体电路,通

过掩模工艺,一次性制造,其中的代码与数据将永久保存(除非坏掉),不能进行修改。这玩

意一般在大批量生产时才会被用的,优点是成本低、非常低,但是其风险比较大,在产品设

计时,如果调试不彻底,很容易造成几千片的费片,行内话叫“掩砸了"!

PROM指的是"可编程只读存储器"既ProgrammableRed-OnlyMemory«这样的产品只允许

写入一次,所以也被称为“一次可编程只读存储器”(OneTimeProgarmmingROM,OTP-ROM)»

PROM在出厂时,存储的内容全为1,用户可以根据需要将其中的某些单元写入数据0(部分

的PROM在出厂时数据全为0,则用户可以将其中的部分单元写入1),以实现对其“编程”的

目的。PROM的典型产品是"双极性熔丝结构“,如果我们想改写某些单元,则可以给这些单

元通以足够大的电流,并维持一定的时间,原先的熔丝即可熔断,这样就达到了改写某些位

的效果。另外一类经典的PROM为使用”肖特基二极管''的PROM,出厂时,其中的二极管处于

反向截止状态,还是用大电流的方法将反相电压加在”肖特基二极管",造成其永久性击穿即

可。

EPROM指的是"可擦写可编程只读存储器",即ErasableProgrammableRead-OnlyMemoryo

它的特点是具有可擦除功能,擦除后即可进行再编程,但是缺点是擦除需要使用紫外线照射

一定的时间。这一类芯片特别容易识别,其封装中包含有"石英玻璃窗”,一个编程后的EPROM

芯片的”石英玻璃窗”一般使用黑色不干胶纸盖住,以防止遭到阳光直射。

EEPROM指的是“电可擦除可编程只读存储器",即ElectricallyErasableProgrammable

Read-OnlyMemory0它的最大优点是可直接用电信号擦除,也可用电信号写入。EEPROM不

能取代RAM的原应是其工艺复杂,耗费的门电路过多,且重编程时间比较长,同时其有效重

编程次数也比较低。Flashmemory指的是“闪存",所谓"闪存”,它也是一种非易失性的

内存,属于EEPROM的改进产品。它的最大特点是必须按块(Block)擦除(每个区块的大小不

定,不同厂家的产品有不同的规格),而EEPROM则可以一次只擦除一个字节(Byte)。目前"

闪存”被广泛用在PC机的主板上,用来保存BIOS程序,便于进行程序的升级。其另外一大

应用领域是用来作为硬盘的替代品,具有抗震、速度快、无噪声、耗电低的优点,但是将其

用来取代RAM就显得不合适,因为RAM需要能够按字节改写,而FlashROM做不到。

8.DOS(DOS兼容系统硬盘数据)的构成

主分区和扩展分区结构基本相似,以下以主分区为例。

主引导记录(MBR):MBR占一个扇区,在CYLO、SIDE0、SEC1,由代码区和分区表构成。

其中代码区可以由FDISK/MBR重建。

系统扇区:CYL0、SIDE0、SEC1-CYL0、SIDE0、SEC63,共62个扇区

引导区(BOOT):CYL0、SIDE1>SEC1这是我们过去称的DOS引导区。也占一个扇区。

隐藏扇区:CYL0,SIDE0、SEC1,如果是FAT16那么占一个扇区,如果是FAT32则由此

占32个扇区。

文件分配表:一般有两个FAT表,FAT12、FAT16的第一FAT表一般均在0T-2,FAT32的第

一FAT表在07-33。FAT表是记录文件占用扇区连接的地方,如果两个FAT表都坏了,后果

不堪设想。由于FAT表的长度与当前分区的大小有关所以FAT2的地址是需要计算的。

根目录区:(ROOT)这里记录了根目录里的目录文件项等,ROOT区跟在FAT2后面。

数据区:跟在ROOT区后面,这才是数据内容。

9.主引导记录简单说明:

主引导记录是硬盘引导的起点,关于代码区不多说了,其分区表,比较重要的是2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论