存储空间的划分与初始化
安装windows操作系统,为磁盘分区----C盘…
文件卷
1,卷:
硬盘上的存储区域。驱动器使用一种文件系统(如 FAT 或 NTFS)格式化卷,并给它指派一个驱动器号。单击“Windows 资源管理器”或“我的电脑”中相应的图标可以查看驱动器的内容。一个硬盘包括好多卷,一卷也可以跨越许多磁盘 ;如C盘(文件卷C),D盘(文件卷D);
存储空间的划分,
,2,文件卷又可以具体的划分为目录区和文件区;
目录区:
文件区:
3,有的系统支持超大型文件,可支持由多个物理磁盘组成的一个文件卷
存储空间的管理方法:
1.空闲表法:适用于“连续分配的方式”;
分配磁盘块的方式可以类比内存管理中的动态分区:
1.1 首次适应算法,从第一个表项开始找,找到的第一个满足请求的块即可分配给他,同时更新空闲盘块表;
2.空闲链表法
操作系统一直保存着空闲盘块/盘区链的链头,链尾指针;
2.1 空闲盘块链
分配盘块
回收盘块:
空闲盘区链
空闲盘区中的第一个盘块内记录了盘区的长度,下一个盘区的指针;
分配:
假如如上图所示,最大盘区也只有包含3个盘块的,而现在我需要分配6个盘块给我,那么我可以将12-13-14,21-22-23一起分配给我;
分配效率更高;
3.位示图法
通过二元组(字号,位号)来寻找对应的盘块号;
位示图:字号是行号,位号是列号;
如果盘块好,字号,位号都从0开始;
二元组计算公式:(n表示字长)
1.字号,位号推导出盘块号公式:
2.盘块号推导出字号,位号的公式:
位示图的分配与回收:
位示图既支持连续分配,也支持离散分配,
连续分配:假设文件需要K个块,可以顺序扫描位示图,找到k个相邻或不相邻的"0",根据字号,盘号计算出相应的盘块号,将相应的盘块分配给文件,然后将对应位置设置为1;
如果是需要离散分配(不连续),那么找K个块就不需要找到连续的K个0,只要是0就可以;
3.成组链接法
空闲表,空闲链表法不适合大型文件系统,因为空闲表和空闲链表可能过大;
超级块中记录了空闲盘块的数量,以及这些空闲盘块的号;
注意:每个分组中的块号不一定连续,每个分组的盘块数量有上限;
分配问题:
如果需要分配的盘块数<分组的盘块数量,比如需要一个盘块,那么将最末端的一个盘块号对应的盘块分出去,然后在组中删除这个盘块号(201),同时将下一组空闲盘块数量-1;
如果需要分配100个空闲盘快;
注意,第一组的100个块中第300号块也是可以被分配给文件的,只不过里边存储了额外的下一组的信息;
如果需要的盘块数超过了100,比如230个;
1.将第一组的100个块分配;第二组的信息复制到第一组;
再分配100个块,第三组的信息复制到第一组;
再分配30个块;
回收:
如果第一个块不够100个,缺少x个,那么将x个回收的块加入到第一组中,并将第一组的块数量+x直到够100个块为止,如果第一组的块已经达到数量上线,然而还要在回收1块,此时需要将超级块中的数据复制到新回收的第一个块中,让新回收的块称为第一个分组,而超级块包含的块数量置为1,并指向新回收的块;