I/O设备
-
? 现代计算机系统通常配备大量的I/O设备,用于计 -
? 算机系统与外部世界(如用户、其它计算机或电 子设备等)进行信息交换或存储 -
? I/O设备又称为外围设备或外部设备,简称外设 -
I/O操作:内存和I/O设备之间的信息传送操作 不仅影响计算机的通用性和可扩充性,也是计算机 系统综合处理能力及性价比的重要因素
I/O设备的分类
-
按信息传输方向划分 -
? 输入设备:将外界信息输入计算机 -
? 例如:键盘,鼠标,扫描仪等 -
? 输出设备:将计算结果输出 -
? 例如:显示器,打印机等 -
? 输入输出设备:既可以输入信息,也可以输出信息 -
? 例如:磁盘驱动器,网卡等
按交互功能划分
-
人机交互设备:用于用户与计算机之间的交互通信 -
例如:鼠标,键盘,显示器等 -
存储设备:持久性地存储大量信息并快速检索 -
例如:磁盘驱动器,光盘驱动器等 -
机机通信设备:用于计算机和计算机之间的通信 -
例如:网卡,调制解调器等 -
按设备管理划分 -
字符设备:以字符为单位进行信息交换,发送或接收一个字符流 -
人机交互设备大多是字符设备,例如鼠标、显示器等 -
块设备:以固定大小的数据块(块是存储介质上连续信息组成的一个区域)进行信息交换 -
存储设备通常为块设备,例如磁盘驱动器等 -
网络设备:用于与远程设备通信的设备 -
机机通信设备为网络设备,例如网卡等 -
网络设备可以抽象为传送字符流的特殊字符设备,也可以抽象为传送连续小块数据的块设备
设备管理的目标
- 克服设备和CPU速度的不匹配所引起的问题,使主机和设备并行工作,提高设备使用效率
?
?
设备管理的功能
-
设备中断处理 -
缓冲区管理 -
设备的分配和去配 -
设备驱动调度 -
实现虚拟设备
设备管理的层次
-
I/O硬件 -
I/O设备及其接口线路 -
控制部件 -
通道 -
I/O软件 -
系统I/O软件 -
用户空间I/O软件
设备控制器
控制器的功能
-
设备控制器是CPU与设备之间的接口 -
接收和识别CPU或通道发来的命令 -
实现数据交换 -
发现和记录设备及自身的状态信息,供CPU处理使用 -
当连接多台设备时,设备地址识别
设备控制器的组成部分(例)
-
状态/控制寄存器 -
数据缓冲寄存器 -
地址译码器和I/O控制逻辑 -
外设接口控制逻辑
轮询方式
-
流程: -
处理器向控制器发送一个I/O命令 -
如果设备未就绪,则重复测试过程,直至设备就绪 -
执行数据交换 -
等待I/O操作完成后,才可以继续其它操作
-
处理I/O请求会终止原程序的执行 -
CPU需要等待I/O设备就绪 -
CPU需要参与数据传送 -
CPU和设备只能串行工作,效率低下
中断方式
直接存储器访问(DMA)方式
-
DMA模块 -
模仿处理器来控制主存和设备控制器之间的数据交换
-
CPU不会终止原程序的执行 -
CPU只在数据传送的开始和结束时参与 -
开始时,CPU需要对DMA模块进行初始化 -
结束时,CPU响应中断,但不必保存现场
DMA方式中的周期窃取
? 当DMA和CPU同时经总线访问内存时,CPU总是将总线的占有权让给DMA一个或几个主存周期
? 周期窃取对延迟CPU与主存的数据交换影响不大
? 数据传送过程是不连续的和不规则的
? CPU大部分情况下与Cache进行数据交换,直接访问内存较少
I/O控制方式的演化
I/O通道
-
又称为通道控制器、I/O处理器 -
设备控制器包含自身专用的处理器和通道程序 -
I/O指令不再由处理器执行,而是存在主存中,由I/O通道所包含的处理器执行 -
采用四级连接:处理器,通道,控制器,设备 -
可控制多台同类或不同类的设备 -
流程: -
CPU在遇到I/O请求,启动指定通道 -
一旦启动成功,通道开始控制I/O设备进行操作,CPU执行其他任务 -
I/O操作完成后,I/O通道发出中断,CPU停止当前工作,转向处理I/O操作结束事件 -
CPU与通道并行工作 -
带有局部存储器的I/O通道 -
相当于一台自治的计算机 -
I/O指令存储在控制器自带的局部存储器中,并由I/O通道所包含的处理器执行 -
可以控制大量的I/O设备,同时最小化CPU的干涉 -
常用于交互式终端通信,负责包括控制终端在内的大部分任务
I/O发展对总线的影响
I/O软件
I/O软件的层次结构
-
I/O中断处理程序 -
位于操作系统底层,与硬件设备密切相关,与系统其余部分尽可能少地发生联系 -
进程请求I/O操作时,通常被挂起,直到数据传输结束后并产生I/O中断时,操作系统接管CPU后转向中断处理程序 -
当设备向CPU提出中断请求时,CPU响应请求并转入中断处理程序
I/O中断处理程序的功能
-
检查设备状态寄存器内容,判断产生中断的原因,根据I/O操作的完成情况进行相应的处理 -
如果数据传输有错,向上层软件报告设备的出错信息,实施重新执行 -
如果正常结束,唤醒等待传输的进程,使其转换为就绪态 -
如果有等待传输的I/O命令,通知相关软件启动下一个I/O请求
设备驱动程
设备驱动程序的功能
设备驱动程序的层次
-
每个设备驱动程序只处理一种设备,或者一类紧密相关的设备 -
设备驱动程序分为整体驱动程序和分层驱动程序 -
整体驱动程序直接向操作系统提供接口和控制硬件 -
适用于功能简单的驱动程序,效率较高,但较难迁移 -
分层驱动程序将驱动程序分成多层,放在栈中,系统接到I/O请求时先调用栈顶的驱动程序,栈顶的驱动程序可以直接处理请求或向下调用更低层的驱动程序,直至请求被处理 -
适用于功能复杂、重用性要求较高的驱动程序,结构清晰且便于移植,但会增加一部分系统开销
独立于设备的I/O软件
用户空间的I/O软件
-
库函数 -
一小部分I/O软件不在操作系统中,是与应用程序链接在一起的库函数,甚至完全由运行于用户态的程序组成 -
系统调用通常由库函数封装后供用户使用,封装函数只是将系统调用所用的参数放在合适位置,然后执行访管指令来陷入内核,再由内核函数实现真正的I/O操作 -
SPOOLing软件 -
在内核外运行的系统I/O软件,采用预输入、缓输出和井管理技术,通过创建守护进程和特殊目录解决独占型设备的空占问题
I/O缓冲
-
目的 -
解决CPU与设备之间速度不匹配的矛盾,协调逻辑记录大小和物理记录大小不一致的问题,提高CPU和设备的并行性,减少I/O操作对CPU的中断次数,放宽对CPU中断响应时间的要求 -
缓冲区 -
在内存中开辟的存储区,专门用于临时存放I/O操作的数据 -
操作 -
写操作:将数据送至缓冲区,直到装满,进程继续计算,同时系统将缓冲区的内容写到设备上 -
读操作:系统将设备上的物理记录读至缓冲区,根据要求将当前所需要的数据从缓冲区中读出并传送给进程
单缓冲
双缓冲
循环缓冲
如果您决觉得这篇文章对您有小小的帮助的话,可以关注下方公众号,在公众号同样会推送技术给大家。
|