IO设备概念和分类
IO控制器
CPU无法直接控制/o设备的机械部件,因此/O设备还要有一个电子部件作为CPU和/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。
这个电子部件就是IO控制器,又称设备控制器。CPU可控制IO控制器,又由IO控制器来控制设备的机械部件。
IO控制器功能
IO控制器组成
值得注意的小细节:
- 一个IO控制器可能会对应多个设备;
- 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像/o;另一些计算机则采用/O专用地址,即寄存器独立编址。
IO控制方式
程序直接控制方式
IO设备和内存的交互要经过CPU
中断驱动方式
引入中断机制。由于IO设备速度很慢,因此在CPU发出读/写命令后,可将等待1/O的进程阻塞,先切换到别的进程执行。当IO完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CpU从IO控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待IO的进程(或其他进程)的运行环境,然后继续执行。
DMA方式
与“中断驱动方式”相比,DMA方式( Direct Memory Access,直接存储器存取。主要用于块设备的1/O控制)有这样几个改进:
①数据的传送单位是“块”。不再是一个字、一个字的传送;
②数据的流向是从设备直接放入内存,或者从内存直接到设备。不再需要CPU作为“快递小哥”。
③仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。
通道控制方式
通道:一种硬件,可以理解为是“弱鸡版的CPU”。通道可以识别并执行一系列通道指令
IO软件层次
用户层软件
设备独立性软件
设备独立性软件,又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。
- 向上层提供统一的调用接∏(如read/ write系统调用)
- 设备保护,原理类似与文件保护。设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。
- 差错处理
- 设备分配和回收
- 数据缓冲区管理
- 建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序
操作系统系统可以采用两种方式管理逻辑设备表(LUT)
- 第一种方式,整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统
- 第二种方式,为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而UT就存放在用户管理进程的PCB中。
设备驱动程序
主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/ write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等不同的IO设备有不同的硬件特性,具体细节只有设备的厂家才知道。因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序
驱动程序一般会以一个独立进程的方式存在
中断处理程序
当J/O任务完成时,VO控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。