先决条件–操作系统中的文件系统
文件是相关信息的集合。文件系统驻留在辅助存储上,并通过允许存储,定位和检索数据来提供对磁盘的高效便捷访问。
文件系统分为多个层次:
- I / O控制级别–
设备驱动程序充当设备和操作系统之间的接口,它们有助于在磁盘和主内存之间传输数据。它以块号作为输入,并以输出形式给出底层硬件特定的指令。
/ li> - 基本文件系统–
它向设备驱动程序发出常规命令以读取和写入磁盘上的物理块。它管理内存缓冲区和缓存。缓冲区中的块可以保存磁盘块的内容,而高速缓存则存储经常使用的文件系统元数据。 - 文件组织模块–
它具有有关文件,文件位置及其逻辑块和物理块的信息。物理块与逻辑块的逻辑编号(从0到N)不匹配。它还具有跟踪未分配块的可用空间。 - 逻辑文件系统–
它管理有关文件的元数据信息,即包括有关文件的所有详细信息,但文件的实际内容除外。它还通过文件控制块进行维护。文件控制块(FCB)具有有关文件的信息-所有者,大小,权限,文件内容的位置。
好处 :
- 代码的重复被最小化。
- 每个文件系统都可以有自己的逻辑文件系统。
缺点:
如果我们同时访问许多文件,则会导致性能降低。
我们可以使用两种类型的数据结构来实现文件系统:
- 1.磁盘结构–
- 引导控制块–
它通常是卷的第一个块,它包含启动操作系统所需的信息。在UNIX中,它称为启动块,在NTFS中,它称为分区启动扇区。 - 音量控制块–
它具有有关特定分区的信息,例如:空闲块数,块大小和块指针等。在UNIX中,它称为超级块;在NTFS中,它存储在主文件表中。 - 目录结构–
它们存储文件名和关联的inode编号。在UNIX中,包括文件名和关联的文件名;在NTFS中,它存储在主文件表中。 - 每个文件的FCB –
它包含有关文件的详细信息,并且具有唯一的标识符编号,以允许与目录条目关联。在NTFS中,它存储在主文件表中。 - 底座表–
它包含有关每个已安装卷的信息。 - 目录结构缓存–
该高速缓存保存最近访问的目录的目录信息。 - 系统范围的打开文件表–
它包含每个打开的文件的FCB副本。 - 每进程打开文件表–
它包含由该特定进程打开的信息,并映射有适当的系统范围的打开文件。 - 线性列表–
它维护一个线性的文件名列表,并带有指向数据块的指针,这也很费时。要创建一个新文件,我们必须首先搜索目录以确保没有现有文件具有相同的名称,然后在该目录中添加一个文件要删除文件,请在目录中搜索命名文件并释放空间。要重用目录条目,可以将条目标记为未使用,也可以将其附加到空闲目录列表中。 - 哈希表 –
哈希表采用从文件名计算得出的值,并返回指向文件的指针。它减少了目录搜索时间。文件的插入和删除过程很容易。主要的困难是哈希表的大小通常是固定的,而哈希表则依赖于该大小的哈希函数。
通常,它们包含有关磁盘块总数,可用磁盘块,它们的位置等信息。下面给出的是不同的磁盘结构:
2.内存结构:
它们维护在主存储器中,这对于文件系统缓存管理很有帮助。下面给出了几种内存结构:
目录实施: