📜  操作系统中的文件系统实现

📅  最后修改于: 2021-08-27 04:09:44             🧑  作者: Mango

先决条件–操作系统中的文件系统
文件是相关信息的集合。文件系统驻留在辅助存储上,并通过允许存储,定位和检索数据来提供对磁盘的高效便捷访问。

文件系统分为多个层次:

  • I / O控制级别–
    设备驱动程序充当设备和操作系统之间的接口,它们有助于在磁盘和主内存之间传输数据。它以块号作为输入,并以输出形式给出底层硬件特定的指令。
    / li>
  • 基本文件系统–
    它向设备驱动程序发出常规命令以读取和写入磁盘上的物理块。它管理内存缓冲区和缓存。缓冲区中的块可以保存磁盘块的内容,而高速缓存则存储经常使用的文件系统元数据。
  • 文件组织模块–
    它具有有关文件,文件位置及其逻辑块和物理块的信息。物理块与逻辑块的逻辑编号(从0到N)不匹配。它还具有跟踪未分配块的可用空间。
  • 逻辑文件系统–
    它管理有关文件的元数据信息,即包括有关文件的所有详细信息,但文件的实际内容除外。它还通过文件控制块进行维护。文件控制块(FCB)具有有关文件的信息-所有者,大小,权限,文件内容的位置。

好处 :

  1. 代码的重复被最小化。
  2. 每个文件系统都可以有自己的逻辑文件系统。

缺点:
如果我们同时访问许多文件,则会导致性能降低。

我们可以使用两种类型的数据结构来实现文件系统:

    1.磁盘结构–
    通常,它们包含有关磁盘块总数,可用磁盘块,它们的位置等信息。下面给出的是不同的磁盘结构:
    1. 引导控制块–
      它通常是卷的第一个块,它包含启动操作系统所需的信息。在UNIX中,它称为启动块,在NTFS中,它称为分区启动扇区。
    2. 音量控制块–
      它具有有关特定分区的信息,例如:空闲块数,块大小和块指针等。在UNIX中,它称为超级块;在NTFS中,它存储在主文件表中。
    3. 目录结构–
      它们存储文件名和关联的inode编号。在UNIX中,包括文件名和关联的文件名;在NTFS中,它存储在主文件表中。
    4. 每个文件的FCB –
      它包含有关文件的详细信息,并且具有唯一的标识符编号,以允许与目录条目关联。在NTFS中,它存储在主文件表中。

    2.内存结构:
    它们维护在主存储器中,这对于文件系统缓存管理很有帮助。下面给出了几种内存结构:

    1. 底座表–
      它包含有关每个已安装卷的信息。
    2. 目录结构缓存–
      该高速缓存保存最近访问的目录的目录信息。
    3. 系统范围的打开文件表–
      它包含每个打开的文件的FCB副本。
    4. 每进程打开文件表–
      它包含由该特定进程打开的信息,并映射有适当的系统范围的打开文件。

    目录实施:

    1. 线性列表–
      它维护一个线性的文件名列表,并带有指向数据块的指针,这也很费时。要创建一个新文件,我们必须首先搜索目录以确保没有现有文件具有相同的名称,然后在该目录中添加一个文件要删除文件,请在目录中搜索命名文件并释放空间。要重用目录条目,可以将条目标记为未使用,也可以将其附加到空闲目录列表中。
    2. 哈希表 –
      哈希表采用从文件名计算得出的值,并返回指向文件的指针。它减少了目录搜索时间。文件的插入和删除过程很容易。主要的困难是哈希表的大小通常是固定的,而哈希表则依赖于该大小的哈希函数。