设为主页
加入收藏
联系我们
返回首页
 
   
硬件故障 系统故障 软件学习
 
   
  您现在的位置>>首页>>软件学习>> 硬盘的数据结构  
 
     
 

 

硬盘的数据结构

文章来源: 赛迪学院


     在上文中,我们谈了数据在硬盘中的存储的一般原理。为了能更深入的了解硬盘,我们还必须对硬盘的数据结构有个简单的了解。硬盘上的数据按照其不同的特点和作用大致可分为 5 部分: MBR 区、 DBR 区、 FAT 区、 DIR 区和 DATA 区。我们来分别介绍一下:

( 1 ) MBR 区
     MBR ( Main Boot Record ) , 按其字面上的理解即为主引导记录区,位于整个硬盘的 0 磁道 0 柱面 1 扇区。不过,在总共 512 字节的主引导扇区中, MBR 只占用了其中的 446 个字节(偏移 0-- 偏移 1BDH ),另外的 64 个字节(偏移 1BEH-- 偏移 1FDH )交给了 DPT(Disk Partition Table 硬盘分区表 ) (见下表) , 最后两个字节 "55 , AA" (偏移 1FEH- 偏移 1FFH )是分区的结束标志。这个整体构成了硬盘的主引导扇区。大致的结构如图 5 :


图 5

     主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。 MBR 是由分区程序(如 Fdisk.com )所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。

偏移

长度

所表达的意义

0

字节

分区状态:如 0--> 非活动分区
80--> 活动分区

1

字节

该分区起始头( HEAD )

2

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

4

字节

该分区类型:如 82--> Linux Native 分区
83--> Linux Swap 分区

5

字节

该分区终止头( HEAD )

6

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

8

双字

该分区起始绝对分区

C

双字

该分区扇区数

下面,我们以一个实例让大家更直观地来了解主引导记录:
例: 80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00
在这里我们可以看到,最前面的 "80" 是一个分区的激活标志,表示系统可引导; "01 01 00" 表示分区开始的磁头号为 01 ,开始的扇区号为 01 ,开始的柱面号为 00 ; "0B" 表示分区的系统类型是 FAT32 ,其他比较常用的有 04 ( FAT16 )、 07 ( NTFS ); "FE BF FC" 表示分区结束的磁头号为 254 ,分区结束的扇区号为 63 、分区结束的柱面号为 764 ; " 3F 00 00 00" 表示首扇区的相对扇区号为 63 ; "7E 86 BB 00" 表示总扇区数为 12289622 。

( 2 ) DBR 区
     DBR ( Dos Boot Record )是操作系统引导记录区的意思。它通常位于硬盘的 0 磁道 1 柱面 1 扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为 BPB ( Bios Parameter Block )的本分区参数记录表。引导程序的主要任务是当 MBR 将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以 DOS 为例,即是 Io.sys 和 Msdos.sys )。如果确定存在,就把其读入内存,并把控制权 交给该文件。 BPB 参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、 FAT 个数,分配单元的大小等重要参数。

( 3 ) FAT 区
     在 DBR 之后的是我们比较熟悉的 FAT ( File Allocation Table 文件分配表)区。在解释文件分配表的概念之前,我们先来谈谈簇( cluster )的概念。文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是 1 个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是 4 、 8 、 16 、 32 、 64……

     通过上文我们已经知道,同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。(见图 6 )硬盘上的文件常常要进行创建、删除、增长、缩短等操作。这样操作做的越多,盘上的文件就可能被分得越零碎(每段至少是 1 簇)。但是,由于硬盘上保存着段与段之间的连接信息(即 FAT ),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。不过,这种以簇为单位的存储法也是有其缺陷的。这主要表现在对空间的利用上。每个文件的最后一簇都有可能有未被完全利用的空间(称为尾簇空间)。一般来说,当文件个数比较多时,平均每个文件要浪费半个簇的空间。


图 6

好了,我们言归正传,为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号,对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由 FAT 表来保存的,表中有很多表项,每项记录一个簇的信息。

由于 FAT 对于文件管理的重要性,所以 FAT 有一个备份,即在原 FAT 的后面再建一个同样的 FAT 。初形成的 FAT 中所有项都标明为 " 未占用 " ,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为 " 坏簇 " ,以后存文件时就不会再使用这个簇了。 FAT 的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。 FAT 的格式有多种,最为常见和为读者所熟悉的是 FAT16 和 FAT32 ,其中 FAT16 是指文件分配表使用 16 位数字,由于 16 位分配表最多能管理 65536 (即 2 的 16 次方)个簇,也就是所规定的一个硬盘分区。

由于每个簇的存储空间最大只有 32KB ,所以在使用 FAT16 管理硬盘时,每个分区的最大存储容量只有( 65536×32 KB )即 2048MB ,也就是我们常说的 2G 。现在的硬盘容量是越来越大,由于 FAT16 对硬盘分区的容量限制,所以当硬盘容量超过 2G 之后,用户只能将硬盘划分成多个 2G 的分区后才能正常使用,为此微软公司从 Windows 95 OSR2 版本开始使用 FAT32 标准,即使用 32 位的文件分配表来管理硬盘文件,这样系统就能为文件分配多达 4294967296 (即 2 的 32 次方)个簇,所以在簇同样为 32KB 时每个分区容量最大可达 65G 以上。此外使用 FAT32 管理硬盘时,每个逻辑盘中的簇长度也比使用 FAT16 标准管理的同等容量逻辑盘小很多。由于文件存储在硬盘上占用的磁盘空间以簇为最小单位,所以某一文件即使只有几十个字节也必须占用整个簇,因此逻辑盘的簇单位容量越小越能合理利用存储空间。所以 FAT32 更适于大硬盘。

( 4 ) DIR 区
DIR ( Directory )是根目录区,紧接着第二 FAT 表(即备份的 FAT 表)之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据 DIR 中的起始单元,结合 FAT 表就可以知道文件在硬盘中的具体位置和大小了。

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

 

上一篇:硬盘分区-数据在硬盘上的存储
下一篇:硬盘分区-用FDISK进行硬盘分区


【本站声明】本站刊载的部分内容全部来源互联网,对于此类文章本站仅提供交流平台,不为其版权负责。如涉及侵犯您的知识产权的文章,请联系我们,我们将尽快做出更正。并向您表示感谢!同时特别感谢对本站所有支持的网友。

 
 
综合搜索 百度 google 爱问 搜狗 中搜 雅虎 MP3 图片 flash 视频
您好!中国好用是残疾人创办站,欢迎你设为首页,你每一次的使用,就是一份爱心,对我们来说就是一份希望......