《操作系统》课程笔记(Ch10-文件系统)
文件概念
属性
- 文件名
- 文件ID(唯一标记)
- 类型
- 位置
- 大小
- 保护策略(读、写、执行控制)
- 时间、日期、用户标记
相关结构
-
文件控制块FCB
用于存储与文件相关的信息,与文件一一对应。通常包含文件权限、日期、所有者、大小、数据块的指针。
-
文件目录
-
inode
UNIX中,每一个文件有对应的inode,里面包含文件的信息,与FCB类似。系统内部不使用文件名,而使用inode号码来识别文件。
文件操作
-
打开
打开文件时,需要记录有关信息:
- 文件指针
- 文件的打开计数
- 磁盘位置
- 访问权限
有的操作系统提供锁功能,来避免边写边读,导致值不可复现错误:
- 共享锁:类似于读者锁,多个进程可以并发获取
- 独占锁:类似于写者锁,一次只有一个进程可以获取
-
关闭
-
存取
-
顺序访问
从头到尾访问
-
直接访问
从某点切入访问
-
借助索引访问
-
盘和目录结构
磁盘可以进行分区;盘或者分区可以通过RAID进行保护;包含文件系统的分区通常称为卷。
目录可以视为文件名称构成的符号表。
-
单级目录
最简单的目录,所有文件都在同一目录中,按名访问,文件必须有唯一的名称
-
两级目录
每个用户有自己的UFD。用户搜索文件时,只搜索自己的UFD,解决了名称碰撞。但是这种隔离性让用户之间进行合作变得困难。
-
树形目录
使得用户可以创建自己的子目录并相应地组织文件
-
无环图目录
不同目录可以拥有同一个文件或目录,允许用户之间共享子目录和文件
虚悬指针问题:如果一个用户删除了该文件,而另一个用户不知道
-
解决方法:可以采用引用计数方案。
设文件F1的当前引用计数值为1,先建立F1的符号链接文件F2,再建立F1的硬链接文件F3,然后删除F1。此时,F2和F3的引用计数值分别是?
硬链接:新文件和被链接文件指向同一个节点,引用计数值加1。当删除被链接文件时,引用计数值减1,直到引用计数值为0时,才能真正删除文件。
软链接:又叫符号链接,新文件中只包含了被链接文件的路径名,和被链接文件指向不同的节点。建立软链接文件时,文件的引用计数值不会增加。当被链接文件删除时,新文件仍然是存在的,只是不能通过新文件访问被链接文件。因此删除软链接时,引用计数值不变化。
因此,在本题中,当建立F2时,F1和F2的引用计数值都为1。当再建立F3时,F1和F3的引用计数值就都变成了2。当后来删除F1时,F3的引用计数值为2-1=1。F2的引用计数值仍然保持不变。
-
-
通用图目录
在添加链接时,可能破坏树形结构,形成有环的图。
- 如何避免重复搜索环?可以限制搜索访问次数。
- 如何解决自我引用导致的引用计数不降到0问题?可采用垃圾收集方案,两次遍历文件系统,确定可回收空间,但极为耗时。
挂载
文件系统被访问前,需要先被挂载在挂载点上。
- mount
- unmount
文件共享
- 在多用户系统中,可以通过用户ID和组ID进行访问权限控制
- 在远程文件系统中,可以使用FTP、DFS(分布式文件系统)、WWW(万维网)、C/S架构
- 支持共享的文件系统要考虑一致性语义,即如何处理多用户对文件的视图(一起变动,还是不立即可见?)
保护
文件需要进行访问权限控制。许多系统使用三种用户类型:所有者、组、其他,提供读、写、执行三种权限控制,这样共计3*3=9位控制点,每种类型3位,可用一个八进制数表示。