📜  操作系统中的文件系统

📅  最后修改于: 2022-05-13 01:56:11.355000             🧑  作者: Mango

操作系统中的文件系统

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

AttributesTypesOperations
NameDocCreate
TypeExeOpen
SizeJpgRead
Creation DataXisWrite
AuthorCAppend
Last ModifiedJavaTruncate
protectionclassDelete
  Close

File typeUsual extensionFunction
Executableexe, com, binRead to run machine language program
Objectobj, oCompiled, machine language not linked
Source CodeC, java, pas, asm, aSource code in various languages
Batchbat, shCommands to the command interpreter
Texttxt, docTextual data, documents
Word Processorwp, tex, rrf, docVarious word processor formats
Archivearc, zip, tarRelated files grouped into one compressed file
Multimediampeg, mov, rmFor containing audio/video information

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

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



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

对目录执行的操作是:

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

维护目录的优点是:

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

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

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

file_sys_5

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

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

file_sys_6



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

file_sys_7

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

file_sys_8

坏处

  • 会发生外部碎片,使得很难找到足够长度的连续空间块。需要压缩算法来释放磁盘上的额外空间。
  • 此外,对于预分配,需要在创建时声明文件的大小。

2. Linked Allocation(Non-contiguous allocation):分配是基于单个块的。每个块都包含一个指向链中下一个块的指针。同样,文件表只需要每个文件的一个条目,显示文件的起始块和长度。虽然预分配是可能的,但更常见的是根据需要简单地分配块。任何空闲块都可以添加到链中。块不需要是连续的。如果可用磁盘块可用,则始终可以增加文件大小。没有外部碎片,因为一次只需要一个块,但内部碎片可能存在,但它只存在于文件的最后一个磁盘块中。

坏处:

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

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

file_sys_9



磁盘可用空间管理

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

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

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

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

file_sys_10