磁道优化分布的一道题

有人问的一个问题,发现在C站里也挂了很久,没人解答。

磁道优化分布计算处理时间的问题-CSDN社区

这里只解释一下第3题,第1题和第2题是同样的思路。前两题的用时只计算到 "全部读出",第3题的用时要计算到 "全部处理完",也就是差最后一个记录的处理时间1ms。

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| (3)假设每条磁道被分为8个扇区,每个扇区存放一个记录,处理程序顺序处理这8个记录L1,L2,...,L8。每次请求从磁盘上读一个记录,然后对读出的记录花1ms的时间进行处理,以后再读下一个记录进行处理。磁盘旋转一周花费16ms(即每读一个扇区需2ms)。若将这8个记录在一条磁道上进行优化分布,则全部处理完这8个记录至少需要多少ms? |

这个题,有人说可以用什么公式来计算,但计算的答案也不对。所以,还是从原理上进行分析。

这个题里,读每个扇面的用时是 16/8=2 ms。先将记录 L1 块放在下图中的OA扇区,读出L1的对应的时间段是从 t=0-2ms;然后程序开始处理L1,花费1 ms,对应的时间段是从 t=2-3 ms。在 t=3时点,磁盘一直在旋转,磁头位于AB之间,且还有1ms到达B点。因此,优化分布的结果,一定是把记录L2在BC扇区(如下图右侧图所示)。1ms后(也就是 t=4ms 时点)磁头到达B点,然后开始读取L2,对应的时间段从 t=4 - 6ms。

随后,t=6ms时L2记录被读取完,磁头到达C点。然后程序开始处理L2,花费1 ms,对应的时间段是从 t=6-7 ms。在 t=7 ms 时点,磁盘在继续旋转,磁头位于CD之间,且还有1ms到达D点。因此,优化分布的结果,一定是把记录L3放在DE扇区(如下图右侧图所示)。1ms后(也就是 t=8ms 时点)磁头到达D点,然后开始读取L3,对应的时间段从 t=8-10ms。

随后,t=10ms时L3记录被读取完,磁头到达E点。然后程序开始处理L2,花费1 ms,对应的时间段是从 t=10-11 ms。在 t=11 ms 时点,磁盘在继续旋转,磁头位于EF之间,且还有1ms到达F点。因此,优化分布的结果,一定是把记录L4放在FG扇区(如下图右侧图所示)。1ms后(也就是 t=12ms 时点)磁头到达F点,然后开始读取L4,对应的时间段从 t=12-14ms。

随后,t=14ms时L4记录被读取完,磁头到达G点。然后程序开始处理L4,花费1 ms,对应的时间段是从 t=14-15 ms。在 t=15 ms 时点,磁盘在继续旋转,磁头位于GO之间,且还有1ms到达O点。因此,优化分布的结果,本来一定是把记录L5放在OA扇区,但因为OA扇区已有L1,所以一定是把记录L5不得不放在AB扇区(如下图右侧图所示,这里一定要注意!)。1ms后(也就是 t=16ms 时点)磁头到达O点,继续在t=16-18ms 这段时间转到A点。然后开始读取L5,对应的时间段从 t=18-20ms。

随后,恢复正常,t=20ms时L5记录被读取完,磁头到达B点。然后程序开始处理L5,花费1 ms,对应的时间段是从 t=20-21 ms。在 t=21 ms 时点,磁盘在继续旋转,磁头位于BC之间,且还有1ms到达C点。因此,优化分布的结果,一定是把记录L6放在CD扇区(如下图右侧图所示)。1ms后(也就是 t=22ms 时点)磁头到达C点,然后开始读取L6,时间从 t=22-24ms。

同样道理,L7放在EF扇区,L8放在GO扇区。直到 L8 在GO扇区被读取完,再花费1ms进行处理。

因此,实际上的总用时就是磁盘旋转了2圈后磁头又位于O点的用时,再加上最后1ms的处理时间,一共是16*2+1=33ms。

如果这道题像前两道题那样,只是问"全部读出的时间",那就不算最后的1ms的处理时间,也就是32ms,这就是第3题与前两题的差别。

相关推荐
DYWorker00135 分钟前
Linux驱动:RK3568 GMAC + YT8531C 千兆以太网全流程解剖
linux
吴声子夜歌2 小时前
Nginx应用与运维——Nginx负载均衡应用实战(二)
运维·nginx·负载均衡
lisanmengmeng2 小时前
NRPE 添加命令(一)
linux·运维·服务器
pt10432 小时前
CML网络仿真入门-2:使用CML模拟网络实验环境
运维·网络协议
树下水月3 小时前
Typora破解
linux·服务器·前端
沫璃染墨3 小时前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
wuminyu4 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
深念Y4 小时前
rime-雾凇拼音-配置记录
linux·junit·软件·拼音·kde
HAHAXX84 小时前
电商RPA批量上架通用方案:一套流程如何同时跑通拼多多、抖店、淘宝和跨境平台
java·运维·rpa
零基础1234 小时前
LLM Agent 驱动的物模型构建:从设备手册到边缘接入的自动化实践
运维·人工智能·经验分享·python·自动化