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控制逻辑
- 外设接口控制逻辑
- P.S
- 主机侧(I/O总线)接1、2、3
- 设备侧(接口电缆)接4(多个)
- 数据线连接1和2,地址线和控制线接3,数据状态控制接4
- 1,2与3连接,4与3连接
轮询方式
- 流程:
- 处理器向控制器发送一个I/O命令
- 如果设备未就绪,则重复测试过程,直至设备就绪
- 执行数据交换
- 等待I/O操作完成后,才可以继续其他操作
- 处理I/O请求会终止原程序的执行
- CPU需要等待I/O设备就绪
- CPU需要参与数据传送
- CPU和设备只能串行工作,效率低下
中断方式
- 流程:
- 处理器向控制器发出一个I/O命令,然后继续执行后续指令
- 如果该进程不需要等待I/O完成,后续指令可以仍是该进程中的指令
- 否则,该进程在这个中断上挂起,处理器执行其他工作
- 控制器检查设备状态,就绪后发起中断
- CPU响应中断,转向中断处理程序
- 中断处理程序执行数据读写操作
- 恢复执行原先的程序
- 处理器向控制器发出一个I/O命令,然后继续执行后续指令
- 响应中断后会终止原程序的执行
- CPU不需要等待I/O设备就绪
- CPU需要参与数据传送
- CPU和设备部分并行操作,效率有所提高
直接存储器访问(DMA)
- DMA模块:模仿处理器来控制主存和设备控制器之间的数据交换
- 流程:
- 处理器向DMA模块发出I/O命令
- 处理器继续执行其他工作,DMA模块负责传送全部数据
- 数据传送结束后,DMA中断处理器
- 方式
- CPU不会终止原程序的执行
- CPU只在数据传送的开始和结束时参与
- 开始时,CPU需要对DMA模块进行初始化
- 结束时,CPU响应中断,但不必保存现场
- 周期窃取
- 当DMA和CPU同时经总线访问内存时,CPU总是将总线的占有权让给DMA一个或几个主存周期
- 周期窃取对延迟CPU与主存的数据交换影响不大
- 数据传送过程是不连续的和不规则的
- CPU大部分情况下与Cache进行数据交换,直接访问内存较少
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需要等待设备就绪,且参与数据传送
- 采用中断方式的设备控制器:CPU无需等待设备就绪,但响应中断后参与数据传送
- 通过DMA直接控制存储器:CPU在数据传送开始和结束时参与,与主