操作系统原理:全局页面置换算法、工作集页置换、常驻集页置换、抖动问题

          程序在运行过程中具有阶段性,可能刚开始的时候需要访问的内存很多,之后访问的内存可能会很少。如果操作系统给每个程序分配固定的物理页那么就显得不灵活,有没有办法动态地给程序分配页帧呢,在需要访问很多内存的时候多分配点页,不需要访问过多内存的时候少分配点页?

         工作集模型:工作程序需要有局部性原理(邻近的代码变量分配在相邻的空间,一条指令的一次执行和下次执行都在很短的时间)。工作集是一个进程当前正在使用的逻辑页面集合。可以用 W(t,Δ) 二元式表示t时刻Δ窗口中的页面组成的集合, ,其中t 表示当前执行时刻,而Δ表示工作集窗口,是一个定长的页面访问的时间窗口 。 |W(t,Δ)| 表示工作集大小,页面数量。

         

         常驻集概念:常驻集是工作集的一种,指在当前某个时刻,进程实际驻留在内存当中的页面集合。工作集是需要访问在内存的页面集合。由于在某个时刻需要访问的内存数量有限,所以整个执行过程中常驻集是有最大值的,当操作系统给程序的常驻集太大也可能造成空间上的浪费。

一、工作集的页置换算法

       工作集的页置换算法并不是只有发生缺页中断时才把页换出到外存。随着程序在执行,工作集的窗口会跟着挪动,如果页不在工作集窗口中就会把页换出

这种置换算法虽然增加了缺页中断,但是却可以有效地保留最近访问的页,提前换出内存中的物理页,给其他应用程序提供更多的内存空间,达到动态分配内存空间的目的。与此同时,由于大部分写硬盘操作是提前完成的,所以当发生缺页中断时,大多数情况只需要写内存操作就行。

二、缺页率页面置换算法 (PFF)

       上述算法的窗口大小是固定的,而在PFF算法中,窗口大小是可以变化的。在每个进程运行开始时,先根据程序大小分配一定数目的物理页面,在运行过程中再根据缺页率来调整窗口大小。缺页率过低说明需要的物理页面足够,需要减小工作集,过低则表示分配的物理页不够需要增大工作集,来进行动态地调整工作集窗口大小。

      缺页率 = 缺页次数 /内存访问次数    , 也是 缺页次数关于程序执行时间的导数。

      在下例中,Window size 代表缺页中断的时间间隔。

      

    此方法相比工作集算法更灵活,但是实现起来会复杂些。

三、抖动问题

     如果操作系统分配给进程的物理页面太少,则不能包含整个工作集,随着驻留内存的进程数目增加,分配给进程的页面数减少,容易发生频繁的缺页中断,这个现象称之为“抖动”,所以操作系统需要选择一个适当的进程数目和进程需要的帧数,以便在并发水平和缺页率中保持一个平衡。 例如当计算机刚开机时,CPU的利用率很高,随着操作系统运行的时间越来越久,进程的数量越来越多,如果缺页率高CPU可能在频繁地做页的换入换出操作,使CPU的系统利用率低,造成在运行的程序效率低。 如何量化都动问题呢?在性能测试中,需要计算 平均的缺页时间,即大概多久会平均产生一次缺页 ,需要计算出缺页时换入换出时间。 当 平均的缺页时间 接近  缺页时换入换出时间 时,CPU能够高效且高并发的为系统所利用。

猜你喜欢

转载自blog.csdn.net/superSmart_Dong/article/details/116326511
今日推荐