[操作系统概念]第六部分——内存管理(4):帧分配

  • Post author:
  • Post category:其他


帧分配算法

之前说的都是操作系统给进程分配了一定数量的帧(少于页的数量),用于虚拟内存的页置换,但是这个一定数量如何而来?由帧分配算法来决定。

首先,我们需要知道,给一个进程的帧有上限,不能超过内存可容纳的帧数;有下限,不能出现进程需要一次性访问3帧(间接引用)才能寻到址,但因为给的帧太少,比如只有2帧,所以怎么也寻不到址的情况。帧的下限由计算机的结构来确定,计算机允许几次间接寻址,一次可以有几个寻址指令,结合一下可以确定帧的下限。

帧分配算法:

  1. 平均分配:即最大帧除以进程总数得到的值,但是没有考虑到进程可能需要不同大小的内存空间。
  2. 按进程大小比例分配:按照进程的页(地址空间)的大小,按比例给进程分配帧数
  3. 按优先级分配:对于高优先级的进程,可以有更大的帧空间以便更快的执行。

帧分配策略:

  • 全局分配:允许进程抢占其他进程分配的帧。有更好的吞吐量,是更常用的策略,但是进程无法控制自己的页错误率,视外界情况不同,执行效果有差异。
  • 局部分配:不允许进程抢占其他进程分配的帧。进程可以把握页错误率,不同时期执行效果相同。

系统颠簸

随着进程的增加,CPU的利用率也会增加,但是如果同一时间进程过多,每个进程占用的帧就相应变少了,就可能出现进程执行时需要经常性地页置换,CPU利用率又降低了的现象,而这时,操作系统还以为是进程数量太少导致的,还继续加入进程,导致每个进程占用的帧更少,CPU利用率更低的恶性循环,这种现象成为系统颠簸。

解决方法有两种:

1. 工作集合策略:计算每一个进程的使用帧的窗口(工作集合)近似得到进程需要的帧数,如果这个数大于内存的物理帧数,则说明系统颠簸了,需要减少进程。

2. 页错误概率策略:通过设计页错误率的上限和下限,停止进程或者加入进程。



版权声明:本文为lqadam原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。