文件系统实现
1.文件系统结构
分层设计的文件系统 应用程序:利用系统调用的请求文件操作 open() read() 逻辑文件系统:管理元数据,管理目录结构。元数据包括文件系统的所有结构数据,而不包括内容数据。逻辑文件系统通过给定的文件符号名,来管理目录结构,通过文件控制块(FCB),来维护文件结构。 文件组织模块:指导文件的逻辑块和物理块。将逻辑块地址转换为物理块地址。 基本文件系统:只需要向合适的设备驱动程序发送一般命令就可以对磁盘上的物理块进行读写。每个块由数值磁盘地址决定(驱动器,柱面号,磁道,扇区) I/O控制 :由设备驱动程序和中断处理程序组成。
采用分层的结构实现文件系统吗,最大限度减少重复的代码。相同的I/O控制可以被多个的文件系统使用。每个文件系统有自己的逻辑文件系统和文件组织模块。
2。文件系统实现
实现文件系统需要多个磁盘结构和内存结构。 在磁盘上文件系统可能包含如下信息:
- 如何启动所存储的操作系统
- 总的块数
- 空闲块的数目和位置
- 目录结构
- 各个具体的文件
卷控制引导块: 从该卷引导操作系统所需要的信息。如果该磁盘没有操作系统,那么这块为空。通常为第一块,也被称为引导块,引导扇区。 卷控制块:包括卷的详细信息。分区的块数、块的大小、空闲块的数量和指针、空闲FCB的数量和指针。UFS称之为超级快。 目录结构:UFS中包含文件名和相关的索引节点号 FCB:每个文件一个索引节点 ,文件权限,大小,数据块位置等
虚拟文件系统 VFS
操作系统同时支持多个文件系统。支持无缝的把文件在文件系统类型之间移动。 文件系统的实现主要包括三个层次
- 第一层为文件系统接口,包括open()、read() 、write()、close()
- 第二层 虚拟文件系统层 VFS有两个目的:
- 1.VFS通过定义一个清晰的vfs接口,将文件系统的通用操作与具体实现分开.多个vfs的实现可以共存在一条主机上,允许访问装在本地的多个类型的文件
- 2.VFS提供了网络上唯一标识一个文件的机制,
- 第三层实现文件系统类型或远程文件系统协议
虚拟文件系统是物理系统和文件系统之间的一个接口层,他对每一个物理文件系统的所有细节进行抽象,并为这些不同的文件系统提供了一个统一的系统调用接口。
VFS
- 并不是一种文件系统,只是系统核心的一个管理模块
- 他只存在云内存中,并不存在于任何外存空间
- VFS在系统启动时建立,在系统关闭时消亡
目录实现
可以使用线性表实现目录结构,或者hash表和各种树结构。
4.分配方法
一个磁盘可以存储多个文件,如何为这些文件分配空间以便有效地使用磁盘空间和快速访问文件。常用的磁盘空间分配方法由:来纳许、连接和索引。
连续分配
文件连续分配:用第一块磁盘地址和连续块地数量来定义。
|