操作系统笔记11-文件系统结构

文件系统结构

分配方法

连续分配

每个文件在磁盘上占有一组连续的块。

**优点:**实现简单,可以随机访问

**缺点:**浪费空间(参考内存分配中的连续分配)

链接分配

每个物理块有一个指针项,指向下一个记录的物理块。

目录文件包含文件第一块的指针和最后一块的指针

**优点:**长度可变,没有浪费

**缺点:**不支持随机访问,每个块存在指针项的浪费

索引分配

每个文件都有至少一个索引块(索引块也是一个物理块)

在该块中,存有该文件的各个记录所在的块,可以用多级索引来保存较大的文件

**优点:**支持随机访问

**缺点:**至少浪费了一个物理块

空闲空间的管理

位向量(位示图)

每一块用一位表示:空闲为1,已分配为0

如何找到一个空闲块的块号?(值为0的字数)X (一个字的位数,即16位)+第一个值为1的位的偏移

优点:占用空间小,可以常驻内存,支持连续空间分配

链表(空闲块链)

将所有空闲的磁盘块用链表连接起来,并将指向第一空闲块的指针保存在磁盘的特殊位置,同时缓存在内存中。

文件空白目录(计数)

利用一个表记录空闲块的起始块和块数,类似于内存分配中的未分分区表

效率与性能

效率与性能取决于:磁盘分配算法、目录管理算法等

提高访问性能的方法:1.提前读、2.即刻释放

恢复

由于文件和目录可保存在内存和磁盘上,因此必须确保不会引起数据丢失和数据不一致

一致性检查

一致性检查程序将目录结构数据与磁盘数据块相比较,试图纠正所发现的不一致。

在虚拟内存一节中,内存中的页撤销时,就要检查是否有更改,有的话就要写回。

备份和恢复

可以利用系统程序将磁盘数据备份到另一存储设备上。恢复时从备份中恢复

为了降低复制量,可以如下进行:

  1. 第一天备份所有数据,称完全备份
  2. 第二天,将自第一天以来改变过的数据备份,称增量备份
  3. 进行增量备份

上述方案类似git的版本控制

用户可能在文件损坏很久才发现数据不见或损坏,因此需要不时进行完全备份