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
FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)的更多相关文章
- FAT文件系统规范v1.03学习笔记---3.根目录区之FAT目录项结构
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---4.文件和目录数据区之长目录项
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---1.保留区之 Fat32 FSInfo扇区结构和备份启动扇区
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---1.保留区之启动扇区与BPB
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- amazeui学习笔记二(进阶开发1)--项目结构structure
amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...
- HDFS v1.0学习笔记
hdfs是一个用于存储大文件的分布式文件系统,是apache下的一个开源项目,使用java实现.它的设计目标是可以运行在廉价的设备上,运行在大多数的系统平台上,高可用,高容错,易于扩展. 适合场景 存 ...
- mapreduce v1.0学习笔记
它是什么? 一个用于处理大数据开源的分布式计算框架,它由java实现,原生提供java编程交互接口,其它语言通过hadoop streaming方式和mapreduce框架交互. 可以做什么? 利用框 ...
- pyecharts v1 版本 学习笔记 饼图,玫瑰图
饼图: 普通案例 from example.commons import Faker from pyecharts import options as opts from pyecharts.char ...
- pyecharts v1 版本 学习笔记 折线图,面积图
折线图 折线图 基本demo import pyecharts.options as opts from pyecharts.charts import Line c = ( Line() .add_ ...
随机推荐
- golang 热升级
需求场景 干净利落地升级正在运行的agent程序.适用于Devops团队. 目标: 不关闭现有连接:例如我们不希望关掉已部署的运行中的程序.但又想不受限制地随时升级服务. 新的进程要能够启动并替换掉旧 ...
- oracle存储过程加密
引言:平时大家在做项目的时候,经常会遇到把Oracle存储过程带到项目现场来测试系统.这时如果想对自己的存储过程进行保密,不使别人看到源代码,就可以对已有的存储过程进行加密保护.顾名思义,就是对Ora ...
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cardSalDao' defined in file [E:\GItUp\pointerCard+redis\target\gameCard-1.0-SNAPSHOT\WEB-INF\classes\cn\jbit\dao
错误信息: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cardSa ...
- MySQL数据库权限体系介绍
本文主要向大家介绍了MySQL数据库权限体系,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 一.权限体系简介: MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mys ...
- ACM-ICPC 2018 焦作赛区网络预赛 A Magic Mirror(签到)
https://nanti.jisuanke.com/t/31710 题意 若输入的是Jessie或jessie,输出Good guy!,否则输出Dare you say that again? 分析 ...
- spingBoot整合mybatis+generator+pageHelper
spingBoot整合mybatis+generator+pageHelper 环境/版本一览: 开发工具:Intellij IDEA 2018.1.4 springboot: 2.0.4.RELEA ...
- DBUtils数据库连接池
DBUtils pip install DBUtils 模式一: 为每个线程创建一个连接.(内部是通过threading.local实现的) 模式二: 创建一定个数的连接,所有线程都来连接池中获取.( ...
- Kettle系列: Kettle并行执行Trans后的合并问题
我们在作业开发中为了处理效率, 经常需要并行执行一些trans, 等它们执行完毕后, 需要执行另外一些trans, 从流程上也就是分支+汇合. 粗看起来很简单, Kettle中对接一下这些组件就搞定了 ...
- UTF8 UTF16 之间的互相转换
首先需要知道 Unicode 编码范围 [U+00, U+10FFFF], 其中 [U+00, U+FFFF] 称为基础平面(BMP), 这其中的字符最为常用. 当然, 这 65536 个字符是远远不 ...
- C++ vector和list的主要用法区别
vector可以直接通过下标访问,list不可以 1.vector ; i < userTypes.size(); i++) { str = userTypes[i].typeName; } 2 ...