Operating System 简明教程

Operating System - Virtual Memory

计算机可以寻址比系统物理安装量更多的内存。此额外内存实际上称为 virtual memory ,它是设置用于模拟计算机 RAM 的硬盘一部分。

此方案的主要明显优点在于程序可以比物理内存更大。虚拟内存有两个用途。首先,它允许我们通过使用磁盘来扩展物理内存的使用。其次,它允许我们具有内存保护,因为每个虚拟地址都转换为一个物理地址。

以下情况不需要将整个程序完全加载到主内存中。

  1. 用户编写的错误处理例程仅在数据或计算中发生错误时才使用。

  2. 程序的某些选项和功能可能很少使用。

  3. 即使实际上只使用了少量表格,也会为许多表格分配固定数量的地址空间。

  4. 执行仅部分位于内存中的程序的能力会抵消许多好处。

  5. 将每个用户程序加载或换入内存所需的 I/O 数目将减少。

  6. 程序将不再受可用物理内存量的限制。

  7. 每个用户程序可以占用更少的物理内存,可以在同一时间运行更多的程序,从而相应提升 CPU 利用率和吞吐量。

面向通用用途的现代微处理器,内存管理单元或 MMU 已内置到硬件中。MMU 的工作是将虚拟地址转换为物理地址。以下是一个基本示例:

virtual memory

虚拟内存通常通过按需分页实现。它也可以在分段系统中实现。按需分段也可以用于提供虚拟内存。

Demand Paging

按需分页系统与交换分页系统非常相似,其中进程驻留在辅助内存中,并且仅在需要时加载页面,而不是预先加载。当发生上下文切换时,操作系统不会将任何旧程序的页面复制到磁盘或将任何新程序的页面复制到主内存。相反,它只在加载第一页后开始执行新程序,并在引用时获取该程序的页面。

demand paging

在执行程序时,如果程序引用了由于不久前交换出去而不在主内存中的页面,则处理器将这种无效内存引用视为 page fault ,并将控制权从程序转移到操作系统以要求将页面调回到内存。

Advantages

以下是按需分页的优点:

  1. Large virtual memory.

  2. 更有效地使用内存。

  3. 多道程序设计的程度没有限制。

Disadvantages

  1. 表的数量和处理器开销用于处理页面中断,比简单的分页管理技术更多。

Page Replacement Algorithm

页面替换算法是操作系统用来决定将哪些内存页面换出、在需要分配内存页时写入磁盘的技术。分页发生在页面错误发生且不能将空闲页面用于分配目的时,原因是页面不可用或空闲页面的数量低于所需页面。

当选择了要替换并换出的页面后,如果再次引用该页面,则必须从磁盘中读入,这需要 I/O 完成。此过程决定了页面替换算法的质量:等待页面输入所需的时间越少,算法就越好。

页面替换算法会查看硬件提供的有关访问页面的有限信息,并尝试选择应替换的页面以最小化页面缺失总数,同时平衡算法本身的存储器和处理器时间成本。存在许多不同的页面替换算法。我们通过在特定的内存引用字符串上运行算法并计算页面错误数来评估算法。

Reference String

内存引用字符串称为引用字符串。引用字符串是人工生成的,或通过跟踪给定系统并记录每个内存引用的地址而生成的。后一种选择会产生大量的数据,我们注意到两件事。

  1. 对于给定的页面大小,我们仅需考虑页码,而不必考虑整个地址。

  2. 如果我们有一个指向页面 p 的引用,那么任何紧随其后的指向页面 p 的引用都不会导致页面错误。在第一次引用后,页面 p 将驻留在内存中;紧随其后的引用不会发生错误。

  3. 例如,考虑以下一系列地址− 123,215,600,1234,76,96

  4. 如果页面大小为 100,则引用串为 1,2,6,12,0,0

First In First Out (FIFO) algorithm

  1. 主内存中最旧的页面是将被选为替换页面的页面。

  2. 简单易于实施,创建一个列表,从末尾替换页面,并在头部添加新页面。

fifo

Optimal Page algorithm

  1. 最优页面替换算法拥有所有算法中最低的页面错误率。最优页面替换算法是存在的,并且已被称为 OPT 或 MIN。

  2. 替换在最长时间内不会被使用的页面。在要使用该页面时可以使用。

opr

Least Recently Used (LRU) algorithm

  1. 在主内存中未使用最长时间的页面是将被选为替换页面的页面。

  2. 简单易于实施,创建一个列表,通过回溯时间替换页面。

lru

Page Buffering algorithm

  1. 为使一个进程快速启动,保留一个空闲帧池。

  2. 当出现页面错误时,选择一个页面进行替换。

  3. 在空闲池的帧中写入新的页面,标记页表,并重新启动进程。

  4. 现在将脏页面从磁盘中写出,并将所替换页面的持有帧放入空闲池中。

Least frequently Used(LFU) algorithm

  1. 计数最小的页面是将被选为替换页面的页面。

  2. 当一个页面在进程的初始阶段被大量使用,但之后不再被使用时,此算法会出现问题。

Most frequently Used(MFU) algorithm

  1. 此算法基于以下论点:计数最小的页面可能是刚刚被调入,尚未被使用。