5.1I/O硬件原理
5.1.1I/O设备:
- 块设备:所有传输以一个或多个完整的(连续的)块为单位。块设备的基本特征是每个块都能独立于其他块而读写。
- 字符设备:以字符为单位发送或接受一个字符流,而不考虑任何块结构。
5.1.2设备控制器:
把串行的位流转换为字节块,并进行必要的错误校正工作。5.1.3内存映射I/O
cpu与设备的控制寄存器和数据缓冲区进行通信有三种方法: - 一是I/O空间和内存空间分开
- 二是将I/O映射到内存的高地址处,并且保证用户地址空间中不会包含这些地址空间。
- 三则是前两种的空格。
5.1.4直接存储器存取;
大部分计算机用到一种称为直接存储器(DMA)的硬件设备来进行内存和外部设备之间的通信,这样的好处是绕过cpu,不需要进行相应的保护现场、修改内存地址、取指令等操作,数据传输速率大大提高。唯一有点美中不足的就是,DMA运行时会占用总线。5.1.5重温中断:
当一个I/O设备完成交给它的工作时,它就产生一个中断(假设操作系统已经开放中断),它是通过在分配给他的一条总线信号线上置起信号而产生中断的。5.2I/O软件原理
5.2.1I/O软件的目标:
它可以访问任意I/O设备而无需事先指定设备。5.2.5实现I/O的方式:
- 程序控制I/O:让操作系统做全部的工作,
- 中断驱动I/O:让CPU等待当前正被其他进程占用的设备变为就绪的同时,可以做某些其他事情的方式就是采用中断。
- 使用DMA的I/O:让DMA来传送I/O数据而不是CPU。
5.3I/O软件的层次:
- 中断处理程序:使先前阻塞的驱动程序恢复能够继续运行的状态。
- 设备驱动程序:控制连接到计算机I/O设备的某些特定的代码称为设备驱动程序。
- 与设备无关的I/O软件:包括操作系统定义的一组驱动程序必须支持的函数、I/O设备的命名、缓冲、错误报告、分配与释放专用设备。