📜  操作系统中的准备

📅  最后修改于: 2021-09-27 14:34:07             🧑  作者: Mango

先决条件 –操作系统中的虚拟内存

正如虚拟内存的概念所暗示的那样,没有必要在给定的时间将整个进程加载到主内存中。如果在特定时间只有一些页面存在于主存储器中,则可以有效地执行该过程。现在出现的问题是,选择要加载到主内存中以预先执行进程的页面的基础是什么?

这里提出的问题的答案是需求分页。根据这个概念,任何页面都不会加载到主内存中,除非它在执行的任何阶段被进程引用。相比之下, 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) 个不必要页面的成本,并继续执行具有较小相对值的过程。