zoukankan      html  css  js  c++  java
  • FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)

    1.前言

    本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记。

    每个FAT文件系统基本区域由4部分组成,这些基本区域按如下顺序排列:

     

    FAT32典型布局如下:

    上一部分主要介绍了Rerverd Region中的启动扇区与BPB,本节继续介绍Fat Region

    Fat Region包含Fat表,它位于Rerserved Region之后

    2.FAT区(Fat Data Structure)

    2.1 FAT表

    注:[1]FAT区存放FAT表(Fat Allocate Table),FAT表由FAT表项构成。FAT表是FAT表项与文件和目录数据区簇号一一对应的列表

      [2]文件系统分配磁盘空间是按簇分配,簇是操作系统分配的最小单位

          数据区被分成BPB_BytePerSec * BPB_SecPerC字节大小的很多簇进行管理

      [3]一个FAT表项用来管理一个簇,FAT表项大小与文件系统类型有关

       FAT12为12bit,FAT16为16bit,FAT32位32bit,每个FAT表项都有一个固定的编号,这个编号从0开始

      [4]对于大文件有多个簇,同一个文件可能并不会存储在磁盘上的连续区域,而是分成若干段,称为文件的链式存储

       FAT表项会记录簇是否被文件占用、指明占用簇的后继簇号、指明是否是尾簇

      [5]FAT表的0号和1号FAT表项有专门的用途

       0号FAT表项通常用来存放分区所在的介质类型;1号FAT表项用来存储文件系统的肮脏标志,表明文件系统被非法卸载或者磁盘表面存在错误

      [6]从2号FAT表项开始跟数据区中的第一个簇映射

       因为0号FAT表项和1号FAT表项有特殊用途,无法与数据区中的簇形成映射,所以 数据区中的第一个簇也就编号为2号簇,这也是没有0号簇和1号簇的原因。

       然后3号簇跟3号FAT表项映射,4号簇跟4号FAT表项映射,以此类推,直到数据区中的最后一个簇

          ---根目录区所占的扇区数计算公式:

       

       对于FAT12和FAT16 RootDirSectors=((512*32)+(BPB_BytesPerSec-1))/BPB_BytsPerSec

       对于FAT32    RootDirSectors=((0*32)+(BPB_BytesPerSec-1))/BPB_BytsPerSec=0

        --- 簇2的第一个扇区计算公式:

         

         FATSz为FAT表所占用的扇区数,BPB_RsvdSecCnt为保留区中扇区数目

    下表FAT表中每个FAT项可取的表项值及其含义:

    如下以FAT16说明FAT区的结构:

    2.2 FAT类型辨别

    TODO

  • 相关阅读:
    sql2005创建存储过程
    sql 2005 调用存储过程
    sql2005创建存储过程(需要注意的几点)
    c# 日期处理
    Worldwind WMS Server安装
    Ubuntu11.10 设置默认Terminal为Terminator
    WordPress中文标题无法显示的解决方法
    Unknown Source的出现及解决
    Windows下 ant配置 以及 Unable to locate tools.jar
    安装WordPress中文包四步曲
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/8426780.html
Copyright © 2011-2022 走看看