对于驻留集和工作集的一些看法:

驻留集:对于王道书上说,对于分页式的虚拟内存(注意哦:虚拟内存,你猜为啥要引入请求分页管理方式?),在进程准备执行时,不需要也不可能把一个进程的所有页都都入主存,就比如 GTA5 一百多 g,你内存条就算你 64gb,你都全部读不进去。因此,操作系统必须回到决定进程读取多少页,即决定给特定的进程分配几个页框。给进程分配的物理页框集合(也可以称为物理块集合,这样你就能明白,其实跟页面置换算法是一样的,驻留集驻留在内存中)就是这个进程的驻留集。

工作集:某段时间间隔内,进程要访问的页面的集合。基于局部性原理,可以用最近访问的页面来确定工作集。一般来说工作集 W 可以由时间 t 和工作窗口Δ来确定。实际应用中,工作集窗口会设置得很大,即对于局部性(时间局部性和空间局部性)良好的程序,工作集大小一般会比工作集窗口Δ小很多。

工作集模型的工作原理:让系统跟踪每个进程的工作集,并为进程分配大于其工作集的物理块,落在工作集内的页面需要调入驻留集(内存)中,而落在驻留集外的页面可从驻留集中换出。有空闲的物理块则可再调入一个进程到内存。如所有的进程的工作集之和超过了可用物理块总数,则操作系统会暂停一个进程,将其页面调出并将物理块分配给其他进程防止抖动。

6afbb44770fe51f5cb59ad0f7785630e.png 

比如:内存 2GB,一页 4KB,一个内存 2¹⁹页,工作集窗口Δ为 5, 给 gtA 5 分配 4 页,给 soulApp 分配 5 页,如上图是 gtA5 的进程对页面访问次序,则在 t1 时刻进程的工作集为{2,3,5},t2 时刻的工作集{1,2,3,4},

 在 t1 时如果给 gtA5 分配驻留集(分配的物理块)为 3(此时驻留集里面是{2,3,5})或者 4 (此时驻留集里面是{2,3,4,5}),则到 t1 的后1 个时刻访问的页号为 1,则会发生缺页,如给他分配的驻留集是 5(此时驻留集里面是{1,2,3,4,5}),则此时不会缺页。

所以一般来说,驻留集要大于工作集,就是给分配的物理块集合,要大于一段时间内访问的(去重后的)页面集合,联想页面置换算法,比如分配三个物理块集合驻留集就是 3,假设此时驻留集的页面为 {1,2,3},一段时间间隔内,工作集窗口为 5,假设工作几窗口的页面为{1,2,3,4,4},则这 5 个页号去掉重复号剩下的就是工作集即{1,2,3,4},工作集依次调入时(装入内存),则发生缺页,当然咯,如果局部性好,工作集窗口为{2,1,3,1,2}工作集为{1,2,3},因此调入则不发生缺页。若工作集大于驻留集,则很容易缺页,引起抖动。

页表中的页表项的有效位(Valid/Invalid 位,通常简写为 V/I 位)用于指示该页是否当前存在于物理内存中(即驻留集中])。具体来说:有效位为 1:表示该页当前存在于物理内存中,可以进行地址转换。
有效位为 0:表示该页当前不在物理内存中,需要通过缺页中断处理来加载该页到物理内存

如有不对,请多指正!٩(๑^o^๑)۶

 

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐