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

FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)的更多相关文章

  1. FAT文件系统规范v1.03学习笔记---3.根目录区之FAT目录项结构

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  2. FAT文件系统规范v1.03学习笔记---4.文件和目录数据区之长目录项

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  3. FAT文件系统规范v1.03学习笔记---1.保留区之 Fat32 FSInfo扇区结构和备份启动扇区

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  4. FAT文件系统规范v1.03学习笔记---1.保留区之启动扇区与BPB

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  5. amazeui学习笔记二(进阶开发1)--项目结构structure

    amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...

  6. HDFS v1.0学习笔记

    hdfs是一个用于存储大文件的分布式文件系统,是apache下的一个开源项目,使用java实现.它的设计目标是可以运行在廉价的设备上,运行在大多数的系统平台上,高可用,高容错,易于扩展. 适合场景 存 ...

  7. mapreduce v1.0学习笔记

    它是什么? 一个用于处理大数据开源的分布式计算框架,它由java实现,原生提供java编程交互接口,其它语言通过hadoop streaming方式和mapreduce框架交互. 可以做什么? 利用框 ...

  8. pyecharts v1 版本 学习笔记 饼图,玫瑰图

    饼图: 普通案例 from example.commons import Faker from pyecharts import options as opts from pyecharts.char ...

  9. pyecharts v1 版本 学习笔记 折线图,面积图

    折线图 折线图 基本demo import pyecharts.options as opts from pyecharts.charts import Line c = ( Line() .add_ ...

随机推荐

  1. bzoj1875 边点互换+矩乘

    https://www.lydsy.com/JudgeOnline/problem.php?id=1875 题意 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走 ...

  2. python改文件名

    import os file_names = os.listdir('D:\\mobilefile\\_hd') for file_name in file_names : print(file_na ...

  3. Java从resources文件夹读取配置文件

    列举了2种方式,第一种是绝对路径,就是写死路径,不推荐 第二种是相对路径,使用到了ClassLoader package com.StadyJava.day22; import java.io.Fil ...

  4. Hadoop记录-Hadoop jmx

    https://cwiki.apache.org/confluence/display/EAG/Hadoop+JMX+Monitoring+and+Alerting curl http://10.11 ...

  5. final 关键字:用来修饰类,方法,成员变量,局部变量

    final 关键字:用来修饰类,方法,成员变量,局部变量 表示最终的不可变的 1.final修饰一个类 表示当前的类不能有子类,也就是不能将一个类作为父类 格式: public final class ...

  6. Http状态码解释

    参考:urllib与urllib2的学习总结(python2.7.X) # Table mapping response codes to messages; entries have the # f ...

  7. C#利用Guid实现真随机数

    C#中的随机数可以利用Random类很简单地生成随机数,代码如下: Random rdmNum=new Random();//生成随机数对象 int ans=rdmNum.Next(a,b);//生成 ...

  8. 二十三、Linux 进程与信号---进程链和进程扇、守护进程和孤儿进程以及僵尸进程

    23.1 进程链和进程扇 23.1.1 概念 进程链:一个父进程构建出一个子进程,子进程再构建出子子进程,子子进程构建出子子子进程.... 这种就为进程链 进程扇:一个父进程构建出多个子进程,子进程都 ...

  9. 使用js代码将HTML Table导出为Excel

    使用js代码将HTML Table导出为Excel的方法: 直接上源码 <html> <head> <meta http-equiv="Content-Type ...

  10. 本地测试使用Tomcat,生产环境使用GlassFish。

    总结:Tomcat8 = javaee7规范(servlet3.1 + jsp2.3 + el3.0 + websocket1.0) + java7 [配置初始化参数使用jdk8编译]conf/web ...