FAT和NTFS技术 ,磁盘存储器管理

来源:互联网 发布:韦德上场比赛的数据 编辑:程序博客网 时间:2024/05/21 07:51

FAT和NTFS技术

  1. FAT12
  2. FAT16
  3. FAT32
  4. NTFS

1. FAT12
是以盘块为基本单位的。
对1.2MB的软盘,盘块大小为512B,FAT中共含有2.4K个表项,由于每个FAT表项占12位,故FAT表占用3.6KB的存储空间,因为12位 == 12/8字节.

(1.以盘块为分配单位时最大磁盘容量问题:
每个FAT表项12位,FAT表中最多允许有4096项;
盘块大小是512B,每个磁盘分区的容量为2 MB(4096×512B)
一个物理磁盘支持4个逻辑分区,相应的磁盘最大容量仅为8 MB

(2.8MB对最早时期的硬盘还可应付,但很快容量就超过了,FAT12还能继续用? Yes.引入新的分配单位——簇
簇的基本概念
进行盘块分配时,不再以盘块而是以簇(cluster)为基本单位
簇是一组连续的扇区,在FAT中是一个虚拟扇区,簇的大小一般是2n 个盘块
簇包含扇区的数量与磁盘容量的大小直接有关
例如: 簇仅有一个扇区时,磁盘的最大容量为8 MB;
簇包含两个扇区时,磁盘的最大容量可达16MB;
簇包含八个扇区时,磁盘的最大容量可达64MB。

(3.FAT12存在的问题
允许的磁盘容量存在着严重的限制,通常只能是几十个Megabytes,虽可继续增加簇的大小来提高最大磁盘容量,但随着支持的硬盘容量的增加,相应的簇内碎片也将随之成倍地增加
只能支持8+3格式的文件名

2. FAT16

(1.FAT12表最多只允许4096个表项,即最多只能将一个磁盘分区分为4096个簇。随着磁盘容量的增加,会引起簇的大小和簇内碎片也随之增加
解决方法
(2.增加FAT表的表项数,即增加FAT表的宽度

16位最大表项数65536(2^16)个,一个磁盘分区分为65536个簇
每个簇盘块数为4、8、16、32直到64
最大分区空间为216×64×512 = 2048 MB

(3存在的问题: 当磁盘容量较大时,使用FAT16,形成的簇内碎片所造成的浪费会很大

例如
磁盘分区大小为8GB时,每簇的大小达到128 KB,内部零头最大可达到128 KB
一般对1~4 GB的硬盘来说,大约会浪费10%~20%的空间
为了解决这一问题,微软推出了FAT32

3.FAT32

FAT系列文件系统的最后一个产品
每一簇在FAT表中的表项占据4B(232),FAT表可以表示4 294 967 296项
FAT32中采用较小的簇,每个簇都固定为4 KB,每个盘块仍为512B,FAT32分区格式可以管理的单个最大磁盘空间大到4KB×232 = 16TB
实际上,FAT32仅使用28位簇标识符,在簇大小为4KB时,最大磁盘空间大到1TB,若簇大小为8KB,则最大可为2TB

4.NTFS
NTFS也是以簇作为磁盘空间分配和回收的基本单位。一个文件占用若干个簇,一个簇只属于一个文件

通过簇间接管理磁盘,不需要知道扇区的大小,使NTFS具有与磁盘物理扇区大小无关的独立性,支持扇区大小不是512字节的非标准磁盘,可以根据不同的磁盘选择匹配的簇大小

5.Fat占用空间的计算:
例:假定盘块的大小为1KB,对于540MB的硬盘FAT需占用多少存储空间?

(1.需要表项: 540MB/1KB = 540K;
(2.计算表项大小所在的大小区间: 2^20 = 2^10 * 1K = 1024K, 2^19 = 2^9 * 1K = 512K, 所以540 在 512K~1024K的范围内;
(3.估计需要的描述的位的大小: 540K 可以用20位来描述, 2^20嘛, 所以20位 = 20/8 = 2.5字节.
(4.计算FAT占用的空间: 540K * 2.5字节 = 540*2.5KB = 1350KB = 1.35MB

若当硬盘容量为1.2G时,FAT需占用多少存储空间?
(1.需要表项: 1.2GB/1KB = 1.2M;
(2.计算表项大小所在的大小区间: 2^20 = 2^10 * 1K = 1024K = 1M, 2^21 = 2^11 * 1K = 2048K = 2M, 所以 在 1M~2M的范围内;
(3.估计需要的描述的位的大小: 1.2M 可以用24位(最好是8的倍数或者10的倍数)来描述, 所以24位 = 24/8 = 3字节.
(4.计算FAT占用的空间: 1.2M * 3字节 = 3.6MB

原创粉丝点击