输入输出管理
0x00 I/O设备
0x00 分类
按传输速率分类为:
- 低速设备:键盘鼠标
- 中速设备:打印机
- 高速设备:磁带机,磁盘,光盘
按信息交换的单位分类:
- 块设备:数据存储以数据块为单位,如磁盘,传输速率高可寻址,可以进行随机读写
- 字符设备:数据存储的基本单位是字符,如打印机,传输速率低不可寻址,输入输出时采用中断驱动方式
常见的设备及介质:
- CD-ROM为光盘存储器,强调只读,说其只能写入一次是错误的
- Flash存储器可以实现随机存取,但其从原理上讲仍为ROM
ROM即只读存储器,只能读出不能写入,信息永久保存
0x01 控制方式
-
程序直接控制:每读入一个字,CPU都要对外设状态进行循环检查,造成了CPU资源的极大浪费,且CPU与I/O设备之间只能串行工作
-
中断驱动方式:允许I/O设备打断CPU而请求服务,数据中的每个字在存储器和I/O控制器之间的传输都必须经过CPU,仍然会消耗较多的CPU
-
DMA方式:基本单位是数据块,所传送的数据直接送入内存,在传送一个或多个块开始和结束时才需要CPU干预,在DMA控制器下完成
DMA往往连接高速存储器,其优先级高于中断请求,以防数据丢失。
-
通道控制方式:I/O通道是指专门负责输入输出的处理机,可以实现CPU,通道和I/O设备之间的并行操作,有效提高整体的利用率,I/O通道与CPU共享内存,没有自己的内存,通道程序放在内存中
CPU启动通道,不管成功与否,通道都要回答CPU,通过执行通道程序来实现数据的传送,通道在执行通道程序时与CPU并行,当通道完成通道程序的执行时(即数据传送结束时),便产生I/O中断向CPU报告。
CPU通过I/O指令来控制通道,而不是通过中断,中断服务程序最后一条指令是转移指令。
实例比较:
一个客户(CPU)向裁缝(I/O设备)订了一批衣服(寻求了一段输入)
- 程序直接控制:裁缝没有客户的联系方式,客户必需每隔一段时间去看看裁缝把衣服做好了没有
- 中断驱动方式:裁缝有客户的联系方式,但是每做完一件,都要给客户打电话去拿,每完成一件都要让客户拿一次,比较耗费客户的时间
- DMA方式:客户雇了一个秘书,给秘书规定好在什么地方拿,裁缝做完了,就给秘书打电话,秘书到指定的地方拿,每拿到100件衣服就像客户汇报一次,当客户跟多个裁缝订了货,一个秘书只对一个裁缝的货负责,大大节省了客户的时间
- 通道方式:赋予了秘书更大的自主权,秘书可以决定把衣服放在哪,同时也可以决定每100件还是每1000件向客户报告一次,一个秘书可以对多个裁缝负责
0x02 子系统层次结构
- 用户层IO软件:大部分运行在操作系统内部,小部分在用户层
- 设备独立性软件:用于实现用户程序与设备驱动器的统一接口,设备命令以及设备保护、设备的分配与释放
- 设备驱动程序:与硬件直接相关
- 中断处理程序:保存被中断进程的CPU环境,处理完并回复被中断进程的现场
- 硬件了呗
0x02 I/O核心子系统
主要服务有:
- I/O调度:确定一个好的顺序来执行I/O请求,因为应用程序给出的系统调用顺序不一定是最优的
- 缓冲与高速缓存
- 磁盘高速缓存:逻辑上属于磁盘,物理上为驻留在内存中的磁盘块,高速缓存中有的磁盘中必然有
- 缓冲区:缓解CPU和I/O设备之间速度不匹配的矛盾,提高CPU与I/O设备的并行性,减少中断频率,高速设备与低速设备的通信都要经过缓冲区,
- 设备分配与回收:依据用户的I/O请求来分配所需设备
- 独占式使用设备
- 分时式使用设备
- 使用SPOOLing方式使用的外部设备,就是假脱机技术,实质上为对I/O操作的批处理,以空间换时间
- 假脱机
- 设备保护和差错处理
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Shaoqun Liu's Blog!