操作系统 - 虚拟内存



计算机可以寻址的内存量超过系统上实际安装的物理内存量。这部分额外的内存实际上称为**虚拟内存**,它是硬盘上的一个分区,用于模拟计算机的 RAM。

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

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

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

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

  • 许多表被分配了固定数量的地址空间,即使实际上只使用了该表的一小部分。

  • 能够执行仅部分加载到内存中的程序将抵消许多好处。

  • 加载或交换每个用户程序到内存所需的 I/O 次数将减少。

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

  • 每个用户程序都可以占用更少的物理内存,可以同时运行更多程序,从而相应地提高 CPU 利用率和吞吐量。

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

Virtual Memory

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

按需分页

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

Demand Paging

在执行程序期间,如果程序引用一个在主内存中不可用的页面,因为该页面不久前被交换出去了,则处理器将此无效内存引用视为**页面错误**,并将控制权从程序转移到操作系统以请求将页面调回到内存中。

优点

以下是按需分页的优点:

  • 大型虚拟内存。
  • 更有效地利用内存。
  • 多道程序设计的程度没有限制。

缺点

  • 与简单的分页管理技术相比,处理页面中断的表数量和处理器开销更大。

页面置换算法

页面置换算法是操作系统用来决定何时将哪些内存页面交换出去、写入磁盘的技术,当需要分配内存页面时。当发生页面错误并且无法使用空闲页面进行分配时,就会发生分页,原因是页面不可用或空闲页面数量低于所需页面数量。

当选择的要替换的页面被换出时,如果再次引用该页面,则必须从磁盘读取它,这需要 I/O 完成。此过程决定了页面置换算法的质量:等待页面调入的时间越短,算法越好。

页面置换算法查看硬件提供的关于访问页面的有限信息,并尝试选择哪些页面应该被替换以最大程度地减少页面错误的总数,同时平衡算法本身的主存储器和处理器时间的成本。存在许多不同的页面置换算法。我们通过在特定的内存引用字符串上运行算法并计算页面错误的数量来评估算法。

引用字符串

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

  • 对于给定的页面大小,我们只需要考虑页号,而不是整个地址。

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

  • 例如,考虑以下地址序列:123、215、600、1234、76、96

  • 如果页面大小为 100,则引用字符串为 1、2、6、12、0、0

先进先出 (FIFO) 算法

  • 主存中最旧的页面将被选中以进行替换。

  • 易于实现,保持列表,从尾部替换页面并在头部添加新页面。

First In First Out

最佳页面算法

  • 最佳页面替换算法具有所有算法中最低的页面错误率。存在最佳页面替换算法,称为 OPT 或 MIN。

  • 替换最长时间内不会使用的页面。使用页面将要使用的时间。

Optimal page replacement

最近最少使用 (LRU) 算法

  • 主存中最长时间未使用的页面将被选中以进行替换。

  • 易于实现,保持列表,通过回顾时间替换页面。

Least Recently Used

页面缓冲算法

  • 为了使进程快速启动,请保留一个空闲帧池。
  • 发生页面错误时,选择一个页面进行替换。
  • 将新页面写入空闲池的帧中,标记页面表并重新启动进程。
  • 现在将脏页面写入磁盘并将保存替换页面的帧放入空闲池中。

最不常用 (LFU) 算法

  • 计数最小的页面将被选中以进行替换。

  • 此算法存在一个问题,即页面在进程的初始阶段被大量使用,但之后再也不会被使用。

最常用 (MFU) 算法

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

广告