
将内存作为磁盘的缓存,是缓存的一种
内存虚拟化:连续的大的内存的抽象

内存映射文件
建立映射的时候,数据并没有读进来;当访问内存地址的时候,发现没有读进来,才会再读进来(页表)
MMap的最大好处是不知道要用到文件的哪一部分,让操作系统为我决定
MMap如何实现
如何知道访问的页还没从磁盘读进来

物理页调度策略
如何从物理页找到页表项?(不讲)
驱逐哪个页?

LRU的完全实现是很复杂的,可以用另一个策略(时钟算法)去近似
Why we can implement LRU for TLB entry replacement, but not demand paging replacement?
- TLB is purely handled in hardware(MMU)
- TLB has fewer entries (typically 16-512)
时钟算法

这里置换完页之后,指针应该指向3了,而不应该留在20,图有问题
相当于套了一层复活甲,扫到之后只是掉甲
指针移动很快这是一个不好的迹象,因为:
- 说明系统中大多数页面都是活跃的,很少有空闲页面
- 需要多次遍历才能找到可替换的页面,增加了开销
- 可能预示着系统即将发生颠簸(thrashing)
如果指针移动很慢的情况:
- 说明容易找到use bit=0的页面进行替换
- 表明系统中存在较多未被频繁访问的页面
- 这是一个好的迹象,因为:
- 系统有充足的非活跃页面可供替换
- 页面替换的开销较小
- 系统运行在一个健康的状态
N越大越接近LRU,但是扫的速度变慢,开销越大
因为清除Dirty pages 和 Clean Page的代价不同,驱除 Dirty page的代价更大,所以有时候会给Dirty pages N = 2

Summary
Min-Max的思想,让最大值尽量小,让最小值尽量大,驱逐内存占用最大的
To support demand paging, what do CPU/OS contribute?
- CPU:memory management (MMU), a few bits in page table entry, etc
- OS: page table manipulation, eviction strategy, page fault handler, etc
