操作系统-operating-system-4
I/O设备及分类
- I/O设备用于计算机与外围世界的交互;
- I/O设备又称为外围设备或外部设备,简称外设;
- I/O操作:内存和I/O设备之间的信息传送操作
I/O影响计算机的通用性和可拓展性,是计算机系统综合处理能力及性价比的重要因素;
按信息传输方向划分
输入设备:将外界信息输入计算机
- 例如:键盘,鼠标,扫描仪等
输出设备:将计算结果输出
- 例如:显示器,打印机等
输入输出设备:既可以输入信息,也可以输出信息
- 例如:磁盘驱动器,网卡等
按交互功能划分
人机交互设备:用于用户与计算机之间的交互通信。
- 例如:鼠标,键盘,显示器等
存储设备:持久性地存储大量信息并快速检索
- 例如:磁盘驱动器,光盘驱动器等
机机通信设备:用于计算机和计算机之间的通信
- 例如:网卡,调制解调器等
设备管理
目标
克服设备和CPU速度的不匹配所引起的问题,使主机和设备并行工作,提高设备利用效率
功能
- 设备中断处理
- 缓冲区管理
- 设备的分配和去配
- 设备驱动调度
- 实现虚拟设备
层次
- I/O硬件
- I/O设备及其接口线路
- 控制部件
- 通道
- I/O软件
- 系统I/O软件
- 用户空间I/O软件
设备控制器
- 通常I/O设备的机械部件和电子部件是分开处理的,电子部件又被称为设备控制器
- 设备控制器又称为设备适配器、I/O控制器、I/O控制接口,简称I/O模块或I/O接口
- 操作系统与控制器交互,而非与设备交互
功能
- 设备控制器是CPU与设备之间的接口
- 接受和识别CPU或通道发来的命令
- 实现数据交换
- 发现和记录设备及自身的状态信息,供CPU处理使用
- 设备地址识别
组成
控制方式
轮询方式
- 处理I/O请求会终止原程序的执行
- CPU需要等待I/O设备就绪
- CPU需要参与数据传送
- CPU和设备只能串行工作,效率低下
中断方式
- 响应中断后会终止原程序的执行
- CPU不需要等待I/O设备就绪
- CPU需要参与设备传送
- CPU和设备部分并行操作,效率有所提高
直接存储器访问(DMA)方式
- 模仿处理器来控制主存和设备控制器之间的数据交换
- CPU不会终止原程序的执行
- CPU只在数据传送的开始和结束时参与
- 开始时,CPU需要对DMA模块进行初始化
- 结束时,CPU响应中断,但不必保存现场
DMA中的周期窃取
- 由于CPU和DMA同时占用总线访问内存,可能存在冲突,所以当出现冲突时,CPU总是将总线的占有权让给DMA一个或几个主存周期;
- 这种方式对CPU与主存的交换影响不大
- 数据传送过程本身就不连续和不规则
- CPU主要与cache进行数据交互,很少直接访问内存
控制方式演化
- 采用轮询方式的设备控制器
- CPU需要等待设备就绪,且参与数据传送
- 采用中断方式的设备控制器
- CPU无需等待设备就绪,但响应中断后参与数据传送
- 通过DMA直接控制存储器
- CPU在数据传送开始和结束时参与,与主存进行数据交换时
不参与
- CPU在数据传送开始和结束时参与,与主存进行数据交换时
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指令存储在控制器自带的局部存储器中,并由I/O
- 可以控制大量的I/O设备,同时最小化CPU的干涉
- 常用于交互式终端通信,负责包括控制终端在内的
大部分任务
I/O发展与总线
单总线
- 将CPU、主存和I/O模块连接到同一组总线上
- 优点:结构简单,易于扩充
- 缺点:主存需要和I/O模块共用总线;设备增多会造成总线变长,进而增加传输时延;无法适用于大量高速设备
传统的三级总线
- 传统的三级总线(例)
- 主存和Cache通过主存总线传送数据,主存总线和扩展总线上的I/O设备之间传送数据通过扩展总线接口缓冲
- 优点:主存与I/O之间的数据传送与处理器的活动分离;可以支持更多的I/O设备
- 缺点:不适用于I/O设备数据速率相差太大的
采用南北桥的多级总线
- 采用南北桥的多级总线(例)
- 通过存储总线、PCI总线、E(ISA)总线分别连接主存、高速I/O设备和低速I/O设备
- 优点:可以支持不同数据速率的I/O设备
采用I/O通道的多级总线
- 采用I/O通道的多级总线(例)
- 支持CPU、主存和多个I/O通道之间的数据传送
- 支持I/O通道和I/O控制器,以及I/O控制器和设备之间的数据传送
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 软件工程专业技术分享!
评论