问答题 考虑在一个单用户PC上的下述I/O情形:
(1)使用鼠标作为图形用户接口。
(2)在一个多任务操作系统上的磁带驱动器。
(3)包含用户文件的磁盘驱动器。
(4)通过直接总线连接的图形卡,可以通过内存映射I/O进行访问。
对于上述I/O,操作系统的设计应该怎样使用缓冲、高速缓存和Spooling等技术?要使用程序控制I/O或者中断I/O吗?为什么?
【正确答案】
【答案解析】(1)鼠标:缓冲是需要的,可以在高优先级操作发生时记录鼠标的移动。但是Spooling和高速缓存是不合适的。最合适的I/O方式是中断驱动I/O。
(2)磁带驱动器:缓冲可以管理磁带驱动器与I/O源(或目标)之间的吞吐能力差别。缓存可以用于维持磁带驱动器的数据,减少I/O次数。Spooling可以在多用户并发访问(磁带驱动器可能为多个PC或者其他主机服务)时管理并发I/O。中断驱动I/O可能能够获得最佳性能。
(3)磁盘驱动器:缓冲可以维持用户空间与磁盘间传输的数据以减少I/O次数。高速缓存可以用于维持磁盘数据以减少机械运动和磁记录读/写,也可以提高I/O性能。由于磁盘是共享访问的设备,因此没有必要使用Spooling进行虚拟化。由于磁盘带宽相对较低,因此中断驱动I/O比较适宜。
(4)图形卡:需要使用缓冲来控制多重访问(在显示当前图像时,使用双缓冲,准备下一幅图像),以提高显示性能。因为图形卡设备的数据率较高,所以Spooling和高速缓存是没有必要的。程序控制或者中断I/O至少用于输入和I/O完成状态的检测,在内存映射I/O阶段是没有必要的。
注:(1)缓冲(buffering)和高速缓存(caching)虽然都可以使用主存来实现,但是在I/O管理中存在一些细小的差异。缓存专指操作系统或者设备驱动程序为了减少I/O次数而在存储空间开辟的一片区域。而缓存是指硬件系统为了提高性能使用的特殊快速存储器,例如CPU的一级和二级缓存可以减少访存次数,磁盘控制器缓存可以减少磁记录读/写次数。
(2)程序直接控制的I/O方式在现代操作系统中通常称为轮询(polling)I/O方式,专指CPU能够通过查询设备状态来决定I/O指令的一种方式。