当前位置:  技术问答>linux和unix

fat文件系统的问题?

    来源: 互联网  发布时间:2015-02-19

    本文导语:  请问哪位大侠有fat文件系统(包括fat32和fat16)的详细资料,主要 是引导扇区参数(不需要引导程序代码说明)说明,fat表和fdt详细结 构,以及fat文件系统检索机制在fat16和fat32下的区别。 有详细资料者或者这方面的...

请问哪位大侠有fat文件系统(包括fat32和fat16)的详细资料,主要
是引导扇区参数(不需要引导程序代码说明)说明,fat表和fdt详细结
构,以及fat文件系统检索机制在fat16和fat32下的区别。
有详细资料者或者这方面的高手可以给我发邮件。
非常感谢。祝每位看过这个帖子的朋友永远快乐!

|
这是本人的收藏。
三点声明:1、本人对fat一窍不通,但喜欢收藏。
          2、只有fat32
          3、我也不想贴子这样长,但你没有留邮箱。


FAT32文件系统磁盘I/O参数揭密

作者: 邓波

Windows 98操作系统引入了FAT32文件系统,它彻底解决了FAT16文件系统存在的诸多问题。所谓FAT32文件系统实际上就是用32位数据来描述磁盘簇的分配,而传统的磁盘管理是用16个二进制位(2个字节)来描述一个簇。从操作系统的结构上进行分析,可以知道FAT32文件系统并非仅仅简单地将FAT表转换成32位(即用4个字节来描述一个簇),而是带来了磁盘I/O参数、分区和FDT表及文件系统其它方面的变化。为了彻底了解FAT32文件系统对磁盘I/O参数的修改,本文对FAT32文件系统的结构进行了深入分析,揭示了FAT32文件系统存储和管理文件的算法。读懂FAT32文件系统的磁盘I/O参数,不但可以掌握直接访问磁盘文件的方法,而且可以在更高层次上发挥操作系统的功能。 

FAT32文件系统对主引导扇区的改变 
主引导扇区是硬盘独有的一个磁盘控制数据存储区域,其首要功能是存储有关硬盘分区的数据,它通常位于硬盘的0磁头0柱面1扇区。由于主引导扇区存放硬盘分区的有关数据,因此又称为分区扇区。分区数据对硬盘是至关重要的,分区数据的丢失或破坏将导致硬盘上的逻辑磁盘不能被系统识别,当然也就无法访问磁盘上存储的文件和数据。 

根据对FAT32文件系统主引导扇区的分析可知,FAT32文件系统的主引导扇区在保持与FAT16文件系统主引导扇区兼容的基础上,针对FAT32文件系统的特点作了适当扩展。 
FAT32文件系统主引导扇区对分区表数据结构的扩展仅限于增加了3个标识32位分区的类型标志,这3个增加的分区类型标志分别为0BH、0CH和0EH,用于描述FAT32文件系统的三种分区情况。对于扩展分区,则增加了一个类型标志0FH,表示Windows 98操作系统扩展分区。类型标志为0BH表示分区是FAT32分区,最大分区容量可以达到2047GB;为0CH表示的意义与0BH相同,但是对于INT 13H指令使用扩展的逻辑块地址(LBA)方式;为0EH表示的意义与06H相同,但是对于INT 13H指令使用扩展的逻辑块地址(LBA)方式;为0FH表示的意义与05H相同(扩展分区),但是同样对于INT 13H指令使用扩展的逻辑块地址方式。使用扩展的逻辑块地址方式是为了支持容量超过8GB的大容量硬盘。 

由于文件系统转化为FAT32后,分区的类型标志变化为0BH、0CH和0EH,这些新的类型标志是原来FAT16文件系统所不能识别的,所以当用户使用MS-DOS操作系统的软盘启动系统后,机器不能识别硬盘的分区数据,当然也不能对硬盘的数据进行访问。 

FAT32文件系统的分区引导扇区 
在Windows 98操作系统中,当文件系统从FAT16转化为FAT32后,分区引导扇区的功能和作用并没有改变,但是考虑到FAT32文件系统的特性和为了解决FAT16文件系统存在的问题,操作系统对FAT32文件系统的分区引导扇区进行了扩展。 

1.分区引导扇区所占的扇区数从1个扇区扩展为6个扇区 
分区引导扇区的核心功能是通过磁盘读写参数加载启动操作系统的文件,为了使加载文件的操作更加灵活,加上FAT32文件系统采用"活动"的FDT表,需要对分区引导扇区的引导程序代码进行重新的设计,同时考虑到引导程序的代码量和为今后发展保留适当的余量,FAT32文件系统将分区引导扇区所占的扇区数从1个扇区扩展为6个扇区,Windows 98使用前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。 

2.采用双重分区引导扇区 
根据对分区引导扇区功能和作用的研究,我们知道分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用。引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。 

由于分区引导扇区的重要性,FAT32文件系统借鉴了操作系统处理FAT表的经验,在磁盘上保留了两份分区引导扇区,并且在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。 

FAT32文件系统对磁盘I/O参数的扩展 
FAT32文件系统的磁盘读写参数在部分保持与FAT16文件系统磁盘读写参数兼容的基础上,为了适应FAT32文件系统的需要,对磁盘读写参数作了适当扩展,所使用的字节数也从FAT16文件系统的58个字节扩展为87个字节,FAT32文件系统的磁盘读写参数占用扇区偏移地址03H至59H的空间,各参数的具体意义如表1所示。 

另外,分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区,除了保存扇区的标识信息(RraA和rrAa)外,还在偏移地址1E8H处存储了文件系统有关的信息。其中扇区偏移地址1E8H~1EBH的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的"可用磁盘空间"参数),而1ECH~1EFH 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问FAT表就直接获得磁盘剩余空间和可以分配的簇号。 

分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码。 

表1 FAT32文件系统磁盘读写参数表 


编 号 起始偏移地址 占字节数 意 义 
1 03H 8 操作系统的版本号。 
2 0BH 2 每个扇区的字节数。 
3 0DH 1 每簇扇区数。 
4 0EH 2 为操作系统保留的扇区数。 
5 10H 1 FAT表的个数。 
6 11H 2 在FAT16中存放系统根目录中允许登记的目录项个数,FAT32中用于标注系统采用的是否为FAT32文件系统。其值为0000H表示磁盘使用FAT32文件系统。 
7 13H 2 值为00H,为保持兼容性而保留,未使用。 
8 15H 1 磁盘介质标志,硬盘为F8。 
9 16 2 未使用,值为00H。 
10 18H 2 每个磁道的扇区数。 
11 1AH 2 磁盘的磁头个。 
12 1CH 4 分区前隐藏扇区的个数。 
13 20H 4 逻辑磁盘中的扇区总数。 
14 24H 4 每个FAT表所占的扇区数。 
15 28H 2 FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1份FAT表。 
16 2AH 2 文件系统的主次版本(保留)。 
17 2CH 4 磁盘根目录的起始簇号。 
18 30H 2 文件系统参数的扇区号,通常位于引导扇区的下一个扇区。 
19 32H 2 备份分区引导扇区的逻辑扇区号。 
20 34H 12 保留,未使用。 
21 40H 2 磁盘的物理驱动器号。 
22 42H 1 磁盘读写参数扩展标志,其值为29H。 
23 43H 4 磁盘卷的序列号。 
24 47H 11 磁盘卷标号。 
25 52H 8 文件系统的标识号(FAT32)。 

FAT32文件系统磁盘I/O参数实例 
图1列出了一个FAT32文件系统的磁盘读写参数实例,结合表1列出的I/O参数意义可以知道:该逻辑磁盘总共有2076417(1FAF01H)个扇区,为操作系统保留了51(33H)个扇区,每簇由8个扇区构成,每个磁道有63(003FH)个扇区,系统有两个互为镜像的FAT表,每个FAT表占用2028(07ECH)个扇区,FDT表的起始簇号为第2个簇(00000002H),备份的分区引导扇区存储在第6个逻辑扇区开始的存储空间,磁盘文件系统的标识号为FAT32。

 

    
 
 

您可能感兴趣的文章:

  • FAT文件系统读写类库 fat32-lib
  • Ubuntu下如何创建FAT32文件系统的硬盘镜像
  • 关于FAT32文件系统的接口和库函数
  • 怎么改fat32文件系统的dbr(引导记录区)
  • 谁有办法把一个原来是fat32的文件系统,被格式成为sco unix文件系统还原回来?
  • 请问如何mount Fat32文件系统?
  • 如何让linux系统启动时自动加载fat文件系统,并且能够识别中文目录名或文件名.
  • 请问:在Linux下怎么查看fat32或ntfs文件分区下的文件.
  • 刚装上linux,我怎样才能看到windows(FAT32)下的文件?
  • 如何在red hat linux下访问FAT32分区中的文件?
  • linux中fat32和ext2,ext3文件大小限制分别是多少?
  • FAT文件系统扩展 exFAT
  • 如何访问NTFS和FAT32中的文件?命令行中如何重复上次的输入?
  • 挂接的Fat32文件系统文件名为乱码
  • 在FAT32硬盘上快速创建大容量文件?
  • red hat linux 7.2 下怎样方问 win32 fat32文件系统?用什么软件?
  • 大家进来谈谈fsck的工作原理,比如说扫描fat32的文件系统?来者有分
  • RH7.3挂上FAT32的分区以后,为什么有的文件显示不出来??
  • 请问我装过Linux,文件系统已被格成ext3,我要再恢复为Windows的FAT32,该如何做?
  • windows mobile fat32文件系统 mount 到linux上
  • 菜菜菜问题我想安装WIN2000和LINUX,我若先安装LINUX很有什么影响?30G硬盘,8G FAT32,15G EXT2,7G fAT32
  • 在sco unix中mount一个fat32的分区的问题……
  • 菜问题:怎样在linux下访问fat分区?
  • FAT分区显示中文的问题.
  • 菜鸟级问题。LINUX7.0中可以访问FAT16硬盘的分区吗?
  • Linux与Windows2000 共享FAT32硬盘问题??
  • 菜鸟问题:我想装WIN和LINUX双系统,听说LINUX不支持FAT32格式????
  • 很菜的问题!如何才能在redhat7.2下看到fat32的分区内容(即window中的内容)??
  • fat32格式镜像文件制作问题,实在不想再花时间搜资料了,有没有兄弟碰到过
  • 挂载fat32分区的问题
  • 已有xp(fat32),2000(ntfs),想空出最后一个区来装redhat9.0,请问关于引导问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • fstab中加了自动挂载fat分区的信息系统不能启动
  • 高手请教:在Linux下怎样访问Win2000下的FAT32系统?
  • 关于文件系统(jffs2/yaffs/FAT16)
  • 请问文件系统为FAT的u盘怎么样mount到linux(redhat9.0)上?
  • 大家实际测的FAT16文件系统写Nand Flash速率一般为多大?
  • 请问如何在系统启动后自动mount 上 fat32的分区 和usb设备
  • 为什么mount了的Fat32系统上的中文mp3不查看和播放?
  • SOS!!pqmagic装不上,这时怎样将linux分区格式转化为fat32格式?“系统引导主目录MBR”出错!
  • 我有一个FAT32分区的2.4G(逻辑),怎么在安装redhat7.1时将它分区,并redhat7.1安装在这个分区上,与我的windows ME并存为双系统!!!!!!请指教,谢谢!!!
  • sco unix(5.0.5) 怎样挂上fat32文件系统啊(同一块硬盘)
  • 终于把FAT32的硬盘挂载成功了,可NTFS的又不大会,我的系统是RED HAT 12。0的LINUX版本
  • 我的硬盘遭受病毒攻击!有重要文件!各位老大帮忙看看!对硬盘分区表、系统引导区,FAT32 表熟悉的朋友请看看!
  • 能否将linux安到fat或fat32中
  • 有没有在fat/fat32上安装linux的可能
  • linux iis7站长之家
  • 如何挂接FAT32硬盘?
  • 在linux下任何挂接fat的盘?
  • mount不支持fat32,ntfs格式?
  • 为什么我的内核不支持fat?
  • 关于FAT32的选择性初始化备份
  • 在Linux下如何存取NTFS和FAT32分区的数据?
  • 请问怎样在linux下将同一块硬盘上的fat分区mount上阿?
  • fat分区与mtd看看我的理解对不对
  • ext2和fat32都有哪些区别
  • 请问如何在LINUX下挂入NTFS和FAT32的分区?
  • 为什么nand上的fat分区总是出错呢
  • 看不到win2000格的Fat32分区
  • linux分区转换fat32失败?
  • 急,Linux能在FAT32下安装吗?
  • Linux下怎么挂载windows下的FAT32分区!!高手指教
  • 安装fedoar16的时候找不到FAT32分区


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3