[操作系统概念]第八部分——磁盘I/O
2017-02-24 22:10
204 查看
磁盘的分配方法:
连续分配:文件连续存放,则顺序读取寻道时间短,但是文件的大小不好修改,容易在文件与文件之间形成碎片链接分配:文件块使用指针串联起来,解决了连续分配的问题,但是查找起来效率低,只能跟着磁盘里的指针次序查找
索引:比起链接分配,多了一个保存所有文件块指针的索引块,解决直接访问效率低的问题,但是索引块的大小调整是一个问题,索引块本身也可以使用磁盘的分配方法再划分。
对磁盘中空闲块的处理:
使用位向量:在磁盘中使用一块空间用于表示磁盘所有物理块的使用情况,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硬件交互的方式
轮询:I/O控制器内有两个寄存器,忙位寄存器和命令位寄存器,控制器忙碌时忙位寄存器为置1,主机不断读取忙位寄存器(轮询),如果为0表示I/O设备空闲,这时设置命令位寄存器并作读写操作,之后控制器检查到命令位寄存器改变,作I/O操作,并置忙位寄存器为1。如此循环中断:CPU硬件有中断请求线,当I/O硬件从中断请求线发送中断时,CPU响应终端,保存当前运行的程序,跳转到内存中固定的中断处理程序,中断处理程序处理中断请求,关闭中断,处理完后中断返回,CPU恢复到中断前的状态继续执行。
中断涉及一块知识领域,因为各种操作都可以引起中断(从I/O操作到内核态切换),那么为不同的中断设立优先级,确保低优先级的中断不能打断高优先级中断的执行(反之可以)就是一个需要解决的问题,此外,不同中断的中断处理程序不同,这需要有一个中断向量表来记录。
直接内存访问:对于读取大量数据,可以使用专用硬件DMA控制器,CPU只需要对DMA控制器写入需要传输的源地址指针、目标地址指针、传输字节数的信息,剩下的操作DMA就可自己完成,无需CPU介入。
在DMA操作数据传输到内存时,DMA通过到I/O设备的自己特有的总线发送控制命令,此外此时DMA需要控制内存总线,CPU是不可访问内存的,这种现象叫做周期挪用。
I/O通道:使用专门的I/O处理器处理大量频繁的I/O处理
相关文章推荐
- [操作系统概念]第六部分——内存管理(1)
- 读书笔记之: 操作系统概念(第6版)-第三部分 存储管理2(文件系统接口, 文件系统实现)
- [操作系统概念]第六部分——内存管理(2):分页分段
- 读书笔记之: 操作系统概念(第6版)-第四部分 IO系统(I/O系统, 大容量存储结构)
- [操作系统概念]第六部分——内存管理(3):虚拟内存
- 读书笔记之: 操作系统概念(第6版)-第五部分 分布式系统(分布式系统, 保护与安全)+历史概览
- Ubuntu操作系统学习笔记之磁盘基本概念
- 操作系统概念 --- 读书笔记 第12章:磁盘调度
- [操作系统概念]第六部分——内存管理(4):帧分配
- 读书笔记之: 操作系统概念(第6版)-第七部分 案例研究-Windows 2000
- [操作系统概念]第七部分——文件与目录
- 读书笔记之: 操作系统概念(第6版)-第七部分 案例研究-Windows XP
- 《uCOS51移植心得》---七年前之《快快乐乐跟我学51单片机操作系统和IP栈》 第八部分.printf在uCOS51上的移植和浮点数显示
- 读书笔记之: 操作系统概念(第6版)-第七部分 案例研究-Linux
- 操作系统三个简单的部分(Operating Systems in Three Easy Pieces闲来无聊,翻译的)虚拟化部分-原文编号4进程的概念
- 2015年考研核心考点命题思路解密——操作系统 第1章 操作系统引论 考点1 操作系统的基本概念【考题部分】
- 2015年考研核心考点命题思路解密——操作系统 第1章 操作系统引论 考点1 操作系统的基本概念【答案部分】
- [操作系统概念]第二部分——多线程
- [操作系统概念]第三部分——CPU调度
- [操作系统概念]第四部分——同步