操作系统中的文件系统经典详细指南

2021年3月13日16:06:26 发表评论 682 次浏览

文件是记录在辅助存储器上的相关信息的集合。或文件是逻辑相关实体的集合。从用户的角度来看, 文件是逻辑辅助存储的最小分配。

属性 类型 操作
名称 文件 创造
类型 可执行程序 打开
尺寸 日文版
创建数据 西斯
作者 C 附加
最后修改 Java 截短
保护 删除
文件类型 通常的扩展 函数
可执行的 exe, com, bin 读取以运行机器语言程序
Object obj, o 已编译, 机器语言未链接
源代码 C, java, pas, asm, a 各种语言的源代码
批量 蝙蝠, 嘘 给命令解释器的命令
文本 txt, doc 文字数据, 文件
文字处理器 wp, tex, rrf, doc 多种文字处理格式
封存 弧形, 拉链, 焦油 相关文件分组为一个压缩文件
多媒体 mpeg, mov, rm 用于包含音频/视频信息

文件目录:

文件集合是一个文件目录。该目录包含有关文件的信息, 包括属性, 位置和所有权。这些信息中的很多, 尤其是与存储有关的信息, 都是由操作系统管理的。该目录本身就是一个文件, 可以通过各种文件管理例程进行访问。

设备目录中包含的信息是:

  • 名称
  • 类型
  • 地址
  • 当前长度
  • 最大长度
  • 上次访问日期
  • 最后更新日期
  • 所有者ID
  • 保护信息

在目录上执行的操作是:

  • 搜索文件
  • 建立档案
  • 删除档案
  • 列出目录
  • 重命名文件
  • 遍历文件系统

维护目录的优点是:

  • 效率:可以更快地找到文件。
  • 命名:这对用户来说很方便, 因为两个用户可以为不同的文件使用相同的名称, 也可以为同一文件使用不同的名称。
  • 分组:文件的逻辑分组可以通过属性来完成, 例如所有Java程序, 所有游戏等。

单层目录

在此为所有用户维护一个目录。

  • 命名问题:用户不能为两个文件使用相同的名称。
  • 分组问题:用户无法根据需要将文件分组。
file_sys_5

两层目录

在这个单独的目录中, 为每个用户维护。

  • 路径名:由于有两个级别, 因此每个文件都有一个路径名来查找该文件。
  • 现在, 我们可以为不同的用户使用相同的文件名。
  • 用这种方法搜索是有效的。
file_sys_6

树状结构目录:

目录以树的形式维护。搜索效率高, 并且具有分组功能。我们有文件的绝对或相对路径名。

file_sys_7

文件分配方法

1.连续分配:

在创建文件时, 将单个连续的块集分配给一个文件。因此, 这是使用可变大小部分的预分配策略。文件分配表仅需要每个文件一个条目, 即可显示起始块和文件的长度。从单个顺序文件的角度来看, 这种方法是最好的。一次可以读取多个块, 以提高I / O性能以进行顺序处理。检索单个块也很容易。例如, 如果文件从块b开始, 并且需要文件的第i个块, 则其在二级存储上的位置就是b + i-1。

file_sys_8

坏处

  • 将会发生外部碎片, 从而很难找到足够长度的连续空间块。压缩算法对于释放磁盘上的额外空间将是必要的。
  • 同样, 对于预分配, 有必要在创建时声明文件的大小。

2.链接分配(非连续分配):

分配是基于单个块的。每个块都包含一个指向链中下一个块的指针。同样, 每个文件的文件表只需要一个条目, 即可显示起始块和文件的长度。尽管可以进行预分配, 但更常见的是仅根据需要分配块。可以将任何空闲块添加到链中。这些块不必是连续的。如果有可用的磁盘块, 则始终可以增加文件大小。没有外部碎片, 因为一次只需要一个块, 但是可以有内部碎片, 但是它仅存在于文件的最后一个磁盘块中。

坏处:

  • 文件的最后一个磁盘块中存在内部碎片。
  • 在每个磁盘块中维护指针会有开销。
  • 如果任何磁盘块的指针丢失, 文件将被截断。
  • 它仅支持文件的顺序访问。

3.索引分配:

它解决了连续分配和链接分配的许多问题。在这种情况下, 文件分配表为每个文件包含一个单独的一级索引:对于分配给该文件的每个块, 该索引都有一个条目。分配可以基于固定大小的块或可变大小的块。按块分配可消除外部碎片, 而按可变大小的块分配可提高局部性。这种分配技术支持对文件的顺序访问和直接访问, 因此是文件分配的最流行形式。

file_sys_9

磁盘可用空间管理

就像必须管理分配给文件的空间一样, 必须管理当前未分配给任何文件的空间。要执行任何文件分配技术, 必须知道磁盘上的哪些块可用。因此, 除了文件分配表之外, 我们还需要一个磁盘分配表。以下是用于空闲空间管理的方法。

位表

:此方法对磁盘上的每个块使用一个包含一位的向量。每个0条目对应一个空闲块, 每个1对应一个正在使用的块。

例如:00011010111100110001

在该向量中, 每个位对应于一个特定的块, 0表示该特定块是空闲的, 而1则表示该块已被占用。位表的优点是, 找到一个或一组连续的空闲块相对容易。因此, 位表可与任何文件分配方法配合使用。另一个优点是它尽可能小。

免费黑名单

:在这种方法中, 每个块都被顺序分配一个编号, 所有空闲块的编号列表都保留在磁盘的保留块中。

file_sys_10

本文作者:

Aakansha yadav

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: