操作系统7 IO管理

七、IO管理
1.基本概念
■ I/O设备,又称输入输出设备、外围设备、外部设备、外设。用于计算机系统与外部世界(如用户、其他计算机设备)信息交换或存储。
■ I/O操作:内存与外设间的信息传递操作。它影响计算机系统的通用性和可扩展性,影响计算机系统综合处理能力及性价比的重要因素。
2.I/O管理目标与功能
■ I/O管理目标:
(1)为用户提供方便、统一的界面。
方便:为用户屏蔽具体设备的复杂物理特性;
统一:对不同设备尽量使用统一的操作方式。
(2)提高资源的利用率。提高CPU和I/O设备之间、设备与设备之间的并行操作程度,以提高它们的利用率
■ I/O管理功能:
(1)设备控制。由设备处理程序完成。
目前对I/O设备有四种控制方式:中断技术、直接存储器访问(DMA)、通道技术和缓冲技术。
(2)设备的分配与回收。由设备的分配与回收程序完成。
(3)其他功能。
3.IO系统
由I/O设备及其接口线路、控制部件、通道和管理软件组成。
总线型I/O系统:

通道型I/O系统:

■ I/O设备:
按设备的从属关系分类:系统设备、用户设备
按设备共享属性分类:独占设备、共享设备、虚拟设备
按设备传输速率分类:低速设备、中速设备、高速设备
按设备信息交换单位分类:字符(字节流)设备、块设备
按设备使用特性分类:人机交互类设备、存储设备、网络通信设备
■ 设备控制器:
设备控制器是CPU和I/O设备之间的接口,它接收从CPU发来的指令,然后去控制I/O设备工作,使CPU不需要直接进行设备控制,从而可以更高效地工作。
功能:接收和识别命令、数据交换、获取设备的状态、地址识别
组成:与CPU的接口、I/O控制逻辑、与设备的接口
■ 通道:
将原CPU处理的I/O任务由通道来承担,从而解放CPU。实际上,通道就是一种特殊的CPU,具有执行I/O指令的能力。
通道种类:字节多路通道(Byte Multiplexor Channel) 、数据选择通道(Block Selector Channel)、数据多路通道(Block Multiplexor Channel)
■ I/O接口

4.I/O控制方式
■ 程序直接控制方式
也称询问方式。,计算机从外部设备读取数据到存储器,每次读一个字节数据。对读入的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的寄存器中。
缺点:CPU的高速与外设的低速之间的矛盾,导致CPU资源的浪费,效率低下。

■ 中断控制方式
当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器于是按照该命令的要求去控制指定I/O设备。此时,CPU与I/O设备并行操作。

■ DMA控制方式,也称直接存储器访问方式。
虽然中断驱动I/O比程序I/O方式更有效,但它仍是以字(节)为单位进行I/O的。每当完成一个字(节)的I/O时,控制器便要向CPU请求一次中断。在I/O设备与内存之间开辟直接的数据交换通路,彻底“解放”CPU。
(1)DMA方式的特点是:
✔ 数据传输的基本单位是数据块
✔ 所传送的数据是从设备直接送入内存的,或者相反
✔ 仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。DMA方式较之中断驱动方式又进一步提高了CPU与I/O设备的并行操作程度。
(2) DMA控制器的组成:
主机与DMA控制器的接口、DMA控制器与块设备的接口、I/O控制逻辑。
为实现主机与控制器之间的成块数据交换,必须在DMA控制器中设置以下四类寄存器:
CR:命令/状态寄存器
DC:数据寄存器
MAR:内存地址寄存器
DR:数据寄存器

DMA控制器的组成
(3)与中断控制方式的区别:
中断控制方式:在每个数据需要传输时中断CPU,数据传输是在中断处理时由CPU控制完成的。
DMA控制方式:所要求传送的一批数据全部传送结束才中断CPU,数据传输是在DMA控制下完成的。
■ 通道控制方式:CPU与通道高度并行工作
(1)CPU遇到I/O任务,组织通道程序,置通道程序地址字CAW,启动指定通道。
(2)通道从CAW获得通道程序控制I/O设备操作,CPU执行其他任务。
(3) I/O操作完成后,I/O通道发出中断,CPU处理中断,并从通道程序状态字CSW获得通道执行情况,处理I/O操作。
5.缓冲区管理
■ 缓冲区的作用:
(1) 缓和CPU与I/O设备间速度不匹配的矛盾。
(2) 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
(3) 解决数据粒度不匹配的问题。
(4) 提高CPU和I/O设备之间的并行性。
■ 缓冲技术:
常用的缓冲技术有四种:单缓冲、双缓冲、循环缓冲和缓冲池。
(1)单缓冲:每当用户进程发出一次I/O请求时,操作系统便在主存中为之分配一块缓冲区。单缓冲的处理时间:
假设T>C,从初始状态开始,当工作区数据处理完后,时间为C,缓冲区还没有冲满,当缓冲区充满时,经历了T时间,停止冲入数据;

然后缓冲区向工作区传送数据,当缓冲区为空时,用时为M,到达了下一个开始状态,因此,整个过程用时T+M;假设T<C,同理,整个过程用时C+M。所以,单缓冲区的每次处理时间为MAX(T,C)+M。
(2)双缓冲区:
双缓冲的处理时间:假设T<C+M,整个过程用时C+M;假设T>C+M,整个过程用时T。所以,双缓冲区的每次处理时间为MAX(T, C+M)。

(3)循环缓冲:

■ 缓冲池
(1)缓冲池结构
缓冲池管理着多个缓冲区,每个缓冲区由用于标识和管理的缓冲首部以及用于存放数据的缓冲体两部分组成。缓冲首部一般包括缓冲区号、设备号、设备上的数据块号、同步信号量以及队列链接指针等。为了管理上的方便,一般将缓冲池中具有相同类型的缓冲区链接成一个队列,于是可形成以下三个队列:空白缓冲队列emq、 输入队列inq、输出队列outq。
在缓冲池中还需要四种工作缓冲区:收容输入缓冲区(hin)、 提取输入缓冲区(sin)、收容输出缓冲区(hout)、提取输出缓冲区(sout)。

(2) 管理:进程申请缓冲区使用过程,进程将缓冲区放入队列过程
(3)缓冲区工作方式:收容输入、收容输出、提取输入、提取输出
6.设备驱动程序
设备驱动程序是I/O系统的高层与设备控制器之间的通信程序,其主要任务是接收上层软件发来的抽象I/O要求,如read或write命令,再把它转换为具体要求后,发送给设备控制器,启动设备去执行;反之,它也将由设备控制器发来的信号传送给上层软件。由于驱动程序与硬件密切相关,故通常应为每一类设备配置一种驱动程序。例如,打印机和显示器需要不同的驱动程序。
■ 设备驱动程序模式:
(1) 设备驱动程序作为内核过程实现。
(2) 把设备驱动程序作为独立的进程来实现。
■ 设备驱动程序的功能:
(1) 接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求转换为与设备相关的低层操作序列。
(2) 检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式。
(3) 发出I/O命令,如果设备空闲,立即启动I/O设备,完成指定I/O操作;如果设备忙碌,则将请求者的请求块挂在设备队列上等待。
(4) 及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。
■ 设备驱动程序的特点:
(1) 驱动程序是实现在与设备无关的软件和设备控制器之间通信和转换的程序,具体说,它将抽象的I/O请求转换成具体的I/O操作后传送给控制器。又把控制器中所记录的设备状态和I/O操作完成情况,及时地反映给请求I/O的进程。
(2) 驱动程序与设备控制器以及I/O设备的硬件特性紧密相关,对于不同类型的设备,应配置不同的驱动程序。但可以为相同的多个终端设置一个终端驱动程序。
(3) 驱动程序与I/O设备所采用的I/O控制方式紧密相关,常用的I/O控制方式是中断驱动和DMA方式。
(4) 由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言书写。目前有很多驱动程序的基本部分已经固化在ROM中。
(5) 驱动程序应允许可重入。一个正在运行的驱动程序常会在一次调用完成前被再次调用。
■ 设备驱动程序的处理过程:
设备驱动程序的主要任务是启动指定设备,完成上层指定的I/O工作。但在启动之前,应先完成必要的准备工作,如检测设备状态是否为“忙”等。在完成所有的准备工作后,才向设备控制器发送一条启动命令。
7.设备分配:
设备分配与回收是设备管理功能之一,当进程向系统提出了I/O请求时,由设备分配程序负责,按一定策略分配设备、控制器和通道,形成一条数据传输通路,以供主机和I/O设备之间进行信息交换,在I/O完成时,再由系统回收分配相应的设备资源。
■ 分配原则:
(1)提高设备利用率,并避免死锁。
(2) 方便用户使用设备。
■ 分配方式:静态分配(不符合原则)、动态分配(可能造成死锁)
■ 考虑因素:
(1)设备的固有属性
设备的固有属性可分成三种,对它们应采取不同的分配策略:
独占设备的分配策略、共享设备的分配策略、虚拟设备的分配策略。
虚拟设备属于可共享的设备,可以将它同时分配给多个进程使用,需要引进Spooling技术。
(2)设备分配算法:先来先服务、优先级高者优先。
(3)设备分配中的安全性
■ 设备分配中的数据结构:

(1)设备控制表DCT:系统为每一个设备都配置了一张设备控制表,用于记录设备的情况
(2)控制器控制表(COCT):系统为每一个控制器都设置了用于记录控制器情况的控制器控制表
(3)通道控制表(CHCT):每个通道都有一张通道控制表
(4)系统设备表(SDT):这是系统范围的数据结构,记录了系统中全部设备的情况,每个设备占一个表目,其中包括有设备类型、设备标识符、设备控制表及设备驱动程序的入口等

■ I/O设备分配的基本流程
(1) 分配设备。根据I/O请求中的设备物理名查找系统设备表SDT,从中找出该设备的DCT,若DCT为空闲,则分配。
(2) 分配控制器。在DCT中查找与该设备链接的COCT,若控制器状态为空闲,则分配给该进程。
(3) 分配通道。在COCT中查找与该控制器链接的CHCT,若通道状态为空闲,则分配给该进程。
(4)若进程获得设备、控制器和通道,启动I/O设备进行数据传输。
■ Spooling技术
利用专门的外围控制机,先将低速I/O设备上的数据传送到高速磁盘上,或者相反。这样当处理机需要输入数据时,便可以直接从磁盘中读取数据,极大地提高了输入速度。反之,在处理机需要输出数
据时,也可以很快的速度把数据
先输出到磁盘上,处理机便可去做自己的事情。
(1)组成:输入井和输出井、输入缓冲区和输出缓冲区、输入进程和输出进程、井管理程序。

(2)特点:提高I/O速度、将独占设备改造为共享设备、实现虚拟设备功能。