免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 822 | 回复: 0
打印 上一主题 下一主题

fat文件系统学习笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-11 12:11 |只看该作者 |倒序浏览

对于计算机的硬盘,因为要引导系统,所以还有BOOT区,分区表等等,这些东西在单片机上都用不着,硬盘对空间管理的核心就是文件分配表(FAT),为了存储不同的文件和目录结构还有一个表也十分重要,就是文件目录表(FDT)。这两个表一般都保存在硬盘每个分区的开头几个扇区之中我们的flash文件系统自然也会有这样两张表存放在flash前面的几个扇区。

           FAT是什么:
我的理解:
FAT就是文件使用登记链表,如果用16位的整数来表示一个簇号(称为FAT16),这样最多能容纳65535个簇(簇的大小是扇区的整数倍)。如果把fat表看成一个元素个数对应硬盘簇数的数组,那么数组元素在数组中的位置就是他代表的簇在硬盘上的位置。

 在FAT文件系统中,把硬盘把整个空间划分为很多的逻辑块,每块包含若干扇区,这样
的块叫做簇,簇的大小是由硬盘在分区的时候决定的。这样整个硬盘就有好多好多的簇,每个簇对应有一个簇号,假如簇号用一个16位的整数来表示的话(就是FAT16),就一共能表示65536个簇。簇是文件存储的最小单位。对于一个80GB的硬盘来讲,如果用
FAT16文件系统来管理硬盘,由于FAT16最大只能表示65536簇,所以每簇的空间将为
(80*1024*1024)/65536=1280Kbyte。 FAT表在这里就像个大的数组,硬盘上有多少个簇,这个数组的元素就有多少个。数组元素在数组中的位置就是他代表的簇在硬盘
上的位置。
 计算机把文件占用的簇的簇号放到FAT中,所以这个表就叫做文件分配表。一开始FAT表是空的数据全部都是0x0000或者0xffff。

  FAT对空间的管理:
我的理解:
一个文件在硬盘的存储是先在fat表中找空闲的簇,找到后写满空闲簇,然后再找空闲的簇,并把此空闲的簇号写在fat表上刚才写满的簇的对应的位置上,作为文件链接(为文件的读取提供索引依据),依次类推,到最后以0xfff8在FAT表中的对应位置表示文件结尾所在簇。记录文件的起始簇,就是文件名和扩展名来标记的了,其他的属性根据情况需要而定。可以定义一个结构文件目录表FDT(FDT_REC)用来详细描述文件的属性。

 

           FAT表管理空间的原理
计算机在写文件的时候如何对FAT表操作。计算机要向文件写数据,先要到FAT表中找到一个空闲的簇,并往里面写数据,写满后,再到FAT表中寻找下一个空闲的簇,找到之后先把簇号填到刚才写满的那个簇在FAT表中的对应位置,然后继续写,写满之后再找一个空闲簇,然后再把这次找到的簇的簇号填到我们刚刚写完的那个簇在FAT表中的
对应位置,这样下去直到写完,然后我们把最末尾的簇在FAT表中的对应位置标为0xfff8表示结束。
    而在读文件的时候,只要我们找到了文件的第一簇的簇号,然后就可以在FAT表中的对应位置找到下一簇的簇号,这样一直下去直到遇到0xfff8。这就好像是一条簇链,一条单向的簇链表,找到了头,就能顺序找到尾。这就是FAT表管理空间的原理.


文件的创建和删除
 计算机要创建一个文件,就要先根据文件的名字,当前时间信息,构造一条FDT_REC记录,然后把这条FDT_REC记录插入到FDT表中去,一开始文件大小为0,起始簇为空(0xfff8),这样就创建了一个空文件,
    删除文件的过程。删除文件时并不是把文件占用的所有簇都清空,而是先把文件在FDT表中的记录项(FDT_REC)的第一个字节置为0x5e表示这条项目已经被删除。然后在FAT表中释放该文件占用的簇。

对于计算机的硬盘,因为要引导系统,所以还有BOOT区,分区表等等,这些东西在单片机上都用不着,硬盘对空间管理的核心就是文件分配表(FAT),为了存储不同的文件和目录结构还有一个表也十分重要,就是文件目录表(FDT)。这两个表一般都保存在硬盘每个分区的开头几个扇区之中我们的flash文件系统自然也会有这样两张表存放在flash前面的几个扇区。

           FAT是什么:
我的理解:
FAT就是文件使用登记链表,如果用16位的整数来表示一个簇号(称为FAT16),这样最多能容纳65535个簇(簇的大小是扇区的整数倍)。如果把fat表看成一个元素个数对应硬盘簇数的数组,那么数组元素在数组中的位置就是他代表的簇在硬盘上的位置。

 在FAT文件系统中,把硬盘把整个空间划分为很多的逻辑块,每块包含若干扇区,这样
的块叫做簇,簇的大小是由硬盘在分区的时候决定的。这样整个硬盘就有好多好多的簇,每个簇对应有一个簇号,假如簇号用一个16位的整数来表示的话(就是FAT16),就一共能表示65536个簇。簇是文件存储的最小单位。对于一个80GB的硬盘来讲,如果用
FAT16文件系统来管理硬盘,由于FAT16最大只能表示65536簇,所以每簇的空间将为
(80*1024*1024)/65536=1280Kbyte。 FAT表在这里就像个大的数组,硬盘上有多少个簇,这个数组的元素就有多少个。数组元素在数组中的位置就是他代表的簇在硬盘
上的位置。
 计算机把文件占用的簇的簇号放到FAT中,所以这个表就叫做文件分配表。一开始FAT表是空的数据全部都是0x0000或者0xffff。

  FAT对空间的管理:
我的理解:
一个文件在硬盘的存储是先在fat表中找空闲的簇,找到后写满空闲簇,然后再找空闲的簇,并把此空闲的簇号写在fat表上刚才写满的簇的对应的位置上,作为文件链接(为文件的读取提供索引依据),依次类推,到最后以0xfff8在FAT表中的对应位置表示文件结尾所在簇。记录文件的起始簇,就是文件名和扩展名来标记的了,其他的属性根据情况需要而定。可以定义一个结构文件目录表FDT(FDT_REC)用来详细描述文件的属性。

 

           FAT表管理空间的原理
计算机在写文件的时候如何对FAT表操作。计算机要向文件写数据,先要到FAT表中找到一个空闲的簇,并往里面写数据,写满后,再到FAT表中寻找下一个空闲的簇,找到之后先把簇号填到刚才写满的那个簇在FAT表中的对应位置,然后继续写,写满之后再找一个空闲簇,然后再把这次找到的簇的簇号填到我们刚刚写完的那个簇在FAT表中的
对应位置,这样下去直到写完,然后我们把最末尾的簇在FAT表中的对应位置标为0xfff8表示结束。
    而在读文件的时候,只要我们找到了文件的第一簇的簇号,然后就可以在FAT表中的对应位置找到下一簇的簇号,这样一直下去直到遇到0xfff8。这就好像是一条簇链,一条单向的簇链表,找到了头,就能顺序找到尾。这就是FAT表管理空间的原理.


文件的创建和删除
 计算机要创建一个文件,就要先根据文件的名字,当前时间信息,构造一条FDT_REC记录,然后把这条FDT_REC记录插入到FDT表中去,一开始文件大小为0,起始簇为空(0xfff8),这样就创建了一个空文件,
    删除文件的过程。删除文件时并不是把文件占用的所有簇都清空,而是先把文件在FDT表中的记录项(FDT_REC)的第一个字节置为0x5e表示这条项目已经被删除。然后在FAT表中释放该文件占用的簇。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP