操作系统概念第九版期末复习
第十二章 File-System Implementation
文件系统在磁盘上存储几个重要的数据结构
- 卷控制块
- 目录控制块(文件名和指向相应FCB的指针)
- 文件控制块FCB(文件大小信息权限等)
内存中还存储了几个关键数据结构:
- 内存中挂载表
- 内存中目录缓存(保存了最近访问目录的信息)
- 系统打开文件表
- 进程打开文件表
- 缓冲区保存最近访问的文件系统块(读取或写入)
新建一个文件,需要新建一个FCB,并且更新目录信息
打开文件的步骤:先搜索系统打开文件表,如果有这个文件,那么进程打开文件表会新建一个指针指向这个文件。如果没有,搜索目录结构找到这个文件,将它的FCB复制到系统打开文件表中,然后步骤同上
关闭文件时,移除进程打开文件表的指针,系统打开文件表引用计数减一,更新的数据被写回磁盘
虚拟文件系统
虚拟文件系统提供一种面向对象的文件系统实现方式。虚拟文件系统将同一系统调用接口(API)给不同的操作系统使用
目录实现
- 线性表
- 哈希表
分配方式
在磁盘上存储文件的有三种主要方法:
- 连续(简单,支持顺序访问和随机访问,性能优越。但有外部碎片问题和文件大小声明问题,可以给文件分配一个或n个拓展块)
2. 链接(不涉及外部碎片,不需要预先已知的文件大小,并允许文件随时动态增长。但仅适用于顺序访问。分配块群可减少指针浪费空间,但有内部碎片。指针可能丢失或损坏也是个大问题。FAT File Allocation Table是链接列表的变体,所有链接都存储在表中。可以缓存在内存中提高速度)
- 索引( 在 UNIX inode 中使用混合方案,其中前 12 个数据块指针直接存储在 inode 中,然后一级、二级和三级索引指针提供对更多数据块的访问。非常适合顺序和随机访问)
磁盘空闲文件管理
- 使用标识位标识每个磁盘块是否被分配
- 链接列表还可用于跟踪所有可用块。通常,系统只是从列表的开头添加和删除单个块。
- Grouping
- Counting(保留第一个可用块的地址和后面可用块的计数)
一致性检查
将目录结构中的数据与磁盘上的数据块进行比较,并尝试修复不一致