【操作系统概念】文件管理

文件系统的分层组织结构

(自上而下)

  • 逻辑文件系统
    • 负责文件系统的逻辑结构(元数据)
  • 文件组织系统
    • 负责给文本数据分配磁盘块
    • 管理空闲磁盘块
  • 基本文件系统
    • 以磁盘块为单位给文件进行读写
  • IO控制
    • 有设备驱动程序和中断处理程序。实现内存和磁盘之间的信息传输

 

一、文件目录管理

 

1、目录:一个包含文件所有信息的节点的集合,用于组织文件;目录结构和文件都驻留在磁盘上

2、目录的相关操作

  • 搜索文件
  • 创建文件
  • 删除文件
  • 遍历目录
  • 重命名文件
  • 遍历文件系统

 

3、目录结构

  • 单层目录

文件系统为存储设备的所有文件建立一张目录表

  • 一个目录对应所有用户
  • 命名:不允许有重名文件
  • 分组
  • 双层目录

将目录分为2级:主目录(MFD)和用户文件目录(UFD)

  • MFD = {用户名,用户子目录所在的物理位置}
  • UFD = {登记该用户所有文件的FCB}

产生于多用户分时系统,文件主目录和表目按用户分,每个用户有一个用户文件目录。

特点:

  • 不同用户可以为文件取相同的名字
  • 有效搜索
  • 没有分组功能
  • 树状结构目录

特点

  • 有效的搜索
  • 支持分组
  • 但概念目录:文件路径名一般较长,而用户总是局部地使用文件。故为了方便起见,可以把经常使用的文件所在目录指定为工作目录(或者当前目录)
  • 可以进行存储权限控制
  • 无环图目录
    • 硬链接
    • 符号链接

特点

  • 具有共享的子目录和文件
  • 文件可能拥有多个绝对路径名(不同文件名指向同一个文件)

 

二、文件组织系统实现

 

1、磁盘空间分配

  • 连续分配
    • 特点
      • 简单:只需要记录起始块号&文件长度(块数)
      • 可以很方便地支持随机访问
    • 缺点
      • 存在空间浪费,要求有连续的存储空间
      • 文件变长的时候比较难以处理
        • 必须事先知道文件的长度,以后不能动态增长(被预留空间、重新分配和移动所掌控)
        • 不利于文件插入删除
        • 存在外部碎片
    • 解决方案:紧凑
  • 链接分配
    • 每个磁盘块中留出一个指针地址,用来进行块链接
    • 空间管理:浪费较少
    • 缺点:不支持随机访问
  • 索引分配
    • 文件信息存放在若干不连续的物理块中。系统为每个文件建立一个专用数据结构,索引表,并将这些块号存放在一个索引表中。索引表完成逻辑块号和物理块号的映射。
    • 优点:
      • 既可以满足文件动态增长的需求,又可以较为方便迅速地实现随机存取(毕竟把逻辑块号和物理块号放一起了,串联他们这个是分散的)
    • 缺点:
      • 由于使用了索引表而增加了存储空间的开销
      • 存取文件的时候至少访问存储器两次以上(一次访问索引表,一次根据索引表提供的物理块号访问文件信息),就很慢。所以可以改进位,对某个文件操作之前系统预先把索引表放到内存里。
    • 改进:
      • 文件很大索引表也很大——间接索引(多重索引)

2、空闲空间管理

  • 空闲文件目录法
    • 把一个连续的未分配区域(可能包括若干空闲块)看作一个文件,称为空白文件
    • 系统为所有的空白文件建立一个目录,即空白文件目录,每个目录表对应一个空闲文件,记录该空闲文件的起始块号和快熟。
    • 空闲块的分配和内存管理里面的可变分区方法相似,同样可以用最先适应,最佳适应,最坏适应。
    • 缺点:空闲文件目录是一个连续表,要占用较大的辅存空间
  • 空闲块链法
    • 按照空闲区大小顺序链接的方法
      • 增加或移动 块的时候开销较大
    • 按照释放先后顺序链接
    • 按成组链接法
      • 把文件存储设备中所有空闲块按照50块划分为一组
      • 组的划分从后往前一次划分
    • 缺点:每次释放物理块时要完成拉链工作,虽然只是在一块中写一个字节,但其工作量和写一块相差无几
  • 位示图法
    • 用一个二进制位记载一个物理快的使用情况。系统为每个文件存储设备建立一张位示图。0空闲,1占用。想找N个自由块的话,可以先搜索位示图,找到N个0位,再经过一次简单换算得到对应地址。
    • 缺点:分配时需要顺序扫描空闲去(0)速度慢,而且物理块号并未再图中直接反映出来,需要进一步计算。

三、文件系统底层

  • 一个磁盘可以分成多个分区,一个分区可以跨多个磁盘
  • 一个卷(文件系统)在使用前必须安装;取消安装之后就不能再访问了
  • 磁盘调度
    • FCFS
      • 按照到达顺序移动磁头
    • SSTF最短寻道时间有限算法
      • 选择与磁头位置最近的待处理请求
      • 基本上是一种短作业有线调度,可能会产生饥饿
    • SCAN电梯算法
      • 磁臂从磁盘一端向另一端移动(方向意味),当磁头移过每一个柱面的时候,处理位于该柱面上的请求服务。当到达另一端的时候,改变方向继续处理。
    • C-SCAN提供了一种更均匀的等待时间
      • 将磁头从磁盘的一端移到另一端,边移动边处理请求。但是磁头移动到另一端时候马上返回磁盘开始,返回的时候不处理请求。(就是把柱面当作环,最后一个柱面和第一个柱面相连w)
    • C-LOOK算法
      • 磁头只移动到一个方向上最远请求为止,接着马上返回,而不是移动到磁盘尽头

猜你喜欢

转载自blog.csdn.net/sinat_39763590/article/details/93157208