操作系统基础50-文件系统实现
2021-01-30 02:32·重学IT的老猫
文件系统提供了在线存储和访问包括数据和程序在内的文件内容的机制,文件系统永久地驻留在外存上,外存可以永久存储大量数据。
概述
- 1、在磁盘上,文件系统可能包括如下信息: ①如何启动所存储的操作系统②总的块数③空闲块的数目和位置④目录结构以及各个具体文件等2、磁盘结构包括: ①(每个卷的)引导控制块(boot control block\Volume):通常为分区的第一块。如果该分区没有OS,则为空。(其他名称:引导块(Linux)、分区引导扇区(WindowsNT)) ②(每个卷的)卷控制块(Volume control block (/volume):包括分区详细信息,如分区的块数、块的大小、空闲块的数量和指针、空闲FCB的数量和指针等(亦称为超级块(Linux)、主控文件表(WindowsNT)) ③目录结构:用来组织文件 ④文件控制块(FCB):包括很多文件信息,如文件许可、拥有者、大小和数据块的位置等 **3、**一个典型的文件控制块包括: 文件权限、文件日期、文件所有者,组,ACL、文件尺寸、文件数据块
典型文件控制块
文件系统结构
1、磁盘提供大量的外存空间来维持文件系统,磁盘的两个特点,使其成为存储多个文件的方便媒介: ①可以原地重写;可以从磁盘上读一块,修改该块,并将它写回到原来的位置 ②可以直接访问磁盘上的任意一块信息。(随机或顺序方式) 2、为了改善I/O效率,内存与磁盘之间的I/O转移是以块为单位而不是以字节为单位来进行的,每个块为一个或多个扇区 3、为了提供对磁盘的高效且便捷的访问,操作系统通过文件系统来轻松地存储、定位、提取数据。文件系统的两个设计问题 ①如何定义文件系统对用户的接口 ②创建数据结构和算法来将逻辑文件系统映射到物理外存设备上 4、文件系统按层来进行组织,包括如下(由上向下一次递进): ①应用程序 ②逻辑文件系统(logical file system):管理元数据:文件系统的所有结构数据,而不包括实际数据(或文件内容);根据给定符号文件名来管理目录结构;逻辑文件系统通过文件控制块(FCB)来维护文件结构 ③文件组织模块(file-organization module):知道文件及其逻辑块和物理块,空闲空间管理器,可以将逻辑块地址转换成基本文件系统所用的物理块地址 ④基本文件系统(basic file system):向合适的设备驱动程序发送一般命令就可对磁盘上的物理块进行读写 ⑤I/O控制**(I/O control**):由设备驱动程序和中断处理程序组成,实现内存与磁盘之间的信息转移 ⑥设备(devices)
设计中每层利用较低层的功能来创建新的功能来对更高层来服务。
采用分层的结构实现文件系统,能够最大限度地减小重复的代码。
文件系统实现
创建并打开文件的过程
为了创建一个新文件,应用程序调用逻辑文件系统(其有目录结构形式)。逻辑文件系统分配一个新的FCB。系统把目录信息读入内存,用新的文件名更新该目录和FCB,并写回磁盘。
系统调用open()会首先搜索系统范围内的打开文件表来确定某个文件是否已经被其他进程使用,如果是,则在单个进程的打开文件表中创建一项,并指向现有的系统范围内的打开文件表。
当打开文件时,根据给定文件名来搜索目录结构。部分目录结构通常缓存在目录中加快读写速度。
下图总结了文件系统实现的操作结构:
内存中文件系统结构
分区与安装
磁盘布局因为操作系统而异,一个磁盘可以分成多个分区,或者一个卷可以横跨多个磁盘上的数个分区。
“生”磁盘是指没有合适文件系统的磁盘空间。
引导信息能保存在各个分区,它有自己的格式,因为在引导系统时系统并没有文件系统设备驱动程序,所以并不能解释文件系统格式。
根分区包括操作系统内核和其他系统文件,在引导时装入内存,其他卷根据不同操作系统可以在引导时自动装入或在此后手动装入。
虚拟文件系统(Virtual File System,VFS )
绝大多数操作系统都是通过面向对象技术来简化、组织和模块化实现过程,使用这些方法允许不同文件系统类型可以通过同样的结构来实现,这也包括网络文件,采用数据结构和子程序,可以分开基本系统调用和实现细节,因此,文件系统,主要分为三个层次:从上到下依次是文件系统接口->VFS接口->本地文件系统。
第二层VFS为虚拟文件系统,主要由两个作用:
1)VFS层通过定义一个清晰的VFS接口,以将文件系统的通用接口操作和具体实现分开。多个VFS接口的实现可以共存在同一台机器,它允许访问已装在本地的多个类型的文件。
2)VFS提供了在网络上唯一标识一个文件的机制。
VFS能区分本地文件和远程文件,根据文件系统类型来进一步区分不同本地文件。
VFS根据文件系统类型调用特定文件类型操作以处理本地请求,通过调用NFS协议程序来处理远程请求。