I/O设备
1.I/O设备的类型
- 传输速率
低速设备、中速设备、高速设备
鼠标、键盘 每秒几十个字节到几百个字节
打印机 每秒数千个或数万个字节
磁盘机 每秒数百千个字节或数十兆字节
- 信息交换单位
分类:
字符设备和块设备
512B~4KB 可寻址 信息存取的数据块
用于数据的输入和输出,基本单位是字符
- 共享属性
分类:
独占设备
只允许一个用户进程使用的设备
共享设备
允许多个进程使用的设备
虚拟设备
通过虚拟技术将一台独占设备改造成若干台逻辑设 备,供若干个用户进程同时使用
拓展:
用共享设备去模拟独占设备工作的过程,进而产生多个虚拟的独占设备
2.设备与控制器之间的接口
- 数据信号线
- 状态信号线
- 控制信号线
- 设备控制器
功能
组成
3.I/O设备通道
3.1类型
字节多路
- 以字节交换方式工作
- 含有若干个非分配型子通道
- 每个子通道连接一台I/O设备
- 按时间片轮转方式共享主通道
- 用于中低速设备
数组选择
- 以数组方式进行数据传送
- 只有一个分配型子通道
- 不允许其他设备使用该通道
数组多路
- 字节多路和数组选择的综合
3.2功能
特殊的处理机,具有执行I/O指令的能力
通过执行通道程序来控制I/O操作
指令单一
通道没有自己的内存
4.多通路I/O系统
存储器到设备之间有多通道
提高运输速率
5.总线系统
ISA和EISA总线
局部总线
VESA
PCI
I/O控制方式
1.程序I/O方式
CPU要不断地测试I/O设备的状态
没有中断机构
让I/O设备无法向CPU报告已完成一个字符的输入操作(是CPU没有办法终止)
2.中断驱动I/O控制方式
加入中断
在输完一个数据时,需要CPU花费极短时间去做中断处理
3.DMA I/O控制方式
DMA
组成
命令/状态寄存器CR
接收从CPU发来的I/O命令
有关控制信息
设备的状态
内存地址寄存器MAR
输入时,存放把数据从设备传送到内存的起始目标地址
输出时,存放由内存到设备的内存源地址
数据寄存器DR
存储数据
从设备到内存
从内存到设备
数据计数器DC
本次CPU要读或写的字节数
工作过程
- 设置MAR和DC初值
- 启动DMA传送命令
- 挪用存储器周期传送数据字
- 存储器地址增一
- 字节数寄存器减一
特征
传输单位是数据块
从设备和内存之间直接交互
仅在数据块的传送开始和结束时,才需要CPU干预,在控制器的控制下完成传送
4.I/O通道控制方式
1.进一步减少CPU的干预
2.对一组数据块的相关操作
3.通道程序
向I/O通道发送一条I/O指令,以给出其所要执行的通道程序首地址和要访问的设备
通道执行通道程序即可完成CPU的I/O任务
组成
- 操作码
- 内存地址
- 计数
- 通道程序结束位P
- 记录结束标志R
缓冲管理
缓冲
- 单缓冲
- 双缓冲
- 循环缓冲
缓冲池
- 既可以用于输入又可用于输出
- 空缓冲区
队列emq
- 装满输入数据的缓冲区
队列inq
- 装满输出数据的缓冲区
队列outq
设备分配
1.设备独立性
执行所有设备的公有操作
对独立设备的分配与回收
映射
对设备进行保护,禁止用户直接访问设备
缓冲管理
差错控制
向用户层(或文件层)软件提供统一接口
映射
好处
2.数据结构
- 设备控制表
- 控制器控制表
- 通道控制表
- 系统设备表
3.考虑因素
- 设备的固有属性
- 设备分配算法
- 设备分配中的安全性
4.分配程序
基本的设备分配程序
设备分配程序的改进
5.设备分配
I/O软件的目标
- 与具体设备无关
- 统一命名
- 对错误的处理
- 缓冲技术
- 设备的分配和释放
- I/O控制方式
I/O系统的层次
用户空间的软件
与设备无关的软件
设备驱动程序
功能
- 接受由I/O进程发过来的命令和参数,并将命令中的抽象要求转化为具体要求
如磁盘号转换为磁盘的盘面、磁道号及扇区号
- 检查用户I/O请求的合法性
了解I/O设备的状态
传递有关参数
设置设备的工作方式
- 发出I/O命令
如果设备空闲,便立即启动I/O设备去完成指定的操作
如果设备忙碌,则请求块挂在设备队列上等待
- 及时响应由控制器或通道发来的中断请求并进行处理
对于设置有通道的计算机系统,还可以根据用户的I/O请求,构成通道程序
设备处理方式
- 为每一类设备设置一个进程,专门用于执行这类设备的I/O操作
- 在系统中设置的一个I/O进程,专门用于执行系统中所有各类设备的I/O操作
- 不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序
特点
- 在I/O的进程与设备控制器之间的一个通信和转换程序
- 与I/O特性相关,不同类型的设备应该配置不同的驱动程序
- 与硬件相关,因此需要汇编语言
- 驱动程序与I/O设备所采用的控制方式紧密相关
处理过程
将抽象要求转换为具体要求
检查I/O请求的合法性
读出和检查设备的状态
传送必要的参数
工作方式的设置
启动I/O设备
中断处理程序
主要工作
- 进程上下文切换
- 对处理中断信号源进行测试
- 读取设备状态和修改进程状态
工作流程
- 唤醒被阻塞的程序
- 保护被中断进程的CPU环境
- 转入相应的设备处理现场
- 中断处理
- 恢复被中断进程的现场
硬件
6.SPOOLing技术
为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入、脱机输出技术
把低速I/O设备上的数据传送到高速磁盘上
实现
利用其中的一道程序,来模拟脱机输入时的外围控制机功
再用另一道程序来模拟脱机输出时外围控制机的功能
共享打印机
将输出进程在输出井中申请一个空闲磁盘块区,并将打印的数据送入其中
输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入,再将该表挂到请求打印队列
特点
- 提高I/O速度
- 将独占设备改造共享设备
- 实现了虚拟设备功能
磁盘存储器管理
1.磁盘性能简介
数据的组织和格式
磁盘类型
固定头磁盘
在每条磁道上都有一读/写磁头
移动头磁盘
每一个盘面仅配有一个磁头
移动磁头仅能以串行方式读/写
磁盘访问时间
寻道时间
启动磁臂的时间s与磁头移动n条磁道所花费的时间之和
Ts=m×n+s
m是一常数,与磁盘驱动器的速度有关
旋转延迟时间
指定扇区移动到磁头下面所经历的时间
传输时间
Tt的大小与每次所读/写的字节数b和旋转速度有关
r为磁盘每秒钟的转数;N为一条磁道上的字节数
总时间
2.磁盘调度
- 先来先服务FCFS
按进程请求访问磁盘的先后次序进行调度
- 最短寻道时间优先SSTF
选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象
可能产生“饥饿”现象
- 扫描(SCAN)算法
当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象
- 循环扫描(CSCAN)算法
磁头移到最外磁道时立即又返回到最里磁道
消除了对两端磁道请求的不公平
N-Step-SCAN
N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列
每处理一个队列时又是按SCAN算法
当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其他队列
FSCAN调度算法
一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理
将新出现的所有请求磁盘I/O的进程,放入另一个等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理
磁盘高速缓存
1.逻辑上属于磁盘,而物理上是驻留在内存中的盘块
2.形式
在内存中开辟一个单独的存储空间来作为磁盘高速缓存
把所有未利用的内存空间变成一个缓冲池,供请求分页系统和磁盘I/O时共享
当磁盘I/O的频繁程度较高时,该缓冲池可能包含更多的内存空间
而在应用程序运行得较多时,该缓冲池可能只剩下较少的内存空间
3.数据交付方式
数据交付
直接将高速缓存中的数据,传送到请求者进程的内存工作区
指针交付
只将指向高速缓存中某区域的指针,交付给请求者进程
数据量小,节省了时间
置换算法
周期性地写回磁盘
UNIX方法
MS-DOS方法
提高速度的方法
- 提前读
- 延迟写
- 优化物理块的分布
- 虚拟盘