操作系统 - 虚拟内存


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

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

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

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

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

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

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

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

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

  • 每个用户程序可以占用更少的物理内存,同时可以运行更多的程序,CPU 利用率和吞吐量也相应增加。

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

虚拟内存

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

请求寻呼

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

请求寻呼

在执行程序时,如果程序引用了主内存中因不久前被换出而不可用的页面,则处理器会将这种无效的内存引用视为页面错误,并将控制权从程序转移操作系统要求将页面放回到内存中。

优点

以下是请求分页的优点 -

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

缺点

  • 用于处理页面中断的表数量和处理器开销量比简单页面管理技术的情况要大。

页面替换算法

页面替换算法是操作系统在需要分配内存页面时决定换出哪些内存页面并写入磁盘的技术。每当发生页面错误并且空闲页面不能用于分配目的核算时就会发生分页,从而导致页面不可用或空闲页面的数量低于所需页面的数量。

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

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

参考字符串

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

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

  • 如果我们有对页面p 的引用,那么任何紧随其后的对页面p 的引用都不会导致页面错误。页 p 将在第一次引用后进入内存;紧接着的参考文献不会出错。

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

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

先进先出 (FIFO) 算法

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

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

先进先出

最佳页面算法

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

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

最佳页面替换

最近最少使用 (LRU) 算法

  • 主存中最长时间未被使用的页将被选择替换。

  • 易于实施,保留列表,通过回顾时间来替换页面。

最近最少使用

页缓冲算法

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

最不常用(LFU)算法

  • 计数最少的页面将被选择进行替换。

  • 该算法会遇到这样的情况:页面在进程的初始阶段被大量使用,但随后再也不会被使用。

最常用(MFU)算法

  • 该算法基于这样的论点:计数最小的页面可能刚刚被引入并且尚未被使用。