www.138139.cn

返回总目录 上一页 目录页 下一页

取整+1


  文件在最后一个簇存放的时候不可能刚好放满,没有放满的空间就浪费了(就好象我们打电话不可能每个电话都打到X分59.99秒,即使你通话时间为X分1秒你也要付出X+1分的电话费),我们可以来计算一下你的FAT系统磁盘空间浪费的大小:
浪费的空间大小=文件个数/2*每簇字节数(平均每个文件浪费半个簇的空间)
这样看来好象簇越小浪费的空间也越小,但是有个矛盾的地方是簇越小FAT所用的空间就会越大,同时簇小了,簇链就越长,访问文件的时间就会加长,这又是一种资源上的浪费,因此,簇的大小应该是以提高文件的访问时间和充分利用磁盘空间为原则的。

(三)目录项的结构
在第2个FAT表(系统一般有两个同样的FAT表)后我们可以找到该分区的根目录区,在上面有许多目录项(注意:目录项并非根目录才有),让我们先来复习一下FAT16的目录项各个字节的含义:
由32个字节构成:
00H~07H 文件的文件名,其中00H为以下值时有些特定含义:
00H 表项为空表项
E5H 文件已被删除
05H 实际该字节为的值为E5H
08H~0AH 文件的扩展名
0BH 文件属性 8位文件属性字节含义如下:
B7~B6 未用
B5 归档位
B4 子目录(代表该文件是一个目录或叫文件夹)
B3 卷标(卷标也解释为一种特殊的文件)
B2 系统文件
B1 隐藏文件
B0 只读文件
0CH~15H FAT16系统保留未用
16H~17H 系统最后修改时间,其中:
16H字节的0~4位是以2秒为增量的秒
16H字节的5~7位和17H字节的0~2位是分钟
17H字节的3~7位是小时
18H~19H 文件最后修改的日期,其中:
18H字节0~4位是天号
18H字节5~7位和19H字节0位是月份
19H字节的1~7位为年号,0~119分别代表1980~2099
1AH~1BH 文件的起始簇号(我们在之前已经介绍了)
1CH~1FH 文件的长度(单位为字节)
我们知道用在FAT16系统下的文件名有一些弊端,如:文件名最多只能有8个字符(或4个汉字),扩展名最多有3个字符,不分大小写,不能用一些特殊字符等。在FAT32系统这些问题已经得到解决,我们来看看FAT32系统是如何解决长文件名问题的。假如在你的电脑中有一个文件名为abcdefghijklmnopqrstuvwxyz111111.txt的文件名,那么该文件在磁盘目录中就占用了4个已32字节为单位的目录项,其中有3个目录项是用来描述长文件名的,有1个目录项是用来兼容老的FAT系统的,我们来看看例子中前3个用于描述长文件名的目录项:

43H 31H 00H 31H 00H 31H 00H 31H 00H 31H 00H 0FH 00H 27H 31H 00H
2EH 00H 74H 00H 78H 00H 74H 00H 00H 00H 00H 00H FFH FFH FFH FFH

02H 6EH 00H 6FH 00H 70H 00H 71H 00H 72H 00H 0FH 00H 27H 73H 00H
74H 00H 75H 00H 76H 00H 77H 00H 78H 00H 00H 00H 79H 00H 7AH 00H

01H 61H 00H 62H 00H 63H 00H 64H 00H 65H 00H 0FH 00H 27H 66H 00H
67H 00H 68H 00H 69H 00H 6AH 00H 6BH 00H 00H 00H 6CH 00H 6DH 00H

不难看出描述长文件名的目录项中的一些规则:
在每个目录项的32个字节中,(1)、偏移0H处:代表了长文件描述目录项的序号,其中高4位如果为0100则表示此项为最后一个目录项,低4位表示此长文件名的目录项的序号。如果此长文件名描述目录只用到了1个目录项,则此值为41H,如果此值为E5H代表此文件已被删除;(2)、偏移0BH~0CH处:其值总为0FH 00H;(3)、偏移0D处:该长文件目录项的标号,同一个长文件目录的不同目录项该值总相同(比如本例中3个目录项该值都为27H);(4)、偏移1AH~1BH处:该值总为00H 00H;(5)从偏移01H~1FH跳过前4项提到的字节,总是一个文件名的ASCII码接一个00H排列的,如果文件名的ASCII码在一个目录项还未写完,则会接到下一个目录项(实际上这些目录项都是从高到低排列的)同样的位置继续写,如果已经写完,则系统会在最后一个ACSII码后写00H,最多写3个00H,如果3个00H写完后,目录项还有空余位置,则系统会把这些位置全部写上FFH。
同时FAT32系统还有一个类似与FAT16的目录项(紧接着长文件名的目录的后面),同样占32个字节:
00H~07H 文件的文件名
08H~0AH 文件的扩展名
0BH 文件属性
0CH 保留未用
0EH~0FH 文件创建时间
10H~11H 文件最后访问日期
12H~13H 文件创建日期
14H~15H 文件起始簇号的高16位
16H~17H 系统最后修改时间,其中:
16H字节的0~4位是以2秒为增量的秒
16H字节的5~7位和17H字节的0~2位是分钟
17H字节的3~7位是小时
18H~19H 文件最后修改的日期,其中:
18H字节0~4位是天号
18H字节5~7位和19H字节0位是月份
19H字节的1~7位为年号,0~119分别代表1980~2099
1AH~1BH 文件的起始簇号的低16位
1CH~1FH 文件的长度(单位为字节)

注意:其中文件名为DOS兼容文件名,比如上例中在DOS下的文件名为ABCDEF~1.TXT;其首字节含义同FAT16系统;文件属性字节含义同FAT16系统;在FAT32系统中增加了最后访问日期和文件创建时间日期,其计算原理同FAT16中的最后修改的时间和日期。

(四)扩展分区表
我们已经学习了在主引导扇区中的分区表的偏移04H,是分区系统标志,当该值为05H或0FH表示该分区为扩展分区,其实它并非一个真正意义上的分区项,此分区项只是指向一个扩展分区表,这样做是为了解决分区表中最多只能有4个分区项的问题,扩展分区表也是从扩展分区表所在的扇区偏移1BEH~偏移1FD,该扇区0H~1BDH一般为1BEH个00H,同样要以结束标志55H AAH结束。
同样,在扩展分区表中也可能存在指向下一个扩展分区表的分区项.

址163164.cn 微信1631640 QQ3149886

返回总目录 上一页 目录页 下一页