设备管理之I/O控制方式

I/O设备的控制方式

程序控制I/O(轮询或忙等待模式)

CPU直接与I/O设备进行通信,负责将用户数据传送到I/O端口
用户程序通过系统调用来使用I/O设备
CPU需要不断查询I/O设备的端口状态,性能较低

中断控制I/O

CPU设定I/O设备的初始值,然后不再忙等待,运行其他进程,当前进程阻塞
I/O设备完成对当前数据的处理后,向CPU发出中断,I/O中断处理程序将负责传送剩余数据
中断控制模式依然造成CPU时间的浪费,而且效率不高

DMA控制I/O

使用独立的DMA控制器代替CPU的工作,I/O设备与DMA通信,DMA在传输完成一个数据缓冲区之后再向CPU发中断
DMA模式减少了中断次数,同时又集成了程序控制和中断控制的优点

I/O通道机制

DMA机制过于简单,有时未必能够提高与CPU并行效率
为此专门增加了I/O处理机,专门负责I/O设备的控制和操作,与CPU并行工作
在早期的计算机系统中,由于无中断机构,处理机对I/O设备的控制,采取程序I/O方 式(Programmed I/O方式)。在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使 CPU 的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。 在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使 I/O 设备无法向CPU报告它已完成了一个字符的输入操作。如下图所示:

设备管理之I/O控制方式

由操作系统的“服务程序”负责将用户数据传送至打印机端口
服务程序顺序传送打印数据,填满接口缓冲区后就等待(空循环)
每次循环中都检查接口缓冲区是否可用,一旦可用就继续传送数据
数据传送完成后“服务程序”结束,用户进程继续运行
缺点:靠CPU以“忙等待”的形式与打印机进行通信,浪费CPU资源

中断驱动I/O控制方式

在现代计算机系统中,对I/O设备的控制,广泛采用中断驱动(Interrupt—Driven)方式。在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。如下图所示:

设备管理之I/O控制方式

“打印服务程序”只将最开始的数据传送至打印机端口,然后阻塞
CPU可继续调度其他进程运行,不浪费CPU时间
一旦打印缓冲区空后,打印机端口发出硬件中断
CPU响应中断,恢复“打印服务程序”运行,继续传送数据
缺点:虽然节省了CPU资源,但是中断响应也消耗较大的系统资源

直接存储器访问DMA控制方式

虽然中断驱动I/O比程序I/O方式更有效,但它是以字(节)为单位进行I/O的,若将这种方式用于块设备的I/O,显然将会是极其低效的。为了进一步减少CPU对I/O的干预, 而引入了直接存储器访问(Direct Memory Access)方式。如下图:

设备管理之I/O控制方式

DMA控制器由三部分组成:

主机与DMA控制器的接口;
DMA控制器与块设备的接口;
I/O控制逻辑;
为了实现控制器与主机之间成块数据的直接交换,必须在DMA控制器中设四类寄存器:
命令/状态寄存器CR;
内存地址寄存器MAR;
数据寄存器DR;
数据计数器DC;

DMA控制I/O的工作流程

设备管理之I/O控制方式

单通道与多通道

设备管理之I/O控制方式

中断处理程序

控制I/O设备的基本方法

用户发出系统调用或直接调用I/O设备,然后用户进程阻塞
设备驱动程序启动I/O操作,然后自己阻塞
I/O设备完成操作后产生中断,对应的中断服务程序更新各种状态信息
用户进程恢复为就绪,继续运行

中断处理程序的工作过程

保存CPU现场信息:各类寄存器(最重要的是PSW)
为中断服务程序设定CPU上下文:TLB、内核堆栈等
应答中断控制器:屏蔽同类中断、打开其他中断
恢复中断服务进程的运行,完成对设备控制器接口的操作
操作结束后进行调度,改变用户进程状态,选择下一个运行程序
用户进程恢复正常运行,此时设备驱动程序无事可干,又陷入阻塞

设备驱动程序

设备驱动程序的特点

用来控制设备控制器的代码和指令,被称为设备驱动程序
目前的体系结构中,设备驱动程序属于操作系统的内核部分
操作系统实现过程中,需要提供标准化的接口函数,用于封装设备驱动程序
设备驱动的存在形式:与操作系统统一编译,或者运行时动态链接

设备驱动程序的工作过程

接受上层用户发送的各类参数,并对输入参数进行检查
对硬件设备的可用性进行检查,并接通或者启动设备
控制设备完成对应的操作(通过设置接口寄存器实现)
实现数据的I/O,同时返回操作的状态结果。

设备驱动工作过程中的特殊考虑

设备驱动的工作方式:同步阻塞或持续运行
同步阻塞模式下,必须考虑支持“中断嵌套”的情况,将其设计为可重入
热插拔系统中,自动的适应设备插入或者卸载

设备驱动程序的统一接口

设备管理之I/O控制方式

用户空间的I/O软件

I/O操作相关的库函数或工具包

实现对OS内核设备I/O管理机制的封装
向应用层用户提供规范、简洁的操作接口
实现I/O管理底层机制与上层用户的交互

假脱机(Spooling)技术

通过应用软件来实现对独占式I/O设备的管理
缓冲+封装:用户只需要管理“特殊I/O文件”
守护进程(Daemon):实现假脱机目录
利用应用程序,将独占式I/O设备虚拟为共享设备

I/O系统管理小结

I/O设备管理面对的各种冲突和矛盾

“独特性”与“兼容性”——标准化环境下的发展选择
“高性能”与“友好性”——系统资源消耗的代价取舍
硬件实现与软件模拟——成本与性能之间的权衡

I/O设备管理的思维方式

统一、规范的软硬件平台是一切技术发展的基础
性能稳定和错误处理机制是一切应用普及的前提
系统观:软硬搭配、高低结合是复杂问题的解决思路
未来趋势:随着硬件成本的降低,软件的作用越来越大
欢迎大家加我微信交流讨论(请备注csdn上添加)

设备管理之I/O控制方式

来源:小段学长

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月11日
下一篇 2021年9月11日

相关推荐