一、设备分配的功能
当进程向系统提出I/O请求后,由设备分配程序按照一定的策略把所要求的设备分配给该进程,为确保CPU与设备之间能进行通信,还应分配相应的控制器和通道。
二、设备分配时应考虑的因素
系统必须具有一种合理的设备分配策略,该策略与下述的四个因素有关;
1)设备的固有属性
2)系统采用的分配算法
3)设备分配的安全性
4)设备的无关性,用户程序与实际使用的物理设备无关。
1、设备的固有属性——设备分配的方式
1)独占设备——静态分配
独占设备有打印机,键盘,显示器。
对独占型设备一般采用静态分配,即在作业级进行的分配,当一个作业运行之前由系统一次分配满足需要的全部设备,这些设备一直为该作业占用,直到作业撤消。这种分配不会出现死锁,但设备的利用效率较低。
2)共享设备——动态分配
共亨设备包括磁盘,磁鼓和磁带。
对共享设备采用动态分配的方式,即在进程运行的过程中进行的,当进程需要使用设备时,通过系统调用命令向系统提出设备请求,系统按一定的分配策略给进程分配所需设备,一旦使用完毕立即释放。显然这种分配方式有利于提高设备的使用效率,但会出观死锁。
3)虚拟设备——虚拟分配
虚拟设备有虚拟的输入机,虚拟的打印机。
为提高设备的利用率,通过Spooling技术把一台独占设备变换为若干台逻辑设备,供若干个用户(进程)同时使用。用来模拟独占设备的那部分共享设备称为虚拟设备。
2、I/O设备分配算法
1.先来先服务。根据进程对某设备提出请求的先后次序,可将进程排成一个队列,设备分配程序总是先把设备分配给队首进程。
2.优先级高者优先。本算法总是将设备分配给优先级最高的进程。为此,通常在形成设备队列时,是将优先级高的进程排在前面;对于相同优先级的I/O请求,则按先来先服务原则排队。
3、设备分配的安全性
从进程运行的安全性上考虑,设备分配有以下两种方式
1) 安全分配方式(单请求方式):在这种分配方式中,每当进程发出I/O请求后便进入阻塞状态,直至I/O操作完成时才被唤醒。在此策略中,由于已经避免了造成死锁的四个必要条件之一的“请求和保护”条件,因而分配是安全的。其缺点是进程进展缓慢、CPU和1/O之间是串行工作的。
2) 不安全分配方式(多请求方式):在这种分配方式中,进程发出I/O请求后仍继续运行,需要时又发出第二个I/O请求、第三个I/O请求。仅当进程所请求的设备己被另一进程占用时.进程才进入阻塞状态。
优点:一个进程可同时操作多个设备,使这些设备能并行工作;
缺点:分配不安全,从而可能形成死锁。因此在设备分配程序中还应增加一个功能,用于对本次的设备分配是否会形成死锁而进行安全性计算,仅当计算结果说明分配是安全时,方才进行分配。
三、逻辑设备名到物理设备名映射的实现
逻辑设备表LUT(Logical Unit Table)
在逻辑设备表的每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址。
四、设备分配的数据结构
设备控制表(DCT)——每个设备一张,记录了设备特性以及设备和I/O控制器的连接情况。
控制器表(COCT)——每个控制器一张,记录了控制器的使用状态以及和通道的连接情况。
通道控制表(CHCT)——每个通道一张,记录了通道的情况。
系统设备表(SDT)——整个系统一张,每个设备占一个表项,记录了系统中所有设备的情况。
设备分配检索流程
五、独占设备的分配程序
1) 基本的设备分配程序
我们通过一个例子来介绍设备分配过程。当某进程提出I/O请求后,系统的设备分配程序可按下述步骤进行设备分配:
(1) 分配设备。
(2) 分配控制器。
(3) 分配通道。
2) 设备分配程序的改进
为获得设备的独立性,进程应使用逻辑设备名请求I/O。
六、假脱机(Spooling)系统
1、假脱机技术
1)脱机输入输出系统
2)假脱机(Spooling)技术
联机同时外围设备操作技术称为Spooling技术或称为假脱机技术 。
2、SPOOLing的组成
大容量磁盘 输入井——用于存放作业的原始信息
输出井——用于存放作业的执行结果
输入缓冲区和输出缓冲区
输入进程SPi和SPo
3、假脱机打印机系统
当用户(或进程)申请独占设备时,系统给它分配共享设备的一部分存储空间。当进程要与设备交换信息时,系统就把要交换的信息存放在这部分存储空间。在适当的时候再将存贮空间的信息传输到相应的设备上去处理。
如系统打印信息时,就把要打印的信息送到某个存储空间中去,然后由系统在适当时机把存储空间上的信息送到打印机上打印。这个时机可能是打印机空闲或打印机完成了一用户的打印之后。
4、实现虚拟设备的好处
1)提高了独占设备的利用率;
2)每个用户都有速度极高的“输入机”和“打印机”,缩短 了作业执行时间;
3)能够多道并行工作 。