文件系统之FAT

  文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/FAT32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。 

为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。

 

主引导扇区

      一个完整硬盘的数据应该包括五部分:MBR,DBR,FAT,DIR区和DATA区。其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加。 

主引导扇区位于整个硬盘的0磁头0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。

 

MBR,全称为Master Boot Record,即硬盘主引导记录
引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magicnumber,占2个字节,固定为55AA。

 

DBR(DOS BOOT RECORD,DOS引导记录),位于柱面0,磁头1,扇区1,即逻辑扇区0。DBR分为两部分:DOS引导程序和BPB(BIOS参数块)。其中DOS引导程序完成DOS系统文件(IO.SYS,MSDOS.SYS)的定位与装载,而BPB用来描述本DOS分区的磁盘信息,BPB位于DBR偏移0BH处,共13字节。 它包含逻辑格式化时使用的参数,可供DOS计算磁盘上的文件分配表,目录区和数据区的起始地址,BPB之后三个字提供物理格式化(低格)时采用的一些参数。引导程序或设备驱动程序根据这些信息将磁盘逻辑地址(DOS扇区号)转换成物理地址(绝对扇区号)。BPB格式 

 

BPB(BIOS Parameter Block) BIOS参数块
FAT16的BPB(BIOS Parameter Block)表,描述逻辑盘结构组成,包含隐藏扇区数目(从0-1-1开始计算)、FAT扇区数、FAT拷贝数、硬盘磁头总数、根目录表项最大值等。FAT32系统中,BPB表的偏移与FAT16不同,但表项基本相同。整个隐藏扇区部分都作为逻辑盘的描述区域。

 

FAT文件配置表(英文:File Allocation Table,首字母缩略字:FAT)是一种由微软发明的并带有部分专利[1]的文件系统,供MS-DOS使用,也是非NT内核的微软窗口使用的文件系统。

FAT文件系统考虑当时计算机效能有限,所以未被复杂化,因而被几乎所有个人计算机的操作系统支持。这特性使它成为理想的软盘和记忆卡文件系统,也适合用作不同操作系统中的数据交流。

但FAT有一个严重的缺点:当文件被删除并且在同一位置被写入新数据,他们的片段通常是分散的,减慢了读写速度。磁盘碎片重整是一种解决方法,但必须经常重组来保持FAT文件系统的效率。

 

FAT12:初期的FAT就是现在俗称的FAT12。作为软盘的文件系统,它有几项限制:不支持分层性结构,丛集寻址只有12位(这使得控制FAT有些棘手)而且只支持最多32M(216)的分区。

当时入门级的磁盘是5.25"、单面、40磁道、每个磁道8个扇区、容量略少于160KB。上面的限制超过了这个容量一个或几个数量级,同时允许将所有的控制结构放在第一个磁道,这样在读写操作时移动磁头。这些限制在随后的几年时间里被逐步增大。

由于唯一的根目录也必须放在第一个磁道,能够存放的文件个数就限制在了几十个。

 

FAT16在1984年,IBM发布PC AT,这是一个20 MB的硬盘。微软公司也同步发布了MS-DOS 3.0。簇集地址增加至16位,允许更大数量的簇(最大 65,517),所以有更大的文件系统大小。但是,最大数量磁区及最大分割区(相当于磁盘)的大小仍是32 MB。所以,尽管技术上已经是“FAT16”,这种格式并不是我们今天常见到的这个名字所代表的格式。在MS-DOS 3.0格式化一个20 MB的硬盘,这硬盘将不能被MS-DOS 2.0或之前的版本所存取。当然,MS-DOS 3.0 仍然可存取MS-DOS 2.0的格式(8 KB簇的分割区)。

MS-DOS 3.0也开始支持高密度1.2MB 5.25"磁盘,最著名的是每个磁道有15个扇区,这样就允许FAT有更大的空间。这或许促进了一个对于簇大小的不确定的优化,簇大小从2个扇区减到1个。这样做的最后结果是高密度磁盘比旧的双密度磁盘的速度大幅度降低。

 

FAT32:为了解决FAT16对于卷大小的限制同时让DOS的真实模式在非必要情况下不减少可用常规内存状况下处理这种格式,微软公司决定实施新一代的FAT,它被称为FAT32,带有32位的簇数,目前用了其中的28位。

理论上,这将支持总数达268,435,438(<228)的簇,允许磁盘容量达到2字节。然而,由于微软公司scandisk工具的限制,FAT不能大于4,177,920(<222)个簇,这将卷的容量限制在了124.55GB,除非不再使用“scandisk”。[2]

FAT32随着视窗95 OSR2发布,尽管需要重新格式化才能使用这种格式并且DriverSpace 3(视窗95 OSR2和视窗98所带版本)从来都不支持这种格式。视窗98提供了一个工具用来在不丢失数据的情况下将现有的硬盘从FAT16转到FAT32格式。在NT产品线上对于它的支持从视窗2000开始。

视窗2000和视窗XP能够读写任何大小的FAT32文件系统,但是这些平台上的格式化程序只能创建最大32GB的FAT32文件系统。Thompson and Thompson (2003)写道“奇怪的是微软公司说这种现象是故意设计的”[3] 微软公司知识库文章 184006[4]的确是这么说的,但是没有提出任何关于这个限制的合理解释。Peter Norton的观点是“微软公司在有意地削弱FAT32文件系统”[5]。

 

 

FAT表和数据的存储原则:

FAT 表(File Allocation Table 文件分配表),是Microsoft 在FAT 文件

系统中用于磁盘数据(文件)索引和定位引进的一种链式结构。假如把磁盘比作

一本书,FAT 表可以认为相当于书中的目录,而文件就是各个章节的内容。但

FAT 表的表示方法却与目录有很大的不同。

在FAT 文件系统中,文件的存储依照FAT 表制定的簇链式数据结构来进

行。同时,FAT 文件系统将组织数据时使用的目录也抽象为文件,以简化对数

据的管理。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值