Skip to content

Latest commit

 

History

History
104 lines (55 loc) · 4.08 KB

第6章.md

File metadata and controls

104 lines (55 loc) · 4.08 KB

作业:第6章

2022年10月8日,2022年10月22日。

$$ \newcommand\SI[2]{#1\ \mathrm{#2}} % siunitx (package) $$

1 轮询

对于输入设备(如鼠标)和输出设备(如打印机),轮询是哪一种更好的选择?请说明原因。

输出设备。因为输出延迟只是减慢速度,而输入延迟可能丢失输入的数据。

2 I/O 软件分层

下列工作各是在4层I/O软件的哪一层上实现的?

  1. 对于读磁盘,计算磁道、磁头和扇区。

    设备驱动。

  2. 维持最近所用块而设的高速缓冲。

    设备无关软件。

  3. 向设备寄存器写命令。

    设备驱动。

  4. 查看是否允许用户使用设备。

    设备无关软件。

  5. 为了打印,把二进制整数转换成ASCII。

    用户软件。

3 缓冲

磁盘文件包含固定大小为32B的记录。物理I/O以存储在操作系统缓冲区中的512B大小的块为单位。如果进程顺序读文件记录,那么,多大比例的读请求会导致I/O操作?

$\SI{512}{B} / \SI{32}{B} = 16$,最多缓冲 16 块,所以超过 16 块的读请求一定会导致 I/O 操作。

所以比例为 $1/16$

我其实是按删掉“比例”二字理解的。

4 磁盘寻道

假设移动头磁盘有200个磁道(0~199号)。目前正在处理143号磁道上的请求,而刚刚处理结束的请求是125号,若有磁道访问请求序列为86,147,91,177,94,150,102,175,130,请给出使用下列各种磁盘调度算法时的磁道访问序列。

  1. FCFS (First Come, First Serviced)

    (143) → 86 → 147 → 91 → 177 → 94 → 150 → 102 → 175 → 130.

  2. SSTF (Shortest Seek Time First)

    (143) → 147 → 150 → 130 → 102 → 94 → 91 → 86 → 175 → 177.

  3. SCAN

    (143) → 147 → 150 → 175 → 177 → (199) → 130 → 102 → 94 → 91 → 86.

  4. C-SCAN (Circular SCAN)

    (143) → 147 → 150 → 175 → 177 → (199) → (0) → 86 → 91 → 94 → 102 → 130.

5 磁盘调度

假设计算机系统采用CSCAN(循环扫描)磁盘调度策略,使用2KB的内存空间记录16384个磁盘块的空闲状态。

1 请说明在上述条件下如何进行磁盘块空闲状态的管理

$\SI{16384}{b} = \SI{2}{kB}$,可采用位示图。

若采用空闲数组或链表,每个地址需要 $\log 16384 = \SI{14}{b}$,故内存空间最多存 $\SI{2}{kB} / \SI{14}{b} \approx 10^3$ 个地址,很可能不够。所以还是采用位示图吧。

2 访问时间

设某单面磁盘旋转速度为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}$

因此总时间为 $\SI{170}{ms} + \SI{20}{ms} + \SI{0.4}{ms} = \SI{190.4}{ms}$

3 随机访问

如果将磁盘替换为随机访问的Flash半导体存储器(如U盘、SSD等),是否有比CSCAN更高效的磁盘调度策略?若有,给出磁盘调度策略的名称并说明理由;若无,说明理由。

可随机访问时,无寻道时间、旋转延迟,所有硬件层面的磁盘调度同样高效……其中最简单的是先来先服务(First Come, First Served,FCFS)。