FAT

1. 磁盘的逻辑结构:

   1)  盘片(platter)   一个盘片两个面, 一个面一个磁头, N个盘片2N个面, 2N个磁头(heads).

   2)  柱面(Cylinders)   每个盘片被划分为若干个同心圆磁道(物理上不可见), 从外至里编号012......

   3)  扇区(Sector)     通常的容量为512byte, 并按照一定规则编号123......    总共扇区有heads*Cylinders*Sector

 

2. FAT16存储原理:

  

主引导扇区

系统引导扇区

FAT1

FAT2(备份)

根目录

其他文件及所有文件

剩余扇区

1扇区

1扇区

实际情况

取大小

FAT1

32

扇区

开始簇编号(2开始)

不足一簇

    

 

   1)主引导纪录 MBR (marst boot record)   位于0柱面0磁头1扇区, 512byte, 包括启动代码和分区表, 其中master boot code446byte, DPT(Disk Partition Table)64byte,  最后两个字节(55 AA==101010110101010)是分区有效结束标志

   磁盘分区表支持我们将磁盘逻辑的划分为几块(C, D, E, F).

   16byte纪录一个分区的属性.

  

   扩展分区:

   扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导纪录(Extended Boot Record, EBR)

   扩展引导纪录包括一个扩展分区表和该扇区的标签.

 

   2)系统引导扇区(DBR)  用于指示文件分配表的位置、大小、个数和根目录位置、大小、项数.

   

   

主引导纪录

1分区表项

2分区表项

3分区表项

4分区表项

0x55AA

引导扇区

 

数据

 

引导扇区

 

 数据

 

引导扇区

 

数据

 

扩展分区表

0x55AA

引导扇区

 

数据

 

扩展分区表

0x55AA

引导扇区

 

数据

 

 

  3)文件分配表(FAT File Allocation Table)

  有两份, 第二份作为备份, 是分区信息的映射表, 指示簇是如何存储的.

  FAT1616(2个字节)为单位, 暂称之为FAT纪录项, 通常情况下第12个纪录项(4个字节)用作介质描述. 3个纪录项开始记录除根目录外的其他文件和文件夹的簇链情况.

FAT16纪录项的取值

对应簇的表现情况

0000

未分配的簇

0002~FFEF

已分配的簇

FFF0~FFF6

系统保留

FFF7

坏簇

FFF8~FFFF

文件结束簇

 

 

  (cluster): 微软操作系统中磁盘文件管理的最小单位, 本意是"一群", "一组", 即一组扇区, 扇区的单位实在太小(512byte), 故把它们捆绑起来组成一个更大更方便进行灵活管理的簇. 通常可以是248163264个扇区.

  一个文件至少需要一个簇且一个簇中最多容纳一个文件, 即使该文件大小为0

 

 eg.

 磁盘存储状态:

 

文件分配表

目录

A.TXT

D.TXT

C.TXT

D.TXT

0

1

2~11

12~65

66~86

87~93

94~99

文件分配表:

 

 

簇号

1

2

3

...

11

12

13

...

65

66

67

...

86

87

88

...

93

94

...

99

对应数据

目录

3

4

...

FF

13

14

...

87

67

68

...

FF

88

89

...

FF

00

...

00

目录:

A.TXT

2

10

2004.3.22 10:41

2004.3.22  10:41

只读

 

 

 

 

 

 

 

 

C.TXT

66

20.5

2000.3.8  21:11

2005.3.6  9:11

系统

      

D.TXT

12

60.3

1999.5.1  8:00

2003.3.20  14:00

存档 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(该目录非FAT系统, 仅作为例子参考)

 

FAT(16)的精髓思想即允许文件的不连续性, File Allocation Table来确定各文件所占有的簇, 即从第5个字节(2*16位作为介质描述), 2个字节为单位作为纪录项记录文件的分配. 可参考上图和原理.

 

FAT16的目录项32byte----定义如下:

 

11   FAT16目录项32个字节的表示定义

字节偏移(16进制)

字节数

定义

0x0~0x7

8

文件名

0x8~0xA

3

扩展名

0xB

1

属性字节

00000000(读写)

00000001(只读)

00000010(隐藏)

00000100(系统)

00001000(卷标)

  00010000(子目录)

00100000(归档)

0xC~0x15

10

系统保留

0x16~0x17

2

文件的最近修改时间

0x18~0x19

2

文件的最近修改日期

0x1A~0x1B

2

表示文件的首簇号

0x1C~0x1F

4

表示文件的长度

 

 

FAT12FAT16FAT32的区别在于: 纪录簇链的二进制位数各为12, 16位和32.

32位二进制簇链决定了FAT最大可以寻址2T(2^32)个簇. 故即使簇的大小为1扇区理论上依然能寻址1TB范围内的分区.

 

 

          2011-04-13        15:54:10

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值