I/O
按设备的共享属性可将设备分为什么? 独占设备,进程互斥地访问这类设备,即系统一旦将该类设备分配给某进程,便由该进程独占,直到用完释放。
共享设备,指一段时间内允许多个进程同时访问的设备
I/O设备
I/O设备可以分为两种:块设备(block devices)和字符设备(character devices)。
块设备
字符设备
内存映射I/O
分开编址
统一编址
混合方式
优缺点(统一编址)
中断
如何使用程序来控制I/O设备?一共有三种控制I/O设备的方法:
- 使用程序控制I/O
- 使用中断驱动I/O
- 使用DMA驱动I/O
使用程序控制I/O
使用中断驱动I/O
使用DMA的I/O
I/O层次结构
中断处理程序
中断处理程序的处理过程
- 测定是否有未响应的中断信号
- 保护被中断进程的CPU环境
- 装入相应的设备处理程序
- 中断处理
- 恢复CPU的现场并退出中断
设备驱动程序
设备控制器的组成--三部分组成
设备控制器的功能
- 接受和识别命令
- 数据交换
- 标识和报告设备的状态
- 地址识别
- 数据缓冲区
- 差错控制
设备控制器与处理机的接口
用于实现CPU和设备控制器之间的通信,该接口含有三类信号线:数据线,地址线和控制线
设备控制器与设备的接口
用于连接一个或者多个设备
I/O逻辑
用于实现对设备的控制
与设备无关的I/O软件
通道类型
字节多路通道(Byte Multiplexor Channel)
一种按照字节交叉工作的通道,不适用于连接高速设备,通常含有许多非分配型子通道,每个子通道连接一个I/O设备,这些子通道按照时间片轮转方式共享主通道。
数组选择通道(Block Selector Channel)
可以连接多台高速设备,但只含有一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,直到程序释放通道。利用率很低,但是传输效率很高。
数组多路通道(Block Multiplexor Channel)
数组多路通道结合了数组选择通道和字节多路通道,能使得各个子通道(设备)分时并行操作,含有多个非分配子通道。
通道控制方式
SPOOLING、组成、特点
定义
在多道程序中,利用一道程序模拟脱机输入时的外围控制机功能,再利用另一道程序模拟脱机输出时外围控制机的功能,从而在主机的直接控制下,实现脱机输入输出。 在联机情况下实现的同时外围操作的技术,即为SPOOLing技术,假脱机技术。
组成
- 输入井和输出井
- 输入缓冲区和输出缓冲区
- 输入进程和输出进程
- 井管理程序
特点
- 提高了I/O的速度
- 将独占设备改造为共享设备
- 实现了虚拟设备功能
引入缓冲区的原因?
- 缓和CPU和I/O设备间速度不匹配的矛盾
- cpu的运算速度远远高于I/O设备的速度
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 随着传输速率的提高,需要配置位数更多的寄存器进行缓冲
- 解决数据粒度不匹配的问题
- 缓冲区可以用于解决生产者和消费者之间交换的数据粒度(数据单元大小)不匹配的问题
- 提高CPU和I/O设备之间的并行性
- 先放入缓冲,便可进行下一次操作,提高系统吞吐量和设备利用率
磁盘访问时间包括什么?
寻道时间(T_s)
指的是把磁头移动到指定磁道上花费的时间,该时间是启动磁头的时间(s)和磁头移动(n)条磁道所花费的时间之和,即为 (T_s=m*n+s) 其中m为一个常速,与磁盘驱动器的速度有关,一般磁盘,m为0.2;高速磁盘,m<=0.1
旋转延迟时间(T_τ)
指的是指定扇区移动到磁头下所花费的时间 比如硬盘为15000 r/min,则每转需要4ms,从而平均旋转延时(T_τ)为2ms
传输时间(T_t)
指的是把数据从磁盘读出或者向磁盘写入数据所花费的时间,其大小和每次读写的字节数b和旋转速度有关: (T_t=\frac{b}{r*N}) 其中r为磁盘每秒的转速,N为一条磁道上的字节数 当一次读写的字节数相当于半条磁道上的字节数时,(T_t)和(T_τ)相同,因此,可将访问时间(T_a)表示为: (T_a=T_s+\frac{1}{2r}+\frac{b}{rN})
磁盘调度算法
FCFS
根据进程请求访问磁盘的先后顺序进行调度
SSTF,最短寻道时间算法
选择这样的进程,其要求访问的磁道与当前磁头所在磁道距离最近,使得每次的寻道时间最短,但是不能保证平均寻道时间最短
SCAN算法--电梯调度算法
不仅考虑将要访问的磁道和当前磁道间的距离,更优先考虑的是磁头当前的移动方向。 比如,当磁头向外移动时,SCAN算法考虑的下一个磁道应该是当前移动方向上距离最近的,直到最后再反向移动
CSCAN算法
规定磁头单向移动,当磁头移动到最外磁道并访问后,磁头立即返回到最里面的欲访问磁道,即将最小磁道号和最大磁道号构成循环进行扫描