【问题标题】:Loading a program from the disk从磁盘加载程序
【发布时间】:2017-07-28 00:01:44
【问题描述】:

从平均寻道时间为 10 毫秒、旋转时间为 20 毫秒、磁道容量为 32 KB(对于 2 KB 页面大小)的磁盘加载 64 KB 程序需要多长时间? 页面在磁盘周围随机分布,柱面数量如此之大 两页在同一个圆柱体上的可能性可以忽略不计。

我的解决方案.. 64 KB 的程序将被组织成 2 个轨道,因为每个轨道容量为 32KB。

要加载整个曲目,我们需要 20 毫秒。要加载 2KB,我们需要 1.25 毫秒。

I/O时间=寻道时间+avg.rotation延迟+传输时间

             10msec+10msec+1.25msec=21.25msec

            Since 64KB program is organized into 2 tracks then I/O time will be 2(21.25)=42.5 msec.

正确吗?如果是,为什么要寻找时间 =avg rotetion 延迟?

【问题讨论】:

  • 我认为你错过了关于“页面随机分布在磁盘周围......”的部分,因为你似乎假设页面都是连续分配的......
  • 我应该改变什么?
  • 好吧,如果页面真的是随机分布的,那么一个由 2 KB 页面组成的 64 KB 程序将需要 32 个单独的页面加载,每个页面都必须产生一个查找延迟和一个旋转延迟.从那里开始应该相当简单......
  • @Kleona 你有官方正确答案吗?
  • @Kleona 据我所知,正确答案是 6400 毫秒。

标签: operating-system


【解决方案1】:

正如上面提到的:柱面的数量是如此之大,以至于两个页面在同一个柱面上的可能性可以忽略不计。,它只是意味着加载每个页面,我们总是需要移动到另一个cylinder。因此,我们必须为每个页面添加seek time,因为seek time 是将手臂移到适当的cylinder 上所需的时间。

Number of pages = 64KB/2KB = 32 

rotation time 的定义是,一旦我们到达适当的cylinder,到达适当的sector 所需的时间。

所以所用时间 = 32*10*20 = 6400 毫秒

【讨论】:

  • 32*10*20 是错误的。它应该是 32 * (10 + 20/2 + 1.25),就像 Kleona 的回答一样。
  • @twalberg 你到底在这里考虑轮换时间?请解释一下。
  • 问题说明“其旋转时间为 20 毫秒”。那是全盘轮换的时间。统计数据告诉我们,如果我们可以假设访问请求的随机分布是均匀的,则平均旋转延迟大约是该延迟的一半(大约是因为如果每个柱面的扇区数为奇数与偶数,实际数学计算结果会有所不同) .这就是我之前评论中的 20/2 - 平均旋转延迟为 10 毫秒。加上 10 毫秒的寻道时间和 1.25 毫秒的实际传输时间,每次读取都会重复。
【解决方案2】:

我找到了另一个解决方案。 寻道加旋转延迟为 20 毫秒。 对于 2 KB 页,传输 时间为 1.25 毫秒,总共 21.25 毫秒。 加载其中的 32 个页面将 需要 680 毫秒。对于 4 KB 页,传输时间加倍至 2.5 毫秒,因此 每页的总时间为 22.50 毫秒。加载其中 16 个页面需要 360 毫秒。 现在我很困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多