设备管理是指操作系统对除CPU和内行之外所有设备的管理。历年考题中主要涉及缓冲技术和Spooling技术等知识点。
在计算机系统中,除了处理器和内存之外,其他的大部分硬设备称为外部设备。它包括输入/输出设备、辅存设备及终端设备等。为了完成上述主要任务,设备管理程序一般要提供下述功能。
● 提供和进程管理系统的接口。当进程要求设备资源时,该接口将进程要求转达给设备管理程序。
● 进行设备分配。按照设备类型和相应的分配算法把设备和其他有关的硬件分配给请求该设备的进程,并把未分配到所请求设备或其他有关硬件的进程放入等待队列。
● 实现设备和设备、设备和CPU等之间的并行操作。
● 进行缓冲区管理。主要减少外部设备和内存与CPU之间的数据速度不匹配的问题,系统中一般设有缓冲区(器)来暂放数据。设备管理程序负责进行缓冲区分配、释放及有关的管理工作。
外围设备和内存之间的常用数据传送控制方式介绍如下。
● 程序控制方式。
● 中断方式。
● 直接存储访问(DMA)方式。指外部设备和内存之间开辟直接的数据交换通路。
● 通道方式。通道又称为输入/输出处理器(IOP),主要有三类通道:字节多路通道、选择通道和成组多路通道。
设备分配方式有两种:一种是静态分配;另一种是动态分配。静态分配方式是在用户作业开始执行之前,由系统一次分配该作业所要求的全部设备、控制器和通道。一旦分配之后,这些设备、控制器和通道就一直为该作业所占用,直到该作业被撤销。静态分配方式不会出现死锁,但是设备的使用效率低。
动态分配在进程执行过程中根据执行需要进行。当进程需要设备时,通过系统调用命令向系统提出设备请求,由系统按照事先规定的策略给进程分配所需要的设备、I/O控制器和通道,一旦用完之后,便立即释放。动态分配方式有利于提高设备的利用率,但如果分配算法使用不当,则有可能造成进程死锁。
常用的分配策略有先请求先分配、优先级高者先分配策略等。
● 先请求先分配。
● 优先级高者先分配。这种策略和进程调度的优先级算法是一致的,即进程的优先级高,那么它的I/O请求也优先满足。对于相同优先级的进程来说,则按照先请求先分配策略分配。
访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区)时间和数据传输时间,其中查找时间是决定因素。因此,磁盘调度算法主要有以下几种。
● 先来先服务(FCFS)调度。按先来后到次序服务,未做优化。
● 最短查找时间优先(SSTF)调度。SSTF查找距离磁头最短(也就是查找时间最短)的请求作为下一次服务的对象。SSTF查找模式有高度局部化的倾向,会推迟一些请求的服务,甚至引起无限拖延(又称饥饿)。
● SCAN调度。又称电梯算法,SCAN算法是磁头前进方向L的最短查找时间优先算法,它排除了磁头在盘面局部位置上的往复移动,SCAN算法在很大程度上消除了SSTF算法的不公平性,但仍有利于对中间磁道的请求。
Spooling(Simultaneous Peripheral Operation On Line )的意思是外部设备同时联机操作,又称为假脱机输入/输出操作,采用一组程序或进程模拟一台输入/输出处理器。Spooling系统的组成如图3-5所示。该技术利用了专门的外围控制机将低速I/O设备上的数据传送到高速设备上,或者相反。但是当引入多道程序后,完全可以利用其中的一道程序来模拟脱机输入时的外围控制机的功能,把低速的I/O设备上的数据传送到高速磁盘上;再利用另一道程序来模拟脱机输出时的外围控制机的功能,把高速磁盘上的数据传送到低速的I/O设备上。这样便可以在主机的控制下实现脱机输入、输出的功能。此时的外围操作与CPU对数据的处理同时进行,我们将这种在联机情况下实现的同时外围操作称为Spooling,或称为假脱机操作。
采用假脱机技术,可以将低速的独占设备改造成一种可共享的设备,而且一台物理设备可以对应若干台虚拟的同类设备。Spooling系统必须有高速、大容量并且可随机存取的外存(如磁盘或磁鼓)支持。
图3-5 Spooling系统示意图