内存分配策略和分配算法

  • Post author:
  • Post category:其他


—– 在为进程分配内存时,将涉及到3个问题:

1)


最小物理块数


的确定;2)物理块的


分配策略


;3)物理块的


分配算法



1、最小物理块数的确定

— 这里所说的最小物理块数,是指


能保证进程正常运行


所需的最小物理块数。

— 当系统为进程分配的物理块数

小于此值

时,进程将无法运行。

— 进程应获得的最少物理块数与计算机的


硬件结构


有关,取决于

指令的格式、功能和寻址方式


2、物理块的分配策略

— 在请求分页系统中,可采取两种内存分配策略,即


固定





可变分配


策略。在进行置换时,也可采取两种策略,即


全局置换





局部置换


于是可组合出以下三种适用的策略。




1)固定分配局部置换



(Fixed Allocation,Local Replacement)

—- 这是指基于


进程的类型


(交互型或批处理型等),或根据程序员、程序管理员的建议,为每个进程分配


一定数目


的物理块,在


整个运行期间


不再改变。采用该策略时,如果进程在运行中发现缺页,则只能从

该进程在内存

的n个页面中选出一个页换出,然后再调入一页,以保证分配给该

进程的


内存空间不变


(固定分配)。

—- 实现这种策略的困难在于:应为每个进程


分配多少个物理块


难以确定。若太少,会频繁地出现缺页中断,降低了系统的吞吐量;若太多,又必

然使内存中驻留的进程数目减少,进而可能造成CPU空闲或其他资源空闲的情况,而且在实现进程对换时,会花费更多的时间。




2)可变分配全局置换



(Variable Allocation,Global Replacement)

这可能是最易于实现的一种物理块分配和置换策略,已用于若干个OS中。在采用这种策略时,先为系统中的每个进程


分配一定数目的物理块


,而

OS自身也保持一个


空闲物理块队列。


当某进程发现缺页时,由系统从空闲物理块队列中取出一个物理块分配给该进程,并将欲调入的(缺)页装

入其中。这样,凡产生缺页(中断)的进程,都将获得新的物理块。仅当空闲物理块队列中的物理块用完时,OS才能从内存中选择一页调出,该页

可能是系统中

任一进程的页

,这样,自然又会使那个进程的物理块减少,进而使其缺页率增加。




3)可变分配局部置换



(Variable Allocation,Local Replacement)

这同样是基于进程的类型或根据程序员的要求,为每个进程分配一定数目的物理块,但当某进程发现缺页时,只允许从


该进程在内存的页面中


选出

一页换出,这样就


不会影响其它进程的运行


。如果进程在运行中频繁地发生缺页中断,则系统需再为该进程分配若干个附加的物理块,直至该进程

的缺页率减少到适当程度为止;反之,若一个进程在运行过程中的缺页率特别低,则此时可适当减少分配给该进程的物理块数,但不应引起其缺页率

的明显增加。

—- 全局是指置换页面时,换出的页面可能是内存中的任一进程的页面,局部只能是本(缺页)进程的页面。

—- 固定分配指为一个进程分配的物理块是固定的,可变分配指可根据缺页率调整所分配的物理块数。


3、物理块分配算法

— 在采用固定分配策略时,如何将系统中可供分配的所有物理块分配给各个进程,可采用下述几种算法。


1)



平均



分配算法

— 这是将系统中所有可供分配的物理块平均分配给各个进程。例如,当系统中有100个物理块,有5个进程在运行时,每个进程可分得20个物理块。

这种方法看似公平,实际不然,因为它


未考虑到各进程本身的大小


假如有一个进程大小为200页,只分配给它20个块,它必然有很高的缺页率;而另一进程只有10页,却有10个物理块闲置未用。


2)按



比例



分配算法

— 这是


根据进程的大小按比例分配


物理块的算法。如果系统中共有n个进程,每个进程的页面数为Si,则系统中各进程页面数的总和为:

S=S1+S2+…+Si+…+Sn-1+Sn (i=1~n)     又假定系统中可用的物理块总数为m,则每个进程所能分到的物理块数为bi,则有:

bi=(Si*m)/S   其中,b应该取整,它必须大于最小物理块数。


3)考虑



优先权



的分配算法

— 在实际应用中,为了照顾到


重要的、紧迫的


作业能尽快地完成,应为它分配较多的内存空间。通常采取的方法是把内存中可供分配的所有物理块

分成两部分:一部分按比例地分配给各进程;另一部分则根据各进程的优先权,适当地增加其相应份额后,分配给各进程。

在有的系统中,如

重要的实时控制系统

,则可能是

完全按优先权

来为各进程分配其物理块的。


4、调页策略

—- 预调页策略和请求调页策略

—- 确定从何处调入页面

请求分页系统中的外存分为两部分:


文件区





对换区


(用于存放文件的文件区和用于存放对换页面的对换区)。

通常,对换区采用连续分配方式,文件区是采用连续分配方式。故对换区的磁盘I/O速度比文件区的高。何处调入分3种情况:

— 1)系统拥有足够的对换区空间,可全部从对换区调入所需页面。在进程运行前,需将与该进程有关的文件从文件区


拷贝


到对换区。

— 2)系统缺少足够的对换区空间,


不会被修改


的文件都直接从

文件区

调入,当换出这些页面时,由于它们未被修改而不必将它们换出,以后

再调入时,仍从文件区直接调入。对于那些


可能被修改


的部分,在将它们换出时,需调到

对换区

,以后需要从对换区调入。

— 3)Unix方式。凡是


未运行过


的页面,都应从文件区调入。曾经


运行过但又被换出


的页面,放在对换区,调入时从对换区调入。Unix系统运行

页面共享,因此某进程所请求的页面有可能已被其它进程调入内存,此时无需再从对换区调入。