文件系统层次结构
用户接口
文件系统需要向上层的用户提供一些简单易用的功能接口,这层就是用于处理用户发出的系统调用请求(read,write,open,close
文件目录系统
用户是通过文件路径来访问文件的,因此这一层需要根据用户所给出的文件路径找到响应的FCB或索引结点,所有和目录,目录项相关的管理工作都在本层完成,如:管理活跃的文件目录表,管理打开文件表等
存取控制模块
为了保证文件数据的安全,还需要检查用户是否有访问权限,这一层主要完成了文件保护相关工作
逻辑文件系统与文件信息缓冲区
用户指明想要访问文件记录号,这一层需要将记录号转换为对应的逻辑地址
物理文件系统
这一层需要把上一层提供的文件逻辑地址转换为实际的物理地址
辅助分配模块
负责文件存储控件的管理,即负责分配和回收存储控件
设备管理模块
直接与硬件交互,负责和硬件直接相关的一些管理工作,如:分配设备,分配设备缓冲区,磁盘调度,启动设备,释放设备等
一个操作的整体过程
假设某用户请求删除文件"学生信息.xlsx"的最后100条记录
1:用户需要通过操作系统提供的接口发出上述请求--用户接口
2:由于用户提供的是文件的存放路径,因此需要操作系统一层层地查找目录,找到对应的目录项--文件目录系统
3:不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限--存取控制模块
4:验证了用户对文件的操作权限后,需要把用户提供的"记录号"转变成对应的逻辑地址--逻辑文件系统与文件信息缓冲区
5:知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址--物理文件系统
6:要删除这条记录,必定要对磁盘设备发出请求,--设备管理程序模块
7:删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘快回收--辅助分配模块
文件目录
文件控制块(FCB) 重要的是文件名和文件物理地址
文件检索过程(目录遍历)
平均遍历目录项数 (1+n) / 2 n指需要的物理块的数目
I node
把文件名和文件描述信息分开,文件的描述信息形成一个单独的索引节点,叫做I node,这样简化的文件目录为,文件名对应i结点指针
单级目录结构,二级目录结构,多级目录结构,是为了解决文件系统中存在重复的文件名
树型目录结构不适合文件共享,提出无环图目录结构.无环图在树型基础上将一些文件名执行同一份文件,形成无环图
文件索引结点包含FCB中除了文件名以外的信息,通过索引结点指针指向索引结点,是文件索引瘦身策略
共享方式
基于索引结点的共享方式硬链接
两个文件索引结点指针指向同一个文件索引结点
文件索引结点维持一个计数,记录使用的该结点的个数,只有计数为0才可以删除
基于符号链的共享方式(软连接)
不使用索引结点,而是保持一个索引和指向的文件中记录文件位置,
I/O
设备独立性
为了提高操作系统的可适应性和可拓展性
实现方法
引入逻辑设备和物理设备
在应用程序中,使用逻辑设备名来请求使用某类设备
而系统在实际执行时必须使用物理设备名
系统必须具有将逻辑设备名转为物理设备名的功能
类似于设备存储管理中的逻辑地址和物理地址的概念
I/O控制方式
轮询(基本不用)
使用中断的可编程I/O方式(广泛使用)
可使CPU与I/O设备并行工作
直接存储器访问
DMA
进一步提高了CPU与I/O设备的并行操作程度
I/O通道控制方式
缓冲区
缓冲区是一个存储区域,可以由专门的硬件组成,更多的是利用内存,
缓冲
设备之间传输的数据暂时存放在内存中
解决设备之间的速度差异
协调传输数据大小不一致
维持拷贝语义
引入缓冲的主要原因
缓和CPU和I/O设备间速度不匹配的矛盾
减少对CPU的中断频率
解决数据粒度不匹配的问题
提高CPU与I/O设之间的并行性
假脱机
为了缓和CPU的高速性与I/O的低速性之间的矛盾而引入了脱机输入,脱机输出技术
利用一道其中一道程序,模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到告诉磁盘上
用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备
特点
提高了I/O的速度
将独占设备改造为共享设备
实现了虚拟设备功能