- 对于输入设备(如鼠标)和输出设备(如打印机),轮询是其更好的选择。请说明原因。
因为鼠标、打印机等数据传输单位为字节,轮询适合此类设备。并且轮询时CPU与设备串行,可以减小传递错误数据的概率。 - 下列工作各是在4层I/O软件的哪一层上实现的?
(1) 对于读磁盘,计算磁道、磁头和扇区。
设备驱动程序
(2) 维持最近所用块而设的高速缓冲。
独立于设备的软件
(3) 向设备寄存器写命令。
设备驱动程序
(4) 查看是否允许用户使用设备。
独立于设备的软件
(5) 为了打印,把二进制整数转换成ASCII。
用户空间的I/O软件 - 磁盘文件包含固定大小为32B的记录。物理I/O以存储在操作系统缓冲区中的512B大小的块为单位。如果进程顺序读文件记录,那么,多大比例的读请求会导致I/O操作?
大于512/32=16个的读请求必定导致I/O操作。 - 假设移动头磁盘有200个磁道(0~199号)。目前正在处理143号磁道上的请求,而刚刚处理结束的请求是125号,若有磁道访问请求序列为86,147,91,177,94,150,102,175,130,请给出使用下列各种磁盘调度算法时的磁道访问序列。
(1)FCFS;(2)SSTF;(3)SCAN;(4) C-SCAN。
(1) FCFS:86,147,91,177,94,150,102,175,130
(2) SSTF:130,147, 150, 175, 177, 102, 94, 91, 86
(3) SCAN:130,150,175,177,199,102,94,91,86
(4) C-SCAN:130,150,175,177,199,0,86,91,94 - 假设计算机系统采用CSCAN(循环扫描)磁盘调度策略,使用2KB的内存空间记录16384个磁盘块的空闲状态。
(1) 请说明在上述条件下如何进行磁盘块空闲状态的管理。
因为盘块数量大,不适合采用空闲表和空闲链表法进行管理,所以采用位示图进行管理。
每一个盘块用一位来记录,则需要 16384 b,也就是 16384 / 8 = 2048B = 2KB,刚好可以用题目给出的 2KB 内存空间来记录。
(2) 设某单面磁盘旋转速度为6000r/min,每个磁道有100个扇区,相邻磁道间的平均移动时间为1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动,磁道号请求队列为50,90,30,120,对请求队列中的每个磁道读取1个随机分布的扇区,则读完这4个扇区点共需要多少时间?要求给出计算过程。
T = 寻道时间 + 旋转时间 + 查询时间;
寻道顺序:120, 30, 50, 90
寻道个数 = 20 + 90 + 20 + 40 = 170
寻道时间 = 170ms;
旋转时间 = 4/2*6000 = 20ms
读取一转需要10ms,共100个扇区,故读取四个扇区需要0.4ms
故T = 190.4ms
(3) 如果将磁盘替换为随机访问的Flash半导体存储器(如U盘、SSD等),是否有比CSCAN更高效的磁盘调度策略?若有,给出磁盘调度策略的名称并说明理由;若无,说明理由。
采用FCFS(先来先服务)策略更为高效,因为FLASH半导体存储器的物理结构不需要考虑寻道时间和旋转延迟,可直接按I/O请求的先后顺序服务。