先决条件 –操作系统中的虚拟内存
正如虚拟内存的概念所暗示的那样,没有必要在给定的时间将整个进程加载到主内存中。如果在特定时间只有一些页面存在于主存储器中,则可以有效地执行该过程。现在出现的问题是,选择要加载到主内存中以预先执行进程的页面的基础是什么?
这里提出的问题的答案是需求分页。根据这个概念,任何页面都不会加载到主内存中,除非它在执行的任何阶段被进程引用。相比之下, Prepaging的概念提出了一种不同的方法,其中操作系统会猜测进程将需要哪个页面并将其预加载到内存中。
Prepaging的概念被用作尝试减少在进程开始时发生的大量页面错误,其中基本策略是将所有页面同时放入内存中,这些页面在实际使用之前进程引用。
Prepaging用于克服需求的主要缺点 分页。 Demand Paging 的一个主要缺点是一旦进程开始执行就会出现大量的页面错误。这种情况是努力将初始位置加载到内存中的结果。同样的情况可能会反复出现。例如,当一个进程被换出后重新启动时,它的所有页面都存在于磁盘上,因此在最坏的情况下,每个页面都必须被带回主内存以执行进程案件。
如果系统使用工作集模型,则维护其工作集中每个进程的页面列表。如果进程由于缺少空闲帧或 I/O 等待而挂起,则进程的工作集不会丢失。当进程恢复时,整个工作集在进程再次开始执行之前被带回内存。
Prepaging 的主要优点是在进程引用连续地址时可以节省时间。在这种情况下,操作系统很容易猜测并加载适当的页面,并且由于猜测对许多页面来说很可能是正确的,因此会发生较少的页面错误。
准备可能并不总是有益的。 Prepaging 的优势基于对一个简单问题的回答,即实现 Prepaging 的成本是否低于服务相应页面错误的成本。请注意,可能会出现大量通过 Prepaging 带回内存的页面未被使用的情况。该概念的缺点是,如果未使用预加载页面,则会浪费时间和内存等资源。
请求分页和预分页的区别:
Demand Paging |
Pre-Paging |
Any page is not loaded into the main memory unless it is being referenced by the process at the present instant. | All the pages are loaded into the memory that will be needed at the same time in near future but before they are actually referenced by the process. |
The number of page faults is significantly high. | The number of page faults may be reduced in certain specific cases. |
The time taken to load the pages can not decrease in any situation. | The time taken to load the pages decreases when consecutive addresses are referenced by a process. |
The pages loaded in the main memory are certainly used. | The pages loaded in the main memory might or might not be used. |
There is no wastage of resources as a page is loaded as and when needed. | There is a wastage of resources as there is a high chance that the pages might be unused. |
设预分页的页数为:s,进程实际使用这些页的比例为:m,其中(0≤m≤1)。现在检查s*m保存页面错误是否大于或小于准备s*(1-m) 个不必要页面的成本,并继续执行具有较小相对值的过程。