一、扇区和磁盘块的概念
物理层面,一个磁盘按层次分为:磁盘组合 -> 单个磁盘 -> 某一盘面 -> 某一磁道 -> 某一扇区 。每个磁盘有多条同心圆似的磁道,磁道被分割成多个部分。每部分的弧长加上到圆心的两个半径,恰好形成一个扇形,所以叫做扇区。扇区是磁盘中最小的物理存储单位。
由于扇区数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作,即块是操作系统中最小的逻辑存储单元。这样可以使操作系统忽略底层物理存储结构的设计。磁盘块是操作系统自己“杜撰”的,是一个虚拟的概念。其大小由操作系统决定,通常一个块 = 单个扇区大小 * 2的n次方,其中n是可修改的。
二、文件管理之混合索引
(1)单级索引
在打开某个文件时,只需把该文件占用的盘块的编号调入内存即可。为此应将每个文件所对应的盘块号集中地放在一起,在访问到某个文件时,将该文件所对应的盘块号一起调入内存。索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,记录文件的各个逻辑块对应的物理块。索引表存放的磁盘块称为索引块,文件数据存放的磁盘块称为数据块。在建立一个文件时,只须在为之建立的目录项中填上指向该索引块的指针。
(2)多级索引
使第一层索引块指向第二层的索引块,还可根据文件大小的要求再建立第三层、第四层索引块。
多级索引大大加快了对大型文件的查找速度,但在访问一个盘块时,其所需启动磁盘的次数随着索引级数的增加而增多。
(3)混合索引方式
为了能较全面地照顾到小、中、大及特大型作业,可以采取多种组织方式来构成文件的物理结构。混合索引是多种索引分配方式的结合,例如一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)。
三、文件存储空间管理
为了实现前面任何一种文件组织方式,都需要为文件分配盘块,因此必须知道磁盘上哪些盘块是可用于分配的。故在为文件分配磁盘时,除了需要文件分配表外,系统还应为可分配存储空间设置相应的数据结构——磁盘分配表(Disk Allocation Table),此外还应提供对盘块进行分配和回收的手段。
存储空间管理就是用来完成上述功能的,位示图法是文件存储空间管理的几种方法之一。
四、位示图
位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况,当其值为 0 时表示对应的盘块空闲,为 1 时表示已分配,也可以反过来。磁盘上的所有盘块都有一个二进制位与之对应,这样由所有盘块所对应的位构成一个矩阵。通常可用 m x n 个位数来构成位示图,并使 m x n 等于磁盘的总块数,描述为一个二维数组 map[m,n]。
(一)分配盘块
根据位示图进行盘块分配时,可分三步进行:
- 顺序扫描位示图,从中找出一个或一组其值为 0 的二进制位(“0”表示空闲时);
- 将所找到的一个或一组二进制位转换成与之相应的盘块号,假定位于位示图的第 i 行、第 j 列,则其相应的盘块号应按“b = n × (i-1) + j”计算,其中 n 代表每行的位数;
- 修改位示图,令 map[i,j] = 1
(二)回收盘块
1, 2,8
- 首先将回收盘块的盘块号转换成位示图中的行号和列号,转换公式为如下。
i = (b-1) DIV n + 1
j = (b-1) MOD n + 1
2. 第二步修改位示图,令 map[i,j] = 0。
参考: