一、简答题:
1.有几种I/O控制方式?各有何持点?
(1)、循环测试 I/O方式(轮询方式)
利用I/O测试指令测试设备的闲忙。若设备不忙,则执行输入或输出指令;若设备忙,则I/O测试指令不断对该设备进行测试,直到设备空闲为止。这种方式使CPU花费很多时间在I/O是否完成的循环测试中,造成极大的浪费。
(2)、中断处理方式
引入中断之后,每当设备完成I/O操作,便以中断请求方式通知CPU,然后进行相应处理。但由于CPU直接控制输入输出操作,每传达一个单位信息,都要发生一次中断,因而仍然消耗大量CPU时间。
(3)、直接内存存取(DMA)方式
DMA(Direct Memory Access,直接内存存取)方式用于高速外部设备与内存之间批量数据的传输。它使用专门的DMA控制器,采用窃取总线程控制权的方法,由DMA控制器送出内存地址和发出内存读、设备写或者设备读、内存写的控制信号完成内存与设备之间的直接数据传送,而不用CPU干预。当本次DMA传送的数据全部完成时才产生中断,请求CPU进行结束处理。
(4)、通道方式
通道是一个用来控制外部设备工作的硬件机制,相当于一个功能简单的处理机。通道是独立于CPU的、专门负责数据的输入输出传输工作的处理器,它对外部设备实统一管理,代替CPU对I/O操作进行控制,从而使I/O操作可以与CPU并行工作。通道是实现计算机和传输并行的基础,以提高整个系统的效率。
2. 为什么要引入设备独立性?如何实现设备独立性?
现代操作系统为了提高系统的可适应性和可扩展性,都实现了设备独立性或设备无关性。基本含义是应用程序独立于具体使用的物理设备,应用程序以逻辑设备名请求使用某类设备。实现了设备独立性功能可带来两方面的好处:(1)设备分配时的灵活性;(2)易于实现I / O重定向。
为了实现设备的独立性,应引入逻辑设备和物理设备概念。在应用程序中,使用逻辑设备名请求使用某类设备;系统执行时是使用物理设备名。鉴于驱动程序是与硬件或设备紧密相关的软件,必须在驱动程序之上设置一层设备独立性软件,执行所有设备的公有操作、完成逻辑设备名到物理设备名的转换(为此应设置一张逻辑设备表)并向用户层(或文件层)软件提供统一接口,从而实现设备的独立性。
3. SPOOLing系统由哪几部分组成?以打印机为例说明如何利用SPOOLing技术实现多个进程对打印机的共享?
SPOOLing 系统由输入井和输出井、输入缓冲区和输出缓冲区、输入进程 SPi 和输出进程 SPo 三部分组成。
打印机打印时,SPOOLing系统应为请求I/O的进程提供以下服务:
- 由输出进程在输出井中申请一空闲盘块区,并将要打印的数据送入其中;
- 输出进程为用户进程申请空白用户打印表,填入打印要求,将该表挂到请求打印队列。
- 一旦打印机空闲,输出进程便从请求打印队列的队首取出一张请求打印表,根据表中要求将要打印的数据从输出井传送到内存缓冲区,再由打印机进行打印。
二、综合题
4. 假定磁盘有200个柱面,编号0~199,当前存取臂的位置在143号柱面上,并刚刚完成了125号柱面的服务请求,如果请求队列的先后顺序是:86,147,91,177,94,150,102,175,130;试问:为完成上述请求,下列算法存取臂移动的总量是多少?并算出存取臂移动的顺序。 (1)先来先服务算法FCFS; (2)最短查找时间优先算法SSTF; (3)扫描算法SCAN。 (4)电梯调度。
(1)FCFS: 143-86-147-91-177-94-150-102-175-130。 移动总量:565
(2)SSTF: 143-147-150-130-102-94-91-86-175-177。 移动总量162
(3)SCAN:143-147-150-175-177-199-130-102-94-91-86。 移动总量169
(4)电梯调度: SCAN算法又称电梯调度算法
5. 旋转型设备上信息的优化分布能减少为若干个I/O服务的总时间。设磁鼓上分为20个区,每区存放一个记录,磁鼓旋转一周需20毫秒,读出每个记录平均需用1毫秒,读出后经2毫秒处理,再继续处理下一个记录。在不知当前磁鼓位置的情况下:(1)顺序存放记录1、……,记录20时,试计算读出并处理20个记录的总时间;(2)给出优先分布20个记录的一种方案,使得所花的总处理时间减少,且计算出这个方案所花的总时间。
定位第1个记录平均需20/2=10ms。读出第1个记录花1ms,处理花2ms,这时已到了第4个记录,再转过18个区,花18ms,才能找到记录2。总时间:
10 + 3 +(1 + 2 + 18)×19 + 13 = 425ms
给出优先分布的:循环中每隔2个空加一:
1,8,15,2,9,16,3,10,17,4,11,18,5,12,19,6,13,20,7,1
当读出第1个记录,花2ms处理后,恰好就可以处理记录2,这样循环下去。总时间:
10+3+3×19 = 70ms