五、操作系统导论——内存超越(知识点总结)

/ 操作系统导论 / 1 条评论 / 653浏览

超越物理内存:机制

1、前面的假设全是内存空间足够大,能放入所有进程所需的页表。这里开始真实的情况,内存不一定能装下所有进程所需的资源(包括页表)。那为何操作系统要为进程提供足够的存储空间?答案是“方便和易用性”。

2、交换空间:

3、页交换策略:选择哪些页被交换出或被替换(replace)的过程,被称为页交换策略(page-replacement policy)。这里在后面会详细说到。

4、页守护进程:

超越物理内存:策略

1、已知缓存命中和未命中的次数,可以计算程序的平均内存访问时间(Average Memory Access Time,AMAT):

AMAT = (PHit·TM) + (PMiss·TD)

其中TM 表示访问内存的成本,TD 表示访问磁盘的成本,PHit 表示在缓存中找到数据的概率(命中),PMiss 表示在缓存中找不到数据的概率(未命中)。PHit 和PMiss 从0.0 变化到1.0,并且PMiss + PHit = 1.0。
结论:在现代系统中,磁盘访问的成本非常高,即使很小概率的未命中也会拉低正在运行的程序的总体AMAT。所以,必须尽可能地避免缓存未命中,避免程序以磁盘的速度运行。

2、常用策略介绍(重点):

  1. 最优替换策略:替换内存中在最远将来才会被访问到的页,可以达到缓存未命中率最低。
  2. 简单策略(FIFO):当发生替换时,队列尾部的页(“先入”页)被踢出。
  3. 随机策略(RAND):在内存满的时候它随机选择一个页进行替换。
  4. 最近最少使用策略(LRU):特换最近最少使用的页。页替换策略可以使用的一个历史信息是频率(frequency)。

3、在不同工作负载下的表现:
test1

结论1:当工作负载不存在局部性时,使用的策略区别不大。

test2

结论2:在“80-20”负载场景中,随机和FIFO表现类似,都能很好地运行,但LRU 更好,因为它更可能保持热门页。

test3

结论3:在循环工作负载场景中,LRU和FIFO都可能出现最坏情况。随机策略明显更好,虽然距离最优策略还有距离,但至少达到了非零的命中率。

4、近似LRU:
原因:在实际应用中,难以真正实现LRU。所以采用近似LRU算法实现。这里主要指的是始终算法。
时钟算法:

效果:
test4

5、其他的虚拟内存策略:

6、抖动:

含义:当内存就是被超额请求时(正在运行的进程的内存需求超出了可用物理内存),系统将不断地进行换页,这种情况有时被称为抖动(thrashing)。
简单解决思想:准入控制。