文件系统结构
I/O 控制:设备驱动程序和中断处理程序,在内存和磁盘系统中间传输信息。
基本文件系统:向对应设备驱动程序发送命令,读写物理块。管理内存缓冲区
文件组织模块:组织文件的逻辑块、物理块,进行逻辑块与物理块地址的映射。
逻辑文件系统:管理元数据信息,包括文件系统的所有结构,不包括时机数据,
磁盘布局
MBR 位于 0 号扇区,用于引导,分区表给出每个分区的起始、结束地址,其中一个分区被标识为活动分区,随后读入对应活动分区的引导块。
引导块负责启动该分区中的操作系统。
超级块包含文件系统的关键信息,启动时会被读入内存。包括分区的块数量、块大小、空闲块数量和指针、空闲 FCB 数量和指针
空闲块信息:通过位示图或链表给出。
内存布局
- 挂载表,挂载的文件系统分区信息
- 目录结构的缓存包含最近访问目录的信息
- 整个系统打开的文件表,FCB 副本等信息
- 每个进程打开的文件表,包含指向系统打开文件表条目的指针
空闲空间管理
空闲表:记录第一个空闲盘块号和空闲块数、容易产生碎片
空闲链表:
- 空闲盘块链:所有空闲块构成一个空闲链,创建时从链头取下,释放时加入链尾。分配盘块可能多次重复操作,较琐碎
- 空闲盘区链:多个空闲块构成一个空闲盘区,盘区成链。分配回收较为复杂,但效率较高,链短。
位示图:
- 分配:顺序扫描位示图,找出一组空闲块。盘块号 = n (i-1)+j,修改位示图
- 回收:i = (b-1)/n+1,j = (b-1) % n + 1
成组链接法:
把顺序的 n 个空闲盘块号存储在第一个成组链接块中,最后一个空闲块存储下一组空闲盘块。
分配:根据第一个成组链块的指针,分配对应盘块,指针下移,如果指向最后一个空闲块(记录下一组空闲块),将其读入内存作为新的成组链接块,继续分配
回收:指针上移,当移动到顶时,将现在的成组链接号记录,使用新成组链接块指向它
标识空闲空间的位向量表或成组链块,目录区、文件区划分信息存储在超级块中。
虚拟文件系统#
VFS 抽象了四种对象:
超级块对象:表示一个已挂载的文件系统
索引节点对象:表示一个文件
目录项对象
文件对象:与进程相关的已打开文件