认识I/O管理
1. I/O设备的基本概念与分类
- 什么是I/O设备
将数据Input or Output 计算机的外部设备 - 按使用特性
- 人机交互类外部设备
键盘、鼠标 - 存储设备
移动硬盘 - 网络通信设备
调制解调器
- 人机交互类外部设备
- 按传输速率分类
- 低速设备,键盘、鼠标
- 中速设备,打印机
- 高速设备,硬盘
- 按信息交换的单位分类
块设备(传输块,可以寻址/随机访问)比如硬盘
字符设备(传输慢,不可寻址,常采用中断驱动方式),比如鼠标、硬盘
2. 认识I/O控制器
I/O控制器,又称I/O设备的电子部件。因为CPU没有办法直接操控I/O设备的机械部件,所以要用一个电子部件做中介,由CPU控制I/O控制器,I/O控制器来控制具体设备的机械部件
- 机械部件是指我们看得见摸得着的,比如鼠标还有键盘的按钮,移动硬盘的磁臂
- 电子部件,即I/O控制器,通常是一块插入主板扩充槽的印刷电路板
- 主要功能
- 接受和识别CPU发出的命令,要有控制寄存器
- 向CPU报告设备当前的状态,要有状态寄存器,记录设备当前是忙碌还是空闲状态
- 数据交换,要有数据寄存器,用来暂时存放输入或者输出的数据,例如c语言中scanf
- 地址识别,类似内存的地址,主要是为了区分设备控制器中的各个寄存器
- 3部分组成
- CPU与控制器之间的接口,用来实现控制器和CPU之间的通信
- I/O 逻辑,负责识别CPU发出的命令,并对设备发出命令
- 控制器和设备之间的接口,用来实现控制器和设备之间的通信
- 2中寄存器的编制方式
- 内存映射I/O
控制器中的寄存器与内存统一编址
可以采用对内存进行操作的指令来对控制器进行操作 - 寄存器独立编址
控制器的寄存器独立编址
需要设置专门的指令来操作控制器
- 内存映射I/O
3. I/O控制方式
- 程序直接控制方式,CPU发出I/O指令后(比如读指令或写指令),需要一直轮询I/O控制器,等到I/O控制器里的状态控制器表示已经就绪,CPU再读取I/O控制器里的数据控制器里的数据;
- 内存和I/O设备的数据交换需要经过CPU
- CPU利用率低
- 中断驱动方式,CPU发出I/O指令后(比如读指令或写指令),不需要轮询,可以去调度,处理其他进程,等到I/O控制器里的状态寄存器表示已经就绪的时候,发出中断信号,通知CPU继续处理原来阻塞的这个进程
- 内存和I/O设备的数据交换需要经过CPU
- CPU利用率比前者高
- DMA方式(direct memory access/直接存储器存取),CPU发出I/O指令后(比如读指令或写指令),等到DMA控制器里的状态寄存器表示已经就绪的时候,发出中断信号,通知CPU继续处理原来阻塞的这个进程,并直接把一块一块的数据写入内存
- 内存和I/O设备的数据交换不需要经过CPU
- CPU利用率比前者高
- 通道控制方式,通道是一种硬件,可以说是弱鸡版的CPU,它能识别CPU发来的I/O指令,指明数据存放在内存中的什么位置。等到通道里的状态寄存器表示已经就绪的时候,发出中断信号
- 内存和I/O设备的数据交换不需要经过CPU
- CPU利用率最高
4. I/O的软件层次结构
用户在打印店打印,它经历了几个层次结构?
- 用户通过库函数(有的库函数是对系统调用的进一步封装)发出I/O请求
- 用户层软件通过系统调用请求设备独立性软件层服务
- 设备独立性软件层服务根据逻辑设备表LUT会找到对应的设备号,调用对应驱动程序
- 设备驱动程序向“I/O控制器”发出具体命令
- 等待I/O完成的进程应该被阻塞,因此需要进程切换,进程切换需要中断处理(中断的作用,让操作系统内核强行夺回CPU的控制权)
最后,我们简单认识了I/O管理,值得注意的是,设备独立性软件、设备驱动程序和中断处理程序三部分也被称为I/O核心子系统。对I/O调度,假脱机技术,设备分配与回收,缓冲区管理,会在后面补充。