电子硬盘文件管理.docx

上传人:b****5 文档编号:3656919 上传时间:2022-11-24 格式:DOCX 页数:16 大小:202.48KB
下载 相关 举报
电子硬盘文件管理.docx_第1页
第1页 / 共16页
电子硬盘文件管理.docx_第2页
第2页 / 共16页
电子硬盘文件管理.docx_第3页
第3页 / 共16页
电子硬盘文件管理.docx_第4页
第4页 / 共16页
电子硬盘文件管理.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

电子硬盘文件管理.docx

《电子硬盘文件管理.docx》由会员分享,可在线阅读,更多相关《电子硬盘文件管理.docx(16页珍藏版)》请在冰豆网上搜索。

电子硬盘文件管理.docx

电子硬盘文件管理

硬盘的数据结构

在上文中,我们谈了数据在硬盘中的存储的一般原理。

为了能更深入的了解硬盘,我们还必须对硬盘的数据结构有个简单的了解。

硬盘上的数据按照其不同的特点和作用大致可分为5部分:

MBR区、DBR区、FAT区、DIR区和DATA区。

我们来分别介绍一下:

(1)MBR区

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

不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节(偏移0--偏移1BDH),另外的64个字节(偏移1BEH--偏移1FDH)交给了DPT(DiskPartitionTable硬盘分区表)(见下表),最后两个字节"55,AA"(偏移1FEH-偏移1FFH)是分区的结束标志。

这个整体构成了硬盘的主引导扇区。

大致的结构如图5:

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

其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。

MBR是由分区程序(如F)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。

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

例:

800101000BFEBFFC3F0000007E86BB00

在这里我们可以看到,最前面的"80"是一个分区的激活标志,表示系统可引导;"010100"表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;"0B"表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);"FEBFFC"表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;"3F000000"表示首扇区的相对扇区号为63;"7E86BB00"表示总扇区数为12289622。

(2)DBR区

DBR(DosBootRecord)是操作系统引导记录区的意思。

它通常位于硬盘的0磁道1柱面1扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为BPB(BiosParameterBlock)的本分区参数记录表。

引导程序的主要任务是当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管理硬盘时,每个分区的最大存储容量只有(65536×32KB)即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面……由于每个面都专有一个读写磁头,也常用0头(head)、1头……称之。

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

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

图1

上面我们提到了磁道的概念。

那么究竟何为磁道呢?

大家都知道,读写硬盘时,磁头依靠磁盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离不到1微米(约为头发直径的百分之一)。

由于磁盘是旋转的,则连续写入的数据是排列在一个圆周上的。

我们称这样的圆周为一个磁道(Track)。

(见图2)如果读写磁头沿着圆形薄膜的半径方向移动一段距离,以后写入的数据又排列在另外一个磁道上。

图2

根据硬盘规格的不同,磁道数可以从几百到数千不等;一个磁道上可以容纳数KB的数据,而主机读写时往往并不需要一次读写那么多,于是,磁道又被划分成若干段,每段称为一个扇区(Sector)。

一个扇区一般存放512字节的数据。

扇区也需要编号,同一磁道中的扇区,分别称为1扇区,2扇区。

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

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

而在硬盘的一个磁道中,扇区号是按照某个间隔跳跃着编排的。

我们举一个例子来说明:

在某个硬盘上,以实际存储位置而论,2号扇区并不是1号扇区后的第一个,而是第5个,3号扇区又是2号扇区后的第5个,以此类推。

这个"5"就是我们说的交叉因子。

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

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

图3

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

即使计算机只需要硬盘上存储的某个字节,也必须一次把这个字节所在的扇区中的512字节全部读入内存,再使用所需的那个字节。

不过,在上文中我们也提到,硬盘上面、磁道、扇区的划分表面上是看不到任何痕迹的,虽然磁头可以根据某个磁道的应有半径来对准这个磁道,但怎样才能在首尾相连的一圈扇区中找出所需要的某一扇区呢?

原来,每个扇区并不仅仅是由512个字节组成的,在这些由计算机存取的数据的前、后两端,都另有一些特定的数据,这些数据构成了扇区的界限标志,标志中含有扇区的编号和其他信息。

计算机就凭借着这些标志来识别扇区(见图4)。

图4

(责任编辑Jackyschool@)

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

(胜鸥 2001年04月29日02:

13)

  对计算机用户来说,硬盘故障简直就是一场灾难。

很多时候硬盘里的数据比硬盘本身甚至整台电脑更值钱。

如果你没有按我上期“备份数据、有备无患”一文中所讲经常备份你宝贵的数据,一旦遇到数据丢失的灾难,要恢复起来就很难了。

但通过一些软件和方法,你还是有可能恢复一些重要数据的。

数据丢失后,你首先应该“保护好灾难现场”:

即在确定恢复计划前,不要再对硬盘进行任何写操作。

在介绍一些数据恢复的软件及方法前,我们有必要先来了解一下硬盘数据存储及其相关系统的原理。

  硬盘驱动器

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

这些盘片一般是在以铝为主要成分的片基表面涂上磁性介质所形成,在磁盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道(track),每个磁道又被划分为若干个扇区(sector),数据就按扇区存放在硬盘上。

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

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

硬盘在上电后保持高速旋转(5400转/min以上),位于磁头臂上的磁头悬浮在磁盘表面,可以通过步进电机在不同柱面之间移动,对不同的柱面进行读写。

所以在上电期间如果硬盘受到剧烈振荡,磁盘表面就容易被划伤,磁头也容易损坏,这都将给盘上存储的数据带来灾难性的后果。

  硬盘的第一个扇区(0道0头1扇区)被保留为主引导扇区。

在主引导区内主要有两项内容:

主引导记录和硬盘分区表。

主引导记录是一段程序代码,其作用主要是对硬盘上安装的操作系统进行引导;硬盘分区表则存储了硬盘的分区信息。

计算机启动时将读取该扇区的数据,并对其合法性进行判断(扇区最后两个字节是否为0x55AA或0xAA55),如合法则跳转执行该扇区的第一条指令。

所以硬盘的主引导区常常成为病毒攻击的对象,从而被篡改甚至被破坏。

可引导标志:

0x80为可引导分区类型标志;0表示未知;1为FAT12;4为FAT16;5为扩展分区等等。

  CMOS中的硬盘信息

  在计算机的CMOS中也存储了硬盘的信息,主要有硬盘类型、容量、柱面数、磁头数、每道扇区数、寻址方式等内容,对硬盘参数加以说明,以便计算机正确访问硬盘。

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

这种情况我们就必须重新设置硬盘参数,如果事先已记下硬盘参数或者有某些防病毒软件事先备份的CMOS信息,只需手工恢复即可;否则也可使用BIOS设置(setup)中的“自动检测硬盘类型”(HDtypeautodetection)的功能,一般也能得到正确的结果。

  硬盘故障大体上可以分为软故障和硬故障两大类,具体有硬盘操作系统被损坏、硬盘主引导区被破坏、FAT表表被破坏、CMOS硬盘参数不正确、硬盘控制器与硬盘驱动器未能正常连接、硬盘驱动器或硬盘控制器硬件故障、主板故障等情况。

比如:

  开机自检过程中,屏幕提示“Harddiskdrivefailure”或类似信息,则可以判断为硬盘驱动器或硬盘控制器(提示“Harddrivecontrollerfailure”)硬件故障。

  开机自检过程中,屏幕提示“Harddisknotpresent”或类似信息,则可能是CMOS硬盘参数设置错误或硬盘控制器与硬盘驱动器连接不正确。

  开机自检过程中,屏幕提示“Missingoperatingsystem”、“NonOS”、“Nonsystemdiskordiskerror,replacediskandpressakeytoreboot”等类似信息,则可能是硬盘主引导区分区表被破坏、操作系统未正确安装或者CMOS硬盘参数设置错误等。

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

1.硬盘结构

  硬盘的内部是由圆形金属片堆叠起来的,每个盘片的两面都有一个磁头(Head)负责读写这个磁面(Side),在每个磁面上划分了一圈一圈的同心圆,叫做柱面(Cylinder)对于软盘通常称之为磁道,在每个柱面中又划分了若干段,称之为扇区(Sector)。

  由于技术的发展,硬盘的密度越来越大,使得硬盘的实际盘片数越来越少,对磁盘操作的柱面、磁头、扇区被硬盘控制器内部转换,已经不是实际的柱面、磁头、扇区了。

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

也就是说,柱面最大只能为1023。

但是大硬盘的柱面远大于这个数,所以后来就采用将柱面数减少,将磁头数增加的方式来满足磁盘寻址的要求,对于实际地址的转换在BIOS中进行,这叫逻辑块寻址方式(LogicalBlockAddressing,LBA)硬盘中有关柱面、磁头、扇区的数据都是以此为基准的。

2.分区结构

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

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

  分区机构是这样的:

硬盘的以一个扇区(就是0柱面0磁头1扇区)叫主引导扇区(MainBootRecord,MBR),存放着引导程序和主分区表(MainPartitionTable)和结束标志"55AA"。

一般称的分区表即是主分区表。

一个分区表最多可包含四个分区表项,每个分区表项中标示着一个分区信息或一个扩展分区表的位置,而扩展分区表中可能还有扩展分区表,这就形成了一个链状结构,可以记录很多个分区。

C语言定义如下

typedefstruct

{

charbootcode[0x1be];//启动代码

PartitionTablePT[4];//分区表

wordEndingFlag;//结束标识

}MBR;

分区表项的如下:

typedefstruct

{

byteBootFlag;//启动标志

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

byteSystemID;//分区类型

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

dwordRelativeSectors;//分区相对扇区数,指分区相对于记录该分区的分区表的扇区位置之差

dwordTotalSectors;//分区总扇区数

}PartitionTable;

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

structCHS

{

byteHead;//磁头

byteSector:

6;//扇区

byteCyH2:

2;//柱面的高两位

byteCyL8;//柱面的低八位

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

voidSetCylinder(wordCylinder)//设置柱面值

{

CyH2=(Cylinder>>8)&0x3;CyL8=(Cylinder&0xff);

}

};

  其中分区类型是对应于各种文件系统统一编排的一个代码。

比如06H是大于32M的FAT16分区的标,05H是扩展分区的标志,等等。

  一般的,对于DOS/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文件系统的结构是这样的:

引导扇区第一文件分配表第二文件分配表根目录数据区

(1).引导扇区

  引导扇区是文件系统的第一个扇区,其中包含分区重要的数据信息--BPB(BIOSParamenterBlock-磁盘参数表)。

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

其C语言定义为:

typedefstruct

{

wordSectorBytes;//每扇区字节数

byteSectorsPerCluster;//每簇扇区数

wordReservedSectors;//保留扇区数

byteNbrFat;//FAT的个数

wordRootEntry;//根目录项数

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

byteMedia;//分区介质标识

wordSectorsPerFAT;//每个FAT占的扇区数

wordSectorsPerTrack;//每道扇区数

wordHeads;//磁头数

dwordHiddenSectors;//隐含扇区数

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

}BPB_FAT16;

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

隐含扇区数同分区表中的隐含扇区数含义相同。

虽然存在FAT个数的定义,但现在的FAT12/16系统基本上没有除2以外的值。

因而一般不考虑其他情况。

根目录项数是指根目录总共能容纳下的目录的项数。

一个目录项占32个字节,所以一个扇区有512/32=16个目录项。

用这个值除以16就是根目录所占的扇区数。

分区总扇区数在分区大于32M时已经超过65535,两个字节已经无法表示,因此在大于32M的分区中TotalSector总是等于零,而将实际的数放在BigTotalSectors中。

  分区介质标识是确定BPB有效的标志。

它必须与FAT表中第一个字节的分区介质标识统一。

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

  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;//磁头数

d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1