RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
FAT:磁盘上数据组织格式综述 (阿甘译)
  • 作者:zhaozj
  • 发表时间:2020-12-23 10:35
  • 来源:未知

   这篇文档中记法的约定:        有前缀"0x"的数字都是16进制数字。   任何其他没有前缀"0x"的数字都是10进制数字。   本文档里面所有代码片段都是使用的'C'语言。但没有严格遵从其代码输入规范和语法。   本文档中某些代码片段混合使用了32位和16位的数据元素。我们假设你是一个知道怎样正确将32位数据转换成16位数据(保证数据不丢失)的程序员。同时,必须注意,所有的数据类型都是无符号的。不要使用有符号整型数据来进行FAT表所需的计算,因为这样计算得到的结果对某些FAT系统是错误的。      一般性概念(适合所有类型的FAT文件系统)       所有的FAT文件系统最早是为IBM PC架构开发的。很重要的一点是:磁盘上FAT文件系统的数据结构都是"小端的"(一种数据存储组织形式)。让我们先看看一个32位的FAT表项,它是以4个8位字节形式存储在磁盘上的-----第一个字节是byte[0],最后一个字节是byte[4]------下面显示的是一个32位的数据,从00标识,一直到31。(00位是最不重要的一位)<原文如此!"00 being the least significant bit">

    byte[3]          3  3  2  2  2  2  2  2                         1  0  9  8  7  6  5  4

    byte[2]          2  2  2  2  1  1  1  1                         3  2  1  0  9  8  7  6

    byte[1]          1  1  1  1  1  1  0  0                         5  4  3  2  1  0  9  8

    byte[0]          0  0  0  0  0  0  0  0                         7  6  5  4  3  2  1  0

    如果你使用的机器是基于"大端"的,上面的一些原则就显得很重要了。因为当你想和磁盘进行数据交换,你就必须在大端和小端之间转换。

   一个FAT文件系统是由以下四个基本区组成的,它们是:

     0 --- 保留区     1 --- FAT区     2 --- 根目录区(在FAT32系统中不存在)     3 --- 文件和目录数据区

    启动扇区和BPB(Bios Parameter Block)

    在FAT系统中,首先碰到的一个很重要的数据结构就是BPB(BIOS Paramerer Block),它被放在保留区的第一个扇区中。这个扇区也被叫做"启动扇区"、"保留扇区"或者"第0扇区",很重要的一点就是,它处在系统的第一个扇区。    关于FAT文件系统,有一点常常被混淆。在MS-DOS 1.x 版本中,启动扇区里并没有BPB结构。在FAT文件系统的第一个版本中,仅仅有两中不同的形式,一个支持单面,一个支持双面360K 5.25-inch的软盘。要判断磁盘上的文件系统的类型,必须查看FAT表的第一个字节(FAT[0]的低8位)。    上面这种媒体类型的判断方法已经被在MS-DOS 2.x中,放入一个BPB结构到启动扇区的方法取代了,并且老式的方法 (通过查看FAT表的第一个字节)已经不再被支持。所有FAT系统都有一个BPB结构放置在启动扇区。    这又会给我们带来FAT系统类型辨别的第一点困惑:BPB结构到底象什么样子呢?MS-DOS 2.x 启动扇区里的BPB结构严格限制FAT系统的大小不能大于65,536个扇区(32MB,每扇区512字节)。这个限制是由于FAT表中的"total sectors"域是一个16位域。这个限制在MS-DOS 3.x中被修正了,通过将BPB结构修改成能够包含32位域来扩大支持的扇区总数。    下一个BPB的变化发生在WINDOWS 95操作系统下,同时FAT32被引进。FAT16限制了FAT表的最大尺寸和最大可用簇的大小不能超过 2GB (假定磁盘是512字节每扇区)。FAT32修改了这个磁盘容量的限制,使得FAT系统能够存在于容量大于2GB 只分一个区的磁盘上。