操作系统-I/O系统
I/O管理概述
- I/O管理示意图, 参考这里
I/O的特点
- I/O性能经常成为瓶颈
- 与文件系统关系密切
- 操作系统复杂原因之一:
- 各个I/O设备之间速度差异大
- 应用
- 控制接口分复杂性
- 传送单元
- 数据表示
- 错误条件
设备的分类–按数据组织分
- 块设备
- 以数据块为单位存储, 传输信息, 特点是传输速度快, 可以支持随机读取
- 字符设备
- 以字符为单位传输信息, 传输速度低, 不可寻址
- 或者
- 存储设备(磁盘, 磁带)
- 传输设备(网卡)
- 人机交互设备(显示器, 鼠标, 键盘)
- 资源分配角度
- 独占设备: 在一段时间内只有一个进程才能使用(打印机, 磁带)
- 共享设备: 在一段时间内可以多个进程共同使用(磁盘, 硬盘)
- 虚设备: 模拟出来的, Spooling技术就是将独占的设备改造成共享的设备
I/O管理的目标和任务
- 概念: 控制设备,完成数据从I/O设备到内存的交换
- 目标1
- 设备的分配和回收
- 执行设备驱动程序, 实现真正的I/O操作
- 设备中断处理: 处理来自设备中断的信号
- 缓冲区管理: 管理I/O缓冲区
- 目标2
- 建立方便, 统一独立于设备的接口
- 就是方便用户使用, 屏蔽底层的硬件的接口
- 建立方便, 统一独立于设备的接口
- 目标3
- 充分利用各种技术(通道, 中断, 缓冲, 异步I/O等) 提高CPU与设备, 设备与设备之间的并行工作的能力, 充分利用资源, 提高资源利用率.
- 目标4
- 保护: 设备传输的数据应该是安全的, 保密的
I/O硬件组成
- 通常I/O设备由硬件和电子部分组成
- 机器部分: 设备本身
- 电子部分: 适配器,将计算机发来的数据信息->电子信号或者反之
- 按照主机与设备之间约定的格式和过程接受计算机发来的数据和控制信号或向主机发送数据和状态信号
- 实现内部缓冲, 增强性能
设备接口-控制器的作用
- 操作系统将命令写入控制器的接口寄存器, 并读出状态信息和结果信息
- 当控制器接受一条命令后, 可独立于CPU完成指定操作, CPU可以去干别的事了, 等控制器完成了命令后向CPU发出一条中断指令, 控制转给操作系统, 通过读控制寄存器中的信息, 获得操作结果和设备状态
- 控制器和设备之间的接口通常是低级接口
- 控制器的任务: 将接收到的字节流->字节块->检错->内存
I/O端口部分
- 接口电路中,每个寄存器具有的唯一的地址, 是个整数
- 所有I/O端口地址形成I/O端口空间(受到保护)