Operating system 请求分页在不增加周转时间的情况下提高了吞吐量

Operating system 请求分页在不增加周转时间的情况下提高了吞吐量,operating-system,virtual-memory,Operating System,Virtual Memory,在按需分页中,当进程需要页面时,页面从磁盘读入内存。 这会导致磁盘I/O的开销,并使进程等待 现在,我读了一行(摘自Galvin的《操作系统概念》一书《虚拟内存》一章)指出,请求分页在不增加响应时间或周转时间的情况下提高了吞吐量 我同意按需分页会增加吞吐量,但如果涉及磁盘I/O,如何在不增加周转时间的情况下实现这一点 示例 考虑在系统0的时间提交的过程。 还考虑到该过程可能需要在设备队列中等待可变的时间量。 该流程由3页组成。 从磁盘到内存读取页面所需的时间为2ms。 执行该过程所需的总时间为1

在按需分页中,当进程需要页面时,页面从磁盘读入内存。 这会导致磁盘I/O的开销,并使进程等待

现在,我读了一行(摘自Galvin的《操作系统概念》一书《虚拟内存》一章)指出,请求分页在不增加响应时间或周转时间的情况下提高了吞吐量

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

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

假设long term schedure决定在时间5将进程添加到内存中

无需按需分页:

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

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

带请求分页:

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

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

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


现在,如何不增加。这主要是因为它是流程消耗的总时间。因此,假设您没有按需分页,在这种情况下,您首先在主内存中加载整个程序,它仍然需要磁盘I/O,然后开始执行。但在按需分页中,您仅在需要时逐部分加载程序,这同样需要磁盘I/O。在最坏的情况下,您将不得不在主内存中加载整个程序,即使在需要程序的所有页面时也是如此。无论哪种方式,与非按需寻呼系统相比,您都没有进行任何额外的磁盘I/O操作,因此周转时间没有增加。

请随时查询。谢谢Sumeet!但当将整个进程加载到内存中时,进程必须在设备队列中等待一次,然后将整个进程加载到内存中。而在请求分页的情况下,进程可能必须在设备队列中等待每个I/O请求。这会增加进程的等待时间。@Kavita在同一本书中的定义是周转时间是等待进入内存的时间的总和,在就绪队列中等待,在CPU上执行,并执行I/O。@Kavita查看本书第153页。在处理进程的I/O请求之前,您认为在设备队列(在本例中为磁盘)中等待所需的时间是多少,它是否在TAT中考虑?@Kavita,即使进程尚未添加到就绪队列中,但周转时间是按定义中所述的等待进入内存的时间计算的。