mkdos分区后 空间大小分布情况分析

mkdos分区后 空间大小分布情况分析

空间分布情况如图:

 

上图参数如下:

第0号扇区:   引导扇区;

第1号扇区:   FSInfo 扇区;

第6号扇区:   备份引导扇区;

第7号扇区:   备份FSInfo 扇区;

第0-31号扇区:   保留扇区数;

第32-15479号扇区:   FAT1;

第15480-30927号扇区:   FAT2;

第30928-15849471号扇区:   数据区(目录也属数据);

 

磁盘参数如下:

每簇扇区数: 8

FSinfo扇区中的空闲簇数: 0x001E2BE5 = 1977317

FSinfo扇区中的下一个空闲簇号:0x00000003 (根目录已占用,0x00000002)

保留扇区数: 32

FAT表扇区数:15448

FAT表总数:2

整个磁盘扇区数:15849472   (0-15849471)

 

 

好了,让我们来计算一下:

实际总空间大小扇区数(数据区) = 整个磁盘扇区数 -( FAT表扇区数*FAT表总数 + 保留扇区数)

                                         15849472  - (15448*2 + 32 ) = 15818544(扇区)

实际总空间大小簇数: 15818544(扇区) /8 = 1977318(簇)

剩余空间大小簇数 = 实际总空间大小簇数 - 目录已占用的一簇(第2簇)

                         1977318(簇) - 1 = 1977317(簇)   (已跟FSinfo扇区中的空闲簇数相符合)

 

再看剩余空间大小簇数是否与FAT表的总簇数是否相等?

FAT表总扇区数 = FAT2扇区地址  - FAT1扇区地址

                               15480 - 32 = 15448(扇区)

                                        或ROOT扇区地址 - FAT2扇区地址   得出

                               30928 - 15480 = 15448 (扇区)

FAT表总字节数 = 15448 * 512 = 7909376 (字节)

FAT表总簇数 = 7909376 (字节) / 4(字节)  = 1977344 (簇)  //发现与前面计算1977317(簇)不一致??下面我们来分析一原因.

FAT表可用簇数 =1977344 (簇)  - 2 - 1 = 1977341(簇)  //前面两个固定簇,1 个根目录簇.

原因分析如下:

因为FAT表以扇区为单位.如果不是15448(扇区),而是15447(扇区)会出现什么情况呢?

FAT表能指向数据区的总簇数 =15447* 512/4 = 1977216 (簇) //要比1977317(簇)少了101个簇.造成101*8*512=413696(字节)浪费.

所以.在FAT表上加多一个扇区来存储指针,也不要因为指针指不到造成浪费.FAT表浪费也就浪浪费不到512字节.两个FAT表也就不到512*2 = 1024字节.所以FAT表最后一个扇区的指针可能没有指向可指向的空间,空间已经不够了.由FAT表计算剩余簇空间是不准确的(可以特殊处理).

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值