【问题标题】:Demand paging increases throughput without increasing turnaround time需求分页增加吞吐量而不增加周转时间
【发布时间】:2018-09-09 04:52:26
【问题描述】:

在请求分页中,页面在进程需要时从磁盘读取到内存中。 这会导致磁盘 I/O 开销并使进程等待。

现在,我读到了一行(来自 Galvin 的“操作系统概念”一书的“虚拟内存”一章),指出需求分页可以提高吞吐量,而不会增加响应时间或周转时间。

我同意按需分页会增加吞吐量,但如果涉及磁盘 I/O,如何在不增加周转时间的情况下实现呢?

示例 考虑在时间 0 提交给系统的进程。 还要考虑该进程可能必须在设备队列中等待可变的时间。 流程由 3 页组成。 将页面从磁盘读取到内存所需的时间是 2ms。 执行该过程所需的总时间为 10 毫秒。

假设长期计划决定在时间 5 将进程添加到内存中。

无请求分页:

在内存中加载 3 页进程需要 2*3=6ms。 然后进程执行10ms。

在作业队列 5 中等待 内存中的加载过程 6 执行 10 因此TAT=5+6+10=21ms

需要分页:

首页在 2 毫秒内加载到内存中。 然后进程执行 4ms 并需要内存中的下一页。 因此进程被添加到磁盘的等待队列中,它等待 10 毫秒,然后在 2 毫秒内加载第二页。 然后进程执行 3ms 并要求第三页。 再次进程等待磁盘 5 毫秒,然后在 2 毫秒内加载页面。 然后进程执行 3ms 并终止。

在作业队列 5 中等待 加载第一页 2 执行 4 等待磁盘 10 在内存 2 中加载第二页 执行 3 等待磁盘 5 在内存 2 中加载第三页 执行 3 因此TAT=5+2+4+10+2+3+5+2+3=36ms

【问题讨论】:

  • 如有任何疑问,请随时咨询。

标签: operating-system virtual-memory


【解决方案1】:

很容易看出为什么 response time 没有增加。由于您不需要将整个程序从磁盘加载到主存,因此响应时间肯定不会增加可能会减少,因为我们可以只在主存中加载部分程序来开始执行。

现在,turnaround time怎么没有增加。主要是因为它的总时间由进程消耗。因此,假设您没有需求分页,那么您首先将 整个程序 加载到仍需要 磁盘 I/O 的主内存中,然后开始执行。但是在按需分页中,您仅在需要时才逐部分加载程序,这又需要 磁盘 I/O。在最坏的情况下,即使在需要程序的所有页面的情况下,您也必须将整个程序加载到主内存中。无论哪种方式,与非需求分页系统相比,您都执行任何额外的磁盘 I/O,因此不会增加周转时间。

【讨论】:

  • 谢谢 Sumeet!但是当将整个进程加载到内存中时,进程必须在设备队列中等待一次,然后将整个进程加载到内存中。在请求分页的情况下,进程可能必须在设备队列中等待每个 I/O 请求。这增加了进程的等待时间。
  • @Kavita 在同一本书中的定义是周转时间是等待进入内存、等待就绪队列以及在 CPU 上执行和执行 I/O 所花费的时间总和。
  • @Kavita 查看本书的第 153 页。
  • 您对在处理进程的 I/O 请求之前在设备队列(在本例中为磁盘)中等待所需的时间有何看法,是否在 TAT 中考虑?
  • @Kavita 即使进程尚未添加到就绪队列但周转时间按定义中所述计算等待进入内存。
猜你喜欢
  • 2017-09-06
  • 2019-06-14
  • 2018-08-31
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
相关资源
最近更新 更多