lab8文件系统与IO子系统原理

文件描述符

文件访问方式:进程访问文件数据前必须先打开文件
内核跟踪进程打开的所有文件:操作系统为每个进程维护一个打开文件表,文件描述符是打开文件的标识,即 文件描述符是操作系统在打开文件表中维护的打开文件状态和信息,其中包括:
访问模式:
顺序访问:按字节顺序一次读取(大多数)
随机访问:从中间读写(不常用,但很重要,比如虚拟内存中把内存页存储在文件)
索引访问:依据数据特征索引,操作系统通常不提供文正索引访问,可以在上面建数据库,数据块建立索引内容

网络/分布式文件系统

a. 例如:NFS,SMB,AFS,GFS
b. 文件可以通过网络被共享,文件位于远程服务器,客户端远程挂载服务器文件系统,标准系统文件访问被转换成远程访问,要有标准文件共享协议。
c. 面临更多挑战,例如客户端用户辨别、一致性问题、错误处理模式。

虚拟文件系统:

虚拟文件系统的提出是为了面对多种不同的文件系统对上提供一种统一的接口。
在这里插入图片描述

IO子系统

I/O数据传输

CPU与设备控制器的数据传输:
1、程序控制I/O:
a. 通过CPU的in/out或者load/store传输所有数据
b. 特点是硬件简答,编程容易,但是消耗CPU时间,适用于简单的小型的设备I/O
2、直接内存访问(DMA)
a. 设备控制器可直接访问系统总线
b. 控制器直接与内存湘湖传输数据
c. 特点是设备传输数据不影响CPU,只需要CPU参与设置,适用于高吞吐量的I/O。
在这里插入图片描述

磁盘调度

通过优化磁盘访问请求顺序来提高磁盘访问性能。
1、寻道时间是磁盘访问最耗时的部分
2、同时会有多个在同一磁盘上的I/O请求
3、随机处理磁盘访问请求的性能表现很差
调度算法:
在这里插入图片描述
为什么需要磁盘调度?
如上图所示,盘片是匀速旋转的,如果有一个磁盘访问序列,不进行优化而随机访问的话,效率很低
在这里插入图片描述
1、FIFO:先进先出,按顺序
2、SSTF(最短服务时间优先):选择离磁臂当前位置最近的请求执行
3、扫描算法:磁臂在一个方向上移动,访问所有未完成的请求,直到磁臂到达该方向上最后的磁道,也称电梯算法
4、循环扫描算法:限制为仅在一个方向上扫描
5、C-LOOK算法:磁臂先到达该方向上最后一个请求的位置,然后立即反转
6、N步扫描算法:一侧请求过多时,磁头会有粘着现象,后面磁道无法响应,将磁盘请求队列分成长度为N的子队列,按FIFO算法依次处理所有队列,扫描算法处理每个队列
7、双队列扫描算法:只有两个队列,交替使用扫描算法处理两个队列,新生成的I/O请求放入另一个队列中。