[操作系统概念]第八部分——磁盘I/O

磁盘的分配方法:

  • 连续分配:文件连续存放,则顺序读取寻道时间短,但是文件的大小不好修改,容易在文件与文件之间形成碎片
  • 链接分配:文件块使用指针串联起来,解决了连续分配的问题,但是查找起来效率低,只能跟着磁盘里的指针次序查找
  • 索引:比起链接分配,多了一个保存所有文件块指针的索引块,解决直接访问效率低的问题,但是索引块的大小调整是一个问题,索引块本身也可以使用磁盘的分配方法再划分。

对磁盘中空闲块的处理:

  • 使用位向量:在磁盘中使用一块空间用于表示磁盘所有物理块的使用情况,0表示未使用,1表示使用。则一串向量即可表示磁盘块的使用情况
  • 链表:将空闲块使用链表连起来,问题还是链表的遍历效率
  • 组:类似于链表,但是会在链表的最后一个块中存放所有块的地址以解决链表的效率问题
  • 计数:对于一组一起使用和释放的块,可以简单地记住第一块的地址和组长度,这样总表的长度会减少

磁盘的读写算法

首先,我们已知机械磁盘的读写其实是盘面高速旋转,机械臂的磁头在磁道上顺序读取信息,而I/O请求对文件的需求可能并不是顺序的,很可能散落在各个盘面的不同扇区。在这种读取信息的方法下,如何高效处理操作系统的I/O请求呢?

  • FCFS(先到先服务):和CPU的调度算法一样,简单粗暴,但是效率低。
  • SSTF(最短寻道时间优先):优先响应离磁头近的I/O请求,类似于SJF(最短作业优先)。性能好但是可能导致饥饿
  • SCAN:也被成为电梯算法,因为磁头的运行轨迹和电梯很像,走到一端的尽头,再走到另一端的尽头。在磁盘读写里面,这里的端指的是“柱面”(磁盘盘面的每一圈),例如从磁头当前的柱面,向磁盘的中心柱面读写,处理请求,然后磁头走到盘面同心圆的圆心,再从圆心走到最外层柱面。
  • C-SCAN:SCAN算法的变种,SCAN算法磁头从一端运行到另一端柱面,在运行回来的过程中还要处理I/O请求,而C-SCAN算法在返回的过程中不会再处理请求
  • LOOK:和SCAN类似,但是LOOK不会让磁头一直运行到一端的尽头,而是移动到有请求的最远端,然后就返回。与SCAN算法类似,LOOK算法还有C-LOOk算法,同样是返回过程中不处理请求。

RAID阵列(磁盘冗余阵列)

磁盘物理块出错受损对文件的完整性影响很大,RAID阵列提出对多个磁盘读写同一份数据,用冗余提高可靠性,读取时用并行提高读写性能。
在实现中,RAID的冗余分为很多级别,而且方法并非简单的保存多份文件,也可以是将数据打散分散存储到磁盘阵列上,同时保存校验码。读取时从多个磁盘一起读取,合并成一块数据,再做数据校验。

I/O

主机与I/O硬件交互的方式

  1. 轮询:I/O控制器内有两个寄存器,忙位寄存器和命令位寄存器,控制器忙碌时忙位寄存器为置1,主机不断读取忙位寄存器(轮询),如果为0表示I/O设备空闲,这时设置命令位寄存器并作读写操作,之后控制器检查到命令位寄存器改变,作I/O操作,并置忙位寄存器为1。如此循环
  2. 中断:CPU硬件有中断请求线,当I/O硬件从中断请求线发送中断时,CPU响应终端,保存当前运行的程序,跳转到内存中固定的中断处理程序,中断处理程序处理中断请求,关闭中断,处理完后中断返回,CPU恢复到中断前的状态继续执行。
    中断涉及一块知识领域,因为各种操作都可以引起中断(从I/O操作到内核态切换),那么为不同的中断设立优先级,确保低优先级的中断不能打断高优先级中断的执行(反之可以)就是一个需要解决的问题,此外,不同中断的中断处理程序不同,这需要有一个中断向量表来记录。
  3. 直接内存访问:对于读取大量数据,可以使用专用硬件DMA控制器,CPU只需要对DMA控制器写入需要传输的源地址指针、目标地址指针、传输字节数的信息,剩下的操作DMA就可自己完成,无需CPU介入。
    在DMA操作数据传输到内存时,DMA通过到I/O设备的自己特有的总线发送控制命令,此外此时DMA需要控制内存总线,CPU是不可访问内存的,这种现象叫做周期挪用
  4. I/O通道:使用专门的I/O处理器处理大量频繁的I/O处理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值