一、I/O设备的分类与I/O管理的任务
(一)按设备的使用特性分类
1、存储设备
2、I/O设备
(二)按信息交换单位分类
1、字符设备
2、块设备
(三)按传输速率分类
1、低速设备
2、中速设备
3、高速设备
(四)按设备的共享属性分类
1、独占设备
2、共享设备
3、虚拟设备
(五)I/O管理的任务和功能
1、设备分配。按照设备类型和相应的分配算法觉得将I/O设备分配给哪一个进程。
2、设备处理。设备处理程序用以实现CPU和设备控制器之间的通信。
3、缓冲管理。设置缓冲区的目的是为了缓和I/O设备与CPU速度不匹配的矛盾。缓冲管理程序负责完成缓冲区的分配、释放及有关的管理工作。
4、设备独立性。设备独立性又称为设备无关性,是指应用程序独立于物理设备。用户在编程时要尽量避免直接使用实际设备名。若程序中使用了实际设备名,则当该设备没有连续在系统中或者该设备发生故障时,用户程序无法执行,若要运行用户程序,则需要修改程序。如果用户程序不涉及实际设备而使用逻辑设备,那么它所要求的输入输出便与物理设备无关。设备独立性可以提高用户程序的可适应性。
二、I/O控制方式
(一)设备控制器
设备的电子部分通常成为设备控制器。设备控制器处于CPU与I/O之间,接收来自CPU的命令,并控制I/O设备工作。设备控制器是一个可编址的设备,当它只控制一个设备时,它只有一个设备地址;当它可连接多个设备时,它应该具有多个设备地址。
设备控制器应具备以下功能:①接收和识别来自CPU的各种指令;②实现CPU与设备控制器、设备控制器与设备之间的数据交换;③记录设备的状态供CPU查询;④识别所控制的每个设备的地址。
大多数设备控制器由设备控制器与处理器的接口、设备控制器与设备的接口及I/O逻辑3部分组成,如下图所示:
(二)程序直接控制方式
由于CPU速度远远快于I/O设备,因此CPU需要不断地测试I/O设备,这种控制方式又称为轮询或忙等。
以数据输入为例,当用户进程需要输入数据时,由处理器向设备控制器发出一条I/O指令启动设备进行输入。当设备输入数据期间,处理器通过循环执行测试指令不断地检测I/O设备状态寄存器的值,当状态寄存器的值显示设备输入完成时,处理器将书籍寄存器中的数据读取出来并送入内存指定单元,然后再启动设备输出并等待输出操作完成。
优点:过程简单。
缺点:CPU利用率相当底。由于CPU速度远远快于I/O设备,致使绝大部分时间都在测试I/O设备是否已经完成数据传输,从而造成CPU的极大浪费。
(三)中断控制方式
以数据输入为例,当用户进程需要输入数据时,由处理器向设备控制器发出一条I/O指令启动设备进行输入。在输入数据的同时,CPU可以做其他工作。当输入完成时,设备管理器向CPU