[OS64位][008]软盘文件系统分配图:根目录项结构、FAT
学习笔记
使用教材(配书源码以及使用方法)
《一个64位操作系统的设计与实现》
http://www.ituring.com.cn/book/2450
https://www.jianshu.com/p/28f9713a9171
参考资料
- FAT Filesystem
- FAT表的知识
软盘文件系统分配图 FAT12
软盘文件系统分配图 FAT12参考 P42 图3-5 软盘文件系统分配图
-
FAT12 是一种文件系统类型, 同一层次的概念是:
FAT12 是一种文件系统类型FAT16 、FAT32
可以根据文件的容量大小做快速的区分:
-
BPB_SecPerClus
叫做每簇扇区数,软盘的BPB_SecPerClus equ 1
,簇是FAT类文件系统读写的最小单元 -
一个文件可以很大,那么就有可能跨扇区、需要多个簇:
目录项 单个大小是32字节,含有一个文件的
起始簇号
(这就是文件的入口,分配图蓝色部分)
FAT表项,单个大小是12比特, 说明每个簇的使用情况
以及下一个簇的簇号
(这组成属于一个文件的全部数据块的链表,分配图红色部分)
什么是根目录 目录项?
- 根目录区,目录项,
Directory entry structure
- 目录项里存着:文件名(+扩展名),起始簇号;
[OS64位][006]源码阅读:代码清单3-7 目标文件搜索 Lable_Search_In_Root_Dir_Begin
Directory entry structure
https://www.jianshu.com/p/2c03cdd67d4e
什么是FAT表项 ?
-
FAT1、FAT2
叫做FAT表1,FAT表2,是FAT文件系统的一个组成部分,其中FAT表2是FAT表1的完全拷贝,是为了保证数据安全所需要的冗余 -
这里,
FAT1
占用了整个软盘其中9个扇区,扇区号1 ~ 扇区号9
,我们知道,单个扇区的大小是512字节,见分配图中的红色展开部分,这里因为展示的是FAT12格式,因此单个FAT表项仅仅使用12个比特,复习一下,1字节 = 8比特
,所以分配图中会出现比如FAT[0
]这个表项占了1.5个字节的样子,实际上,每一个FAT表项都占用1.5个字节 -
FAT表项的物理意义 :
标识某个簇,能不能用?已不已用?
已用的话,FAT[N]的值就是下一个簇的簇号;
文件与簇号 FAT表项FAT[N]取值
- FAT表项
FAT Entries
Association of File and Cluster
N = The cluster number
:N
表示簇号FAT[N]
: 当N
的取值范围在0x0002-0xFF6
时,FAT[N]
表示下一个簇的簇号假设一个文件的起始簇号DIR_FstClus值是
0x17
,这个文件需要使用三个簇来储存,那么:
第一个簇的簇号就是0x17
第二个簇的簇号是FAT[0x17]
第三个簇的簇号是FAT[FAT[0x17]]