光了解Page的基本原理还不够,还需要知道如何设计存储才能达到一个更好的性能。
页式存储管理
工作集模型
在虚拟页存储管理中,当一个进程被启动,其所有页面都还在外存。当CPU取第一条指令时,就会引发缺页中断。因此,在程序启动一开始,很容易发生缺页中断,工作一段时间后再维持稳定,如图所示:
这种工作方式被称为demand paging
:页面不是预先被装入内存,而是根据需要随时调整。
访存的局部性与工作集
- 访存的局部性(locality):在进程运行的任何阶段,它都只访问它的页面中较小的一部分
- 工作集(working set):一个进程当前使用的页的集合
- 抖动:分配给进程的物理页面数太小,无法包含其工作集,频繁地在内存和外存间换页
- 工作集模型:页式存储管理系统跟踪进程的工作集,并保证在进程运行以前它的工作集就已经在内存中了。在进程运行之前预先装入页面也叫做预先调页(prepaging)。
分配策略
当发生缺页时,页面置换算法作用的范围不同,对应不同的分配策略:
- 局部页面置换算法:在进程所分配的页面范围内选取将被置换的页面
- 每个进程分配固定大小的内存空间
- 全局页面置换算法:在内存中所有的页面范围内选取被置换的页面 <