当前位置: > 论文中心 > 科技论文 >

页面置换算法与系统颠簸分析(3)

时间:2013-11-01 13:06 点击:
为什么说老化算法只是LRU的一个近似?下面用一个例子来说明。页面A和页面B的计数器分别为00100000和00101000。它们都是在最近的两个时钟周期内未被访问,但是没有精确的记录。 LRU中是按指令而不是时钟周期记录的,

  为什么说老化算法只是LRU的一个近似?下面用一个例子来说明。页面A和页面B的计数器分别为00100000和00101000。它们都是在最近的两个时钟周期内未被访问,但是没有精确的记录。

  LRU中是按指令而不是时钟周期记录的,老化算法中只知道它们都是在最近的两个时钟周期内未被访问,但是不知道具体的先后顺序(一个时钟周期有多个指令,A,B总有一个更先被访问)。因此在老化算法中只能看它们计数器值的大小来决定,不是真正的最近最少使用算法,仅仅是它的一个近似。

  第二个与LRU的区别是,老化算法的计数器只有有限位数,限制了其对以往页面访问历史的记录。

  2系统颠簸的分析与解决

  2.1系统颠簸的概念

  颠簸(Thrashing)(又称抖动)就是指当内存中已无空闲空间而又发生缺页中断时,需要从内存中调出一页程序或数据到磁盘的交换区中,如果算法不适当,刚被换出的页面很快被访问,需重新调入,因此需再选一页调出,而此时被换出的页面很快又要被访问,因而又需将它调入,如此频繁更换页面,以致花费大量的CPU时间,极大地降低系统的效率,我们称这种现象为"颠簸"(或"抖动")。一般如果每执行几条指令程序就会发生一次缺页中断,那么就可以称这个程序发生了颠簸。

  2.2系统颠簸的产生

  2.2.1局部页面置换算法与全局页面置换算法

  页面置换算法可以分为两大类,全局置换和局部置换。全局置换允许一个进程从所有页帧集合中选择一个页帧置换,而不管该帧是否已经分配给其他进程,即一个进程可以从另一个进程中拿到帧。局部置换要求每个进程仅从自己的分配帧中进行选择。局部置换和全局置换的一个示例如下:如图4所示,三个进程A,B,C构成了可运行进程的集合。假设页面置换算法是LRU算法,每个页面的生存时间列在页面的右边。当进程A产生缺页中断时,如果采用全局置换算法,将选择所有页面中生存时间最少的页面B3进行置换。如果采用局部替换算法,将选择分配给A的所有页面中生存时间最少的页面A6进行置换。

  2.2.2因为物理内存不足而产生系统颠簸

  采用全局页面置换时容易产生系统颠簸,即使是使用最优页面置换算法的全局页面置换也不例外。因为当某个进程需要更多的页帧时,为了增加该进程的页帧数目,可能直接导致另一进程的页帧数目减少。当整个系统的物理块不能满足所有进程的需要时,缺页率将持续维持于一高水平值,意味着颠簸的产生。其具体表现形式如下:

  (1)进程竞争临界资源

  考虑这样的情况:系统中已不存在空闲物理块,而进程A却要求增加物理块,于是,中断处理程序只得将原属于进程B的物理块分配给进程A;同样地,进程B又分配到原属于进程C的物理块,如此下去。在一定时候,各缺页进程都将被阻塞,就绪队列为空,颠簸从此形成。

  (2)增加多道程序度

  当CPU利用率处于低水平时,为提高多道程序度,调度程序要求从后备输入队列选择进程加载到内存。图5可清楚地说明这种情形下颠簸的形成原因。首先,随着多道程序度的增加,CPU利用率随之增加而达到一个理论极值。但在极值点右边,再增加多道程序度,因为进程事实上只能从已加载的进程处获得页帧,从而使得更多的进程因缺页而阻塞,随着更多的进程执行内外存的I/O操作,CPU利用率反而更低;为提高CPU利用率,调度程序又要求调入新进程.如此形成恶性循环,系统诸进程都将缺页,颠簸形成。

  2.2.3因为页面置换算法而产生颠簸

  基于局部性原理,几乎所有的页面置换算法总是试图从当前正在引用的页面去"预测"将要引用的页面,据此产生淘汰页和置换页。大多数情形下,这种预测的命中率可以很高。但对于特定的程序(如有大量的跳转语句的程序),命中率将很低,其结果很可能是所选择的淘汰页却是即将要引用的页;而从磁盘置换到内存的页面在最近很长时间却不会被引用。不得已,继续进行页面置换,反反复复,颠簸形成。当然,不应用局部性原理的页面置换算法在大多数的情形下都有可能产生颠簸。

  2.3系统颠簸的解决

  解决系统颠簸主要有3个方式:好的页面替换算法;减少运行的进程数;增大内存。

  这里主要分析如何使用好的页面替换算法尽量避免颠簸的发生。

  (1)局部置换

  采用局部置换算法,当某个进程产生缺页中断时,只允许从本进程分配的页帧中选择置换页面,而不能从其他进程处拿到帧,就不会使其他进程也发生颠簸,可将颠簸框定在一个特定的、较小的范围内。

  当然,这种方法并不理想。全局置换提供了更好的性能,这与局部分配本身是矛盾的。另外,它并不能从根本上防止颠簸,只能局限其范围。如果某个进程处于颠簸状态,则其将长期处于阻塞队列,不断地进行内外存交换,又必然会影响其他进程进行缺页处理。

  (2)动态调整页面置换算法

  页面置换算法与实际应用相关,对于大多数的进程,与置换算法同时吻合了局部性原理,从而缺页率低。而其余少数进程因与局部性原理相背,而使"预测"失效,其缺页率偏高可能引发颠簸。

  因此,我们可以在一个系统中预备2种以上不同的选择淘汰页和置换页策略的置换算法,并定义一个缺页率的临界值,在缺页处理程序中设置一个判断,当缺页率大于临界值时改用另一种页面置换算法。

  (3)跟踪缺页率

  根据局部性原理,绝大多数时候,进程是从一个局部区域转移到另一个局部区域执行。所以,必须有足够的页帧供使用,以减少缺页,避免颠簸。到底应为每个进程分配多少页帧呢,实际上,它是系统拥有总的页帧数目与当前系统实际应用相关的一个经验值。这从缺页率与所分配的页帧数关系曲线得到证实。(如图6所示)在拐点附近,每增加(减少)进程的页帧数目都能显著地改变缺页率。


   论文榜(www.zglwb.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导代理,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。


栏目列表
联系方式
推荐内容
 
QQ在线咨询
投稿辅导热线:
189-6119-6312
微信号咨询:
18961196312