操作系统——磁盘储存器的管理


连续分配方式


思路:为每一个文件一次性分配一组相邻的盘块。原理和内存管理中的动态分区类似。

优点:
由于一个文件的内容都在一起,所以,一旦找到该文件第一个盘块,则后续读取速度很快。

缺点:
该种管理方式需要有连续的储存空间。且随着文件的插入删除。磁盘中会形成很多的细小碎片。且很难加以利用。需要用紧凑的方法,将文件紧凑在一起。但是这有一个致命缺点,需要知道文件的大小。其实知道文件大小说的是将文件读入内存后,如果文件发生变化,大小改变(特指变大),此时,将文件再写回磁盘中,则无法完全放下。所以,即使在最早的dos系统中都未曾使用该种管理方式。


链接分配


1.隐式链接
思路:在采用该种管理方式时,需要在文件目录的每个目录中都保存指向该文件的第一个盘块和最后一个盘块的指针。
目录格式:

主要问题:只适用于顺序访问(也只能做到顺序访问。)。且其可靠性很差。每一个盘块的连接都是通过指针来实现的,假如其中一个指针出现问题,则整个链都会无效,断块。整个文件也就变得不完整。

2.显式链接
思路:把链接文件各个物理块的指针,显式的存放在内存的一张链表中。且该表在磁盘中仅设置一张。
由于查询记录的过程是在内存中进行,因而不仅显著的提高了检索的速度,还大大的减少了访问磁盘的次数。
由于分配给文件的所有盘块号都在该张表中,因此也将这张表叫做文件分配表(FAT)。


FAT技术


1.FAT12
早起MS—dos操作系统使用的文件系统。在每个分区中都有两张FAT表(一张是备份。)在FAT的每一个表项中都存放下一个盘块号。这实际上也就是实现指针的链接作用。通过这种方法,能将一个文件的所有盘块链接到一起。而文件的第一个盘块号是放在自己FCB中的。
特点:每个FAT表项中为12位。也就是说FAT12最大允许的表项为2^12,即4096项。而一个盘块大小一般是512B,也就是说一个磁盘分区的最大容量为4096*512B=2M,而一个物理磁盘最大可分为4个逻辑磁盘分区。也就是说一个物理磁盘最大可以容纳8M数据。这在早期dos系统还能运用,而在快速的计算机发展中,马上就会被淘汰。
因此为了适应磁盘的容量需求不断扩大,在盘块分配时,不再以盘块作为基本单位,而是以簇作为FAT表中的基本单位。
簇:一组连续的扇区(盘块)。在FAT中他是作为一个虚拟扇区存在的。而且簇的大小一般是2n个盘块,(1,2,4,6,8,10,)
因此,当一个FAT采用簇时,若一个簇有一个扇区,其容量为8M。若有两个扇区则为16M。8个扇区则为,64M。
终上所述,以簇为基础分配单位所带来的最主要的好处就是能适应磁盘的不断扩大。而且还能使得FAT中表项目数减少。
但是缺点也很明显:浪费空间,一个文件最末尾的大小可能放不忙一个簇,因而会浪费空间,簇越大,浪费的空间也就越大。
2.FAT16
将位数扩展到16位,使得表项最大数提升到2^16 = 65536,而且由此可得,当一个簇有64个扇区时,FAT16可以管理最大的分区空间为65536 * 64 * 512 = 2048M
3.FAT32
如同存储器管理中的分页管理,所选择的页面越大,造成的页内碎片也会越大。而为了减少页内碎片,我们就应该选择合适的页大小。在文件管理中,也是类似,我们应该选择合适的簇的大小。
FAT16的表长度最大也只是2^16,由此增大也只能增大簇的大小,因此会造成不必要的簇内碎片浪费。因此,我们可以选择增大表的项目数量。即增大位数。也由此FAT16变为FAT32.
FAT32是FAT系列文件系统的最后一个产品。每一簇在FAT表中的表项占据4字节(232),FAT表可以表示4 294 967 296项,即FAT32允许管理比FAT16更多的簇。这样就允许在FAT32中采用较小的簇,FAT32的每个簇都固定为4 KB,即每簇用8个盘块代替FAT16的64个盘块。
每个盘块仍为512字节,FAT32分区格式可以管理的单个最大磁盘空间大到4 KB×232 = 2 TB。
FAT中簇大小与最大分区的对应关系


NTFS新特征


NTFS具有许多新的特征:

首先,它使用了64位磁盘地址,理论上可以支持2的64次方字节的磁盘分区;
其次,在NTFS中可以很好地支持长文件名,单个文件名限制在255个字符以内,全路径名为32 767个字符;
第三,具有系统容错功能,即在系统出现故障或差错时,仍能保证系统正常运行;
第四,提供了数据的一致性,这是一个非常有用的功能;
此外,NTFS还提供了文件加密、文件压缩等功能。

同FAT文件系统一样,NTFS也是以簇作为磁盘空间分配和回收的基本单位。一个文件占用若干个簇,一个簇只属于一个文件。
通过簇来间接管理磁盘,可以不需要知道盘块(扇区)的大小,使NTFS具有了与磁盘物理扇区大小无关的独立性,很容易支持扇区大小不是512字节的非标准磁盘,从而可以根据不同的磁盘选择匹配的簇大小。

在NTFS文件系统中,把卷上簇的大小称为“卷因子”,卷因子是在磁盘格式化时确定的,其大小同FAT一样,也是物理磁盘扇区的整数倍,即一个簇包含2n(n为整数)个盘块,簇的大小可由格式化命令或格式化程序按磁盘容量和应用需求来确定,可以为512 B、1 KB、2 KB……,最大可达64 KB。
对于小磁盘(≤512 MB),默认簇大小为512字节;对于1 GB磁盘,默认簇大小为1 KB;对于2 GB磁盘,则默认簇大小为4 KB。事实上,为了在传输效率和簇内碎片之间进行折中,NTFS在大多数情况下都是使用4 KB。

对于簇的定位,NTFS是采用逻辑簇号LCN(Logical Cluster Number)和虚拟簇号VCN(Virtual Cluster Number)进行的。
LCN是以卷为单位,将整个卷中所有的簇按顺序进行简单的编号,NTFS在进行地址映时,可以通过卷因子与LCN的乘积,便可算出卷上的物理字节偏移量,从而得到文件数据所在的物理磁盘地址。
为了方便文件中数据的引用,NTFS还可以使用VCN,以文件为单位,将属于某个文件的簇按顺序进行编号。
只要知道了文件开始的簇地址,便可将VCN映射到LCN。

在NTFS中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表MFT(Master File Table)中。
该表是NTFS 卷结构的中心,从逻辑上讲,卷中的每个文件作为一条记录,在MFT 表中占有一行,其中还包括MFT 自己的这一行。
每行大小固定为1 KB,每行称为该行所对应文件的元数据(metadata),也称为文件控字。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值