2022年10月8日,2022年10月22日。
对于输入设备(如鼠标)和输出设备(如打印机),轮询是哪一种更好的选择?请说明原因。
输出设备。因为输出延迟只是减慢速度,而输入延迟可能丢失输入的数据。
下列工作各是在4层I/O软件的哪一层上实现的?
-
对于读磁盘,计算磁道、磁头和扇区。
设备驱动。
-
维持最近所用块而设的高速缓冲。
设备无关软件。
-
向设备寄存器写命令。
设备驱动。
-
查看是否允许用户使用设备。
设备无关软件。
-
为了打印,把二进制整数转换成ASCII。
用户软件。
磁盘文件包含固定大小为32B的记录。物理I/O以存储在操作系统缓冲区中的512B大小的块为单位。如果进程顺序读文件记录,那么,多大比例的读请求会导致I/O操作?
所以比例为
我其实是按删掉“比例”二字理解的。
假设移动头磁盘有200个磁道(0~199号)。目前正在处理143号磁道上的请求,而刚刚处理结束的请求是125号,若有磁道访问请求序列为86,147,91,177,94,150,102,175,130,请给出使用下列各种磁盘调度算法时的磁道访问序列。
-
FCFS (First Come, First Serviced)
(143) → 86 → 147 → 91 → 177 → 94 → 150 → 102 → 175 → 130.
-
SSTF (Shortest Seek Time First)
(143) → 147 → 150 → 130 → 102 → 94 → 91 → 86 → 175 → 177.
-
SCAN
(143) → 147 → 150 → 175 → 177 → (199) → 130 → 102 → 94 → 91 → 86.
-
C-SCAN (Circular SCAN)
(143) → 147 → 150 → 175 → 177 → (199) → (0) → 86 → 91 → 94 → 102 → 130.
假设计算机系统采用CSCAN(循环扫描)磁盘调度策略,使用2KB的内存空间记录16384个磁盘块的空闲状态。
若采用空闲数组或链表,每个地址需要
设某单面磁盘旋转速度为6000r/min,每个磁道有100个扇区,相邻磁道间的平均移动时间为1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动,磁道号请求队列为50,90,30,120,对请求队列中的每个磁道读取1个随机分布的扇区,则读完这4个扇区点共需要多少时间?要求给出计算过程。
-
寻道
按 C-SCAN(不知道磁道总数,按 C-LOOK 考虑),磁道访问序列为 (100) → 120 → 30 → 50 → 90,移动了
$\qty(120-100) + \qty(120-30) + \qty(90-30) = 170$ 条磁道,花费$170 \times \SI{1}{ms} = \SI{170}{ms}$ 。 -
旋转
每访问一个扇区,按均匀分布计算,平均需要转动半圈,花费
$\SI{\frac12}{r}\ /\ \SI{6000}{r/min} = \SI{5}{ms}$ 。一共访问四个扇区,故旋转时间为
$4 \times \SI{5}{ms} = \SI{20}{ms}$ 。 -
传输
每圈 100 扇区,转速 6000 r/min,故每通过时间为
$1 / \SI{6000}{r/min} / 100 = \SI{0.1}{ms}$ 。一共读取四个扇区,花费$4 \times 0.1 = \SI{0.4}{ms}$ 。
因此总时间为
如果将磁盘替换为随机访问的Flash半导体存储器(如U盘、SSD等),是否有比CSCAN更高效的磁盘调度策略?若有,给出磁盘调度策略的名称并说明理由;若无,说明理由。
可随机访问时,无寻道时间、旋转延迟,所有硬件层面的磁盘调度同样高效……其中最简单的是先来先服务(First Come, First Served,FCFS)。