第五章设备管理1.试说明设备控制器的组成。答:由设备控制器与处理机的接口,设备控制器与设备的接口与I/O逻辑组成。2.为了实现CPU与设备控制器间的通信,设备控制器应具备哪些功能?答:接收和识别命令;数据交换;标识和报告设备状态;地址识别;数据缓冲;差错控制。3.什么是字节多路通道?什么是数组选择通道和数组多路通道?答:(1)字节多路通道。按字节交叉方式工作的通道。通常含有许多非分配型子通道,数量从几十到数百个,每个子通道连接一台I/O设备,控制其I/O操作。子通道按时间片轮转方式共享主通道。(2)数组选择通道。按数组方式传送数据,传输速率很高,每次只允许一个设备数据。(3)数组多路通道。将数组选择通道传输速率高和字节多路通道的各子通道分时并行操作的优点结合而成。含有多个非分配型子通道,具有很高的数据传输率和通道利用率。4.如何解决因通道不足而产生的瓶颈问题?答:解决问题的有效方法是增加设备到主机间的通路而不增加通道,把一个设备连到多个控制器上,控制器又连到多个通道上,这种多通路方式解决了“瓶颈”问题,提高了系统可靠性,个别通道或控制器的故障不会使设备和存储器之间没有通路。5.试对VESA及PCI两种总线进行比较。答:VESA总线的设计思想是以低价占领市场。总线带宽32位,最高传输速率132Mb/s。广泛用于486微机。缺点是能连接的设备数仅为2~4台,控制器中无缓冲,难于适应处理器速度的提高,不支持Pentium机。PCI总线在CPU和外设间插入了复杂的管理层,协调数据传输和提供一致接口。管理层中配有数据缓冲,放大了线路的驱动能力,最多支持10种外设,支持高时钟频率的CPU运行,最大传输速率132Mb/s。可连接ISA、EISA等传统总线,又支持Pentium的64位系统,是基于奔腾等新一代微处理器而发展的总线。6.试说明推动I/O控制发展的主要因素是什么?答:推动I/O控制发展的主要动力在于尽量减少主机对I/O控制的干预,把主机从繁杂的I/O控制事务中解脱出来,用更多的时间和精力去完成其数据处理任务。同时,中断机制在计算机系统中的引入、DMA控制器的出现和通道研制的成功使I/O控制的发展具备了技术支持和成为可能。7.有哪几种I/O控制方式?各适用于何种场合?答:共有四种I/O控制方式。(1)程序I/O方式:早期计算机无中断机构,处理机对I/O设备的控制采用程序I/O方式或称忙等的方式。(2)中断驱动I/O控制方式:适用于有中断机构的计算机系统中。(3)直接存储器访问(DMA)I/O控制方式:适用于具有DMA控制器的计算机系统中。(4)I/O通道控制方式:具有通道程序的计算机系统中。8.试说明DMA的工作流程。答:以从磁盘读入数据为例,说明DMA的工作流程。当CPU要从磁盘读入数据块时,先向磁盘控制器发送一条读命令。该命令被送到命令寄存器CR中。同时还发送本次要读入数据的内存起始目标地址,送入内存地址寄存器MAR;本次要读数据的字节数送入数据计数器DC,将磁盘中的源地址直接送DMA控制器的I/O控制逻辑上。然后启动DMA控制器传送数据,以后CPU便处理其它任务。整个数据传送过程由DMA控制器控制。下图为DMA方式的工作流程图。9.引入缓冲的主要原因是什么?答:引入缓冲的主要原因是:(1)缓和CPU与I/O设备间速度不匹配的矛盾(2)减少对CPU的中断频率,放宽对中断响应时间的限制(3)提高CPU与I/O设备之间的并行性10.在单缓冲情况下,为什么系统对一块数据的处理时间为max(C,T)+M?答:在块设备输入时,先从磁盘把一块数据输入到缓冲区,耗时为T;然后由操作系统将缓冲区数据送给用户区,耗时M;接下来由CPU对块数据进行计算,耗时C。在单缓冲情况下,磁盘把数据输入到缓冲区的操作和CPU对数据的计算过程可以并行展开,所以系统对每一整块数据的处理时间为max(C,T)+M。11.为什么在双缓冲情况下,系统对一块数据的处理时间为max(T,C)?答:写入者花费时间T将数据写满一个缓冲区后再写另一个缓冲区;读出者花费时间M将一个缓冲区数据送到用户区后再传送另一个缓冲区数据,计算者读出用户区数据进行处理。由于将数据从缓冲区传到用户区操作必须与读用户区数据处理串行进行,而且可以与从外存传送数据填满缓冲区的操作并行。因此耗时大约为max(C+M,T)。考虑M是内存数据块的移动耗时非常短暂可以省略,因此近似地认为系统对一块数据处理时间为max(C,T)。12.试绘图说明把多缓冲用于输出时的情况。答:多缓冲用于输出的示意图如下:13.试说明收容输入工作缓冲区和提取输出工作缓冲区的工作情况。答:①收容输入工作缓冲区的工作情况为:在输入进程需要输入数据时,调用GetBuf(EmptyQueue)过程,从EmptyQueue队列的队首摘下一个空缓冲区,作为收容输入工作缓冲区Hin。然后把数据输入其中,装满后再调用PutBuf(InputQueue,Hin)过程,将该缓冲区挂在输入队列InputQueue的队尾。②提取输出工作缓冲区的工作情况为:当要输出数据时,调用GetBuf(OutputQueue)过程,从输出队列的队首取得一装满输出数据的缓冲区作为提取输出工作缓冲区Sout。在数据提取完后,再调用PutBuf(EmptyQueue,Sout)过程,将该缓冲区挂到空缓冲队列EmptyQueue的队尾。14.何谓安全分配方式和不安全分配方式?答:①安全分配方式是指每当进程发出I/O请求后,便进入阻塞状态,直到其I/O操作完成时才被唤醒。在采用这种分配策略时,一旦进程已获得某种设备资源后便阻塞,使它不可能再请求任何资源,而在它运行时又不保持任何资源。这种分配方式已经摒弃了造成死锁的“请求和保持”条件,分配是安全的。缺点是进程进展缓慢,CPU与I/O设备串行工作。②不安全分配方式是指进程发出I/O请求后仍继续执行,需要时又可发出第二个I/O请求、第三个I/O请求。仅当进程请求的设备已被另一个进程占有时,进程才进入阻塞状态。优点是一个进程可同时操作多个设备,进程推进迅速。缺点是分配不安全,可能具有“请求和保持”条件,可能造成死锁。因此,在设备分配程序中需增加一个功能,用于对本次的设备分配是否会发生死锁进行安全性计算,仅当计算结果表明分配安全的情况下才进行分配。15.为何要引入设备独立性?如何实现设备独立性?答:现代操作系统为了提高系统的可适应性和可扩展性,都实现了设备独立性或设备无关性。基本含义是应用程序独立于具体使用的物理设备,应用程序以逻辑设备名请求使用某类设备。实现了设备独立性功能可带来两方面的好处:(1)设备分配时的灵活性;(2)易于实现I/O重定向。为了实现设备的独立性,应引入逻辑设备和物理设备概念。在应用程序中,使用逻辑设备名请求使用某类设备;系统执行时是使用物理设备名。鉴于驱动程序是与硬件或设备紧密相关的软件,必须在驱动程序之上设置一层设备独立性软件,执行所有设备的公有操作、完成逻辑设备名到物理设备名的转换(为此应设置一张逻辑设备表)并向用户层(或文件层)软件提供统一接口,从而实现设备的独立性。16.在考虑到设备的独立性时,应如何分配独占设备?答:在考虑到设备的独立性时,应按如下步骤来分配独占设备:(1)进程以逻辑设备名提出I/O请求。(2)根据逻辑设备表获得I/O请求的逻辑设备对应物理设备在系统设备表中的指针。(3)检索系统设备表,找到属于请求类型、空闲可用且分配安全设备的设备控制表,将对应设备分配给请求进程;未找到则等待等待唤醒和分配。(4)到设备控制表中找出与其相连接的控制器的控制器控制表,根据状态字段判断是否忙碌,忙则等待;否则将该控制器分配给进程。(5)到该控制器的控制器控制表中找出与其相连接的通道的通道控制表,判断通道是否忙碌,忙则等待;否则将该通道分配给进程。(6)只有在设备、控制器和通道三者都分配成功时,这次的设备分配才算成功,然后便可启动设备进行数据传送。17.何谓设备虚拟?实现设备虚拟时所依赖的关键技术是什么?答:设备虚拟是指把独占设备经过某种技术处理改造成虚拟设备。可虚拟设备是指一台物理设备在采用虚拟技术后,可变成多台逻辑上的虚拟设备,则可虚拟设备是可共享的设备,将它同时分配给多个进程使用,并对这些访问该物理设备的先后次序进行控制。18.试说明SPOOLing系统的组成。答:SPOOLing系统由输入井和输出井、输入缓冲区和输出缓冲区、输入进程SPi和输出进程SPo三部分组成。19.在实现后台打印时,SPOOLing系统应为请求I/O的进程提供哪些服务?答:在实现后台打印时,SPOOLing系统应为请求I/O的进程提供以下服务:(1)由输出进程在输出井中申请一空闲盘块区,并将要打印的数据送入其中;(2)输出进程为用户进程申请空白用户打印表,填入打印要求,将该表挂到请求打印队列。(3)一旦打印机空闲,输出进程便从请求打印队列的队首取出一张请求打印表,根据表中要求将要打印的数据从输出井传送到内存缓冲区,再由打印机进行打印。20.试说明设备驱动程序具有哪些特点。答:设备驱动程序具有如下特点:(1)是请求I/O进程与设备控制器间的一个通信程序;(2)驱动程序与I/O设备的特性紧密相关;(3)驱动程序与I/O控制方式紧密相关;(4)驱动程序与硬件紧密相关,部分程序用汇编语言书写,基本部分往往固化在ROM中。21.试说明设备驱动程序应具有哪些功能?答:设备驱动程序的主要功能包括:(1)将接收到的抽象要求转为具体要求;(2)检查用户I/O请求合法性,了解I/O设备状态,传递有关参数,设置设备工作方式;(3)发出I/O命令,启动分配到的I/O设备,完成指定I/O操作;(4)及时响应由控制器或通道发来的中断请求,根据中断类型调用相应中断处理程序处理;(5)对于有通道的计算机,驱动程序还应该根据用户I/O请求自动构成通道程序。22.设备中断处理程序通常需完成哪些工作?答:设备中断处理程序通常需完成如下工作:(1)唤醒被阻塞的驱动程序进程;(2)保护被中断进程的CPU环境;(3)分析中断原因、转入相应的设备中断处理程序;(4)进行中断处理;(5)恢复被中断进程。23.磁盘访问时间由哪几部分组成?每部分时间应如何计算?答:磁盘访问时间由寻道时间Ts、旋转延迟时间Tr、传输时间Tt三部分组成。(1)Ts是启动磁臂时间s与磁头移动n条磁道的时间和,即Ts=m×n+s。(2)Tr是指定扇区移动到磁头下面所经历的时间。硬盘15000r/min时Tr为2ms;软盘300或600r/min时Tr为50~100ms。(3)Tt是指数据从磁盘读出或向磁盘写入经历的时间。Tt的大小与每次读/写的字节数b和旋转速度有关:Tt=b/rN。24.目前常用的磁盘调度算法有哪几种?每种算法优先考虑的问题是什么?答:目前常用的磁盘调度算法有先来先服务、最短寻道时间优先及扫描等算法。(1)先来先服务算法优先考虑进程请求访问磁盘的先后次序;(2)最短寻道时间优先算法优先考虑要求访问的磁道与当前磁头所在磁道距离是否最近;(3)扫描算法考虑欲访问的磁道与当前磁道间的距离,更优先考虑磁头当前的移动方向。25.为什么要引入磁盘高速缓冲?何谓磁盘高速缓冲?答:目前磁盘的I/O速度远低于内存的访问速度,通常低上4-6个数量级。因此,磁盘I/O已成为计算机系统的瓶颈。为提高磁盘I/O的速度,便引入了磁盘高速缓冲。磁盘高速缓冲是指利用内存中的存储空间,暂存从磁盘中读出的一系列盘块中的信息。26.在设计磁盘高速缓冲时,如何实现数据交付?答:数据交付是指将磁盘高速缓存中的数据传给请求进程。当进程请求访问某个盘块中的数据时,由核心先查看磁盘高速缓冲,看其中是否存在所需盘块数据的拷贝。若有便直接从中提取数据交付给请求进程,避免了访盘操作,本次访问速度提高4-6个数量级;否则先从磁盘中将要访问的数据读入并交付给请求者进程,同时送高速缓存以便下次直接读取。27.何谓提前读、延迟写和虚拟盘?答:提前读是指在读当前盘块的同时,将下一个可能要访问的盘块数据读入缓冲区,以便需要时直接从缓冲