使用工作集的基本原理:局部性原理
程序的局部性原理是由Danning.P于1968年提出的,它是指程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也仅局限于某个区域。局部性原理可表现在以下两个方面:
-
时间局部性。如果程序中的某条指令一旦执行,则不久以后该指令可能再次执行;如果某个数据被访问,则不久以后该数据可能被再次访问。产生时间局部性的典型原因是:程序中存在大量的循环操作。
- 空间局部性。一旦程序访问了某个存储单元,则不久以后,其附近的存储单元也将被访问,及程序在一段时间内所访问的地址,可能集中在一定的范围内,其典型情况便是程序的顺序执行。
引入工作集的原因:抖动trashing
通过上图我们可以发现:随着并发进程的数量增多,cpu利用率并不是线性增长,而是到达了一个顶峰后逐渐的降低。由此可见,抖动对cpu利用率有很大的影响。如果我们想要进一步提高cpu的利用率,就要尽量降低抖动发生的次数,也即是要尽量让有很大可能性会被再次访问的页面留在内存当中,调出不太可能会被再次访问的页面。
首先明确几个概念:
- 抖动。是指刚调到外存的页面很快又被访问到,又需要调入内存,导致进程频繁的产生缺页中断,将大部分时间用于页面置换,而极大地降低了cpu的利用率。
- 工作集