I/O硬件组成
传输速率分类
低速设备:键盘、鼠标
中速设备:打印机
高速设备:磁盘、光盘
共享属性分类
独占设备:慢速的字符设备
共享设备:快速的块设备
虚拟设备:将独占改为共享(SPOOLing),低速改为高速(虚拟磁盘)
数据传输单位分类
块设备、字符设备、网络设备
设备控制器
机械部分为设备本身,电子部分叫做设备控制器,控制一个或者多个I/O设备,实现和计算机的数据交换,是CPU与I/O设备之间的接口,接收CPU命令且控制I/O设备。
作用:接收和识别命令、数据交换、标识且报告设备状态、地址识别、数据缓存、差错控制。
数据传输的控制方式
1、程序查询方式(polling/轮询):循环查询、CPU与设备串行
2、程序中断方式:减少主机对I/O的干预,让CPU从频繁的查询中解脱
3、直接存储器访问(DMA):从以字节为单位扩展到以数据块为单位,只在传输的开始和结束时有CPU干预,传输是在控制器控制下完成的。
4、通道方式:进一步减少CPU干预,从对一个控制块进行干预变成对一组数据块进行干预,实现CPU、通道、I/O设备三者并行。
I/O软件组成
I/O软件的目标
1、提供设备的独立性(设备无关性):应用程序独立于使用的物理设备(独立于设备的类型,独立于同类设备的台号),设备统一命名(设备名不依赖设备,在OS中规定不直接使用物理设备名,而用逻辑设备名,对应一类设备,由操作系统完成映射)
2、出错处理:尽可能在硬件层处理,低层软件无能为力才交给高层处理。
3、缓冲技术:使系统的到达率和离去率相匹配(即使I/O设备与CPU的处理速度相匹配),提高吞吐能力。
4、设备分配:独占设备(静态分配),共享设备(动态分配),虚拟设备(共享设备)
I/O软件的组成
基本思想:按分层思想进行,较低层使较高层独立于硬件,较高层软件向用户提供简单的、功能强的接口。
结构:
一般运行过程:用户软件->设备独立软件->设备驱动器->硬件,完成后:硬件->中断>设备驱动器->设备独立软件->用户软件
中断处理层:
中断处理由操作系统完成,进程在开始I/O后阻塞起来,I/O完成后产生中断,向CPU报告,CPU唤醒进程,进行中断处理(唤醒进程、保护中断进程的CPU环境、分析中断原因且转入相应的中断处理程序中,中断处理(检查设备状态寄存器内容,看是否正常结束,正常则结束中断,还有请求则继续,如果存在错误,则判断是否可以重传,可以则发送传输命令,不可以则向上层报告错误)、恢复现场)。
设备驱动程序:
与设备密切相关的代码放在其中,每个设备驱动器处理一种设备;
接收设备无关的上层软件的抽象请求,并执行;
是请求I/O的进程和设备控制器之间的转换程序,将进程的请求转换后传给控制器,也把控制器记录的设备状态和完成情况反馈给I/O进程;
处理方式:不设置专门的设备处理进程,只为各类设备提供驱动程序供用户/系统进程调用。
设备独立软件
缓冲技术:
单缓冲:
双缓冲:
用户I/O软件
概括
磁盘管理
磁盘调度算法
下面所说调度均为HDD调度
磁盘寻道请求序列统一为:98,183,37,122,14,124,65,67
初始位置:53
先来先服务(FCFS):先到的请求先运行。
53,98,183,37,122,14,124,65,67
最短寻道时间优先(SSTF):选择离当前位置距离最近的道进行读取。
53,65,67,37,14,98,122,124,183
扫描法SCAN:按照电梯原理,从最小号扫描到最大号(假设序号为0~199),需要读取就读取。
53,37,14,0,65,67,98,122,124,183
53,65,67,98,122,124,183,199,37,14
循环扫描法(C-SCAN):类似将整个盘从头到尾连接,即扫描到199后再到0,1,2…
53,37,14,0,199,183,124,122,98,67,65
53,65,67,98,122,124,183,199,0,14,37
查找法LOOK:从序列中的最小号扫描到最大号(假设序号为0~199),需要读取就读取。
53,37,14,65,67,98,122,124,183
53,65,67,98,122,124,183,37,14
循环查找法C-LOOK:与C-SCAN类似…
在大部分情况下,如果只提到SCAN,则指本文中的LOOK法