“工作集窗口给出“活跃需求”的可计算定义,并区分引用历史与实际驻留。局部与全局替换用同一12步访问复算跨进程干扰;抖动与负载控制再把缺页数换成声明成本下的历时,并检查减少活跃进程后是否真的释放…”
一个进程申请过100页,并不意味着下一小段计算要同时用到100页。页与页表映射理路页表地址转换与访问权限Page table address translation · VPN PFN offset · 虚实地址转换由虚页号、页内偏移与PTE计算物理地址,分别检查驻留、访问类型和用户权限,并建立可检查的隔离不变量。把访问地址归到虚拟页;工作集模型再从最近访问过哪些页,估计当前阶段需要保留多少信息。
形式陈述
用自己的引用次数作时钟
令进程P的页引用序列为
这里
工作集是历史记录,驻留集
直觉
窗口滑动时,移走的是一次引用
把最近
例如窗口内容为 b d d d,工作集是 e,弹出b,得到 d d d e,工作集变成
同一进程若被暂停一分钟,它没有产生新引用,
例子与边界
九次访问的完整账本
令 a b a c b d d d e。每行在本次访问完成后记录。
| 最近至多4次引用 | 大小 | ||
|---|---|---|---|
| 1 | a | 1 | |
| 2 | a b | 2 | |
| 3 | a b a | 2 | |
| 4 | a b a c | 3 | |
| 5 | b a c b | 3 | |
| 6 | a c b d | 4 | |
| 7 | c b d d | 3 | |
| 8 | b d d d | 2 | |
| 9 | d d d e | 2 |
到6时,窗口里四次访问恰好都不同,需求估计为4;到9时,程序集中使用d与e,窗口仍长4,但不同页数降到2。窗口长度是观察范围,不是强制保留的页数。
若把窗口改成3,c b d,大小3;改成6则看 a b a c b d,大小4。对固定时刻,较短窗口包含于较长窗口,因此大小随
合计物理需求前,先识别共享内容
不同进程里同一个虚拟页号a,不一定指同一内容。估计全机页框需求时,先把各页映射为待驻留的底层页身份:私有页带进程身份,共享页则用共同对象与偏移身份。只有确实能由同一物理内容支撑的页才能去重。
假设P工作集为
不是6。若一方写入触发写时复制,S可能变成两个不同底层页,之后就要重新计数。这个联合集扩展用于本页实验;原始论文推导某些整体性质时明确假设工作集不重叠,不能直接把那些加法式用于共享场景。
过去看起来很小,下一步仍可能换阶段
在
相反,大窗口可能留下上一阶段已经不用的页。程序从a、b阶段转到d、e阶段后,旧页会在窗口里保留一段时间。加大窗口能减少过早遗忘,却也可能抬高无用保留量;没有仅凭窗口定义就能算出的普适最佳
推论与应用
从估计进入负载控制,还差一个动作
设当前允许活跃的进程集合为A,按底层页身份去重后的联合工作集大小为
严格记录每次内存引用通常成本很高。实际系统可以采样访问位、按时间桶近似最近使用情况;Clock替换理路Clock页替换与回收资格Clock page replacement · Second-chance page replacement用环形指针和访问位近似近期使用,同时把选受害者、撤销映射、脏页保存与实际复用分成不同步骤。就利用访问位决定候选页,但一个引用位并不等于本页精确的四次引用窗口。比较测量结果时,要同时写清采样频率和丢失了哪些时间细节。
复算时请先列窗口,再去重,最后讨论它与驻留预算是否匹配。这个顺序能避免把“最近四次访问”“四个不同页”和“已经分到四帧”当作同一件事。
参考资料
- Peter J. Denning,“The Working Set Model for Program Behavior”,Communications of the ACM 11(5),1968,pp.323–333;pp.324、326定义进程时间与工作集,pp.326–328讨论预测、参数和采样。本页离散引用窗口、九步轨迹与共享身份去重为明确的教学变体。