LINX IO介绍

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模块或I/O接口

  • 操作系统与控制器交互,而非与设备交互设备

控制器的功能
  • 设备控制器是CPU与设备之间的接口

  • 接收和识别CPU或通道发来的命令

  • 实现数据交换

  • 发现和记录设备及自身的状态信息,供CPU处理使用

  • 当连接多台设备时,设备地址识别

设备控制器的组成部分(例)
  • 状态/控制寄存器

  • 数据缓冲寄存器

  • 地址译码器和I/O控制逻辑

  • 外设接口控制逻辑

在这里插入图片描述

轮询方式
  • 流程:

  • 处理器向控制器发送一个I/O命令

  • 如果设备未就绪,则重复测试过程,直至设备就绪

  • 执行数据交换

  • 等待I/O操作完成后,才可以继续其它操作

在这里插入图片描述

  • 处理I/O请求会终止原程序的执行

  • CPU需要等待I/O设备就绪

  • CPU需要参与数据传送

  • CPU和设备只能串行工作,效率低下

中断方式
  • 流程:

  • 处理器向控制器发出一个I/O命令,然后继续执行后续指令

  • 如果该进程不需要等待I/O完成,后续指令可以仍是该进程中的指令

  • 否则,该进程在这个中断上挂起,处理器执行其他工作

  • 控制器检查设备状态,就绪后发起中断

  • CPU响应中断,转向中断处理程序

  • 中断处理程序执行数据读写操作

  • 恢复执行原先的程序

  • 响应中断后会终止原程序的执行

  • CPU不需要等待I/O设备就绪

  • CPU需要参与数据传送

  • CPU和设备部分并行操作,效率有所提高

在这里插入图片描述

直接存储器访问(DMA)方式
  • DMA模块

  • 模仿处理器来控制主存和设备控制器之间的数据交换

在这里插入图片描述

  • 流程:

  • 处理器向DMA模块发出I/O命令

  • 处理器继续执行其它工作,DMA模块负责传送全部数据

  • 数据传送结束后,DMA中断处理器

在这里插入图片描述

  • CPU不会终止原程序的执行

  • CPU只在数据传送的开始和结束时参与

  • 开始时,CPU需要对DMA模块进行初始化

  • 结束时,CPU响应中断,但不必保存现场

DMA方式中的周期窃取

​ 当DMA和CPU同时经总线访问内存时,CPU总是将总线的占有权让给DMA一个或几个主存周期

​ 周期窃取对延迟CPU与主存的数据交换影响不大

​ 数据传送过程是不连续的和不规则的

​ CPU大部分情况下与Cache进行数据交换,直接访问内存较少

在这里插入图片描述

I/O控制方式的演化
  • 采用轮询方式的设备控制器

  • CPU需要等待设备就绪,且参与数据传送

  • 采用中断方式的设备控制器

  • CPU无需等待设备就绪,但响应中断后参与数据传送

  • 通过DMA直接控制存储器

  • CPU在数据传送开始和结束时参与,与主存进行数据交换时不参与

在这里插入图片描述

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发展对总线的影响
  • 单总线

  • 将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通道的多级总线(例)

  • 支持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中断处理程序的功能
  • 检查设备状态寄存器内容,判断产生中断的原因,根据I/O操作的完成情况进行相应的处理

  • 如果数据传输有错,向上层软件报告设备的出错信息,实施重新执行

  • 如果正常结束,唤醒等待传输的进程,使其转换为就绪态

  • 如果有等待传输的I/O命令,通知相关软件启动下一个I/O请求

设备驱动程
  • 包括与设备密切相关的所有代码

  • 从独立于设备的软件中接收并执行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操作的数据

  • 操作

  • 写操作:将数据送至缓冲区,直到装满,进程继续计算,同时系统将缓冲区的内容写到设备上

  • 读操作:系统将设备上的物理记录读至缓冲区,根据要求将当前所需要的数据从缓冲区中读出并传送给进程

单缓冲
  • 操作系统在主存的系统区中开设一个缓冲区

  • 输入:将数据读至缓冲区,系统将缓冲区数据送至用户区,应用程序对数据进行处理,同时系统读入接下来的数据

  • 输出:把数据从用户区复制到缓冲区,系统将数据输出后,应用程序继续请求输出

在这里插入图片描述

双缓冲
  • 使用两个缓冲区

  • 输入:设备先将数据输入缓冲区1,系统从缓冲区1把数据传到用户区,供应用程序处理,同时设备将数据传送到缓冲区2

  • 输出:应用程序将数据从用户传送到缓冲区1,系统将数据传送到设备,同时应用程序将数据传送到缓冲区2

在这里插入图片描述

循环缓冲
  • 操作系统分配一组缓冲区,每个缓冲区度有指向下一个缓冲区的链接指针,构成循环缓冲

  • 解决设备和进程速度不匹配的问题

  • 为系统公共资源,供进程共享并由系统统一分配和管理

在这里插入图片描述

如果您决觉得这篇文章对您有小小的帮助的话,可以关注下方公众号,在公众号同样会推送技术给大家。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值