操作系统 - 虚拟内存

  • 简述

    计算机可以寻址比系统上实际安装的数量更多的内存。这个额外的内存实际上被称为虚拟内存它是硬盘的一部分,用于模拟计算机的 RAM。
    这种方案的主要明显优势是程序可以比物理内存大。虚拟内存有两个用途。首先,它允许我们通过使用磁盘来扩展物理内存的使用。其次,它允许我们拥有内存保护,因为每个虚拟地址都被转换为一个物理地址。
    以下是不需要将整个程序完全加载到主存储器中的情况。
    • 用户编写的错误处理例程仅在数据或计算中发生错误时使用。
    • 程序的某些选项和功能可能很少使用。
    • 许多表被分配了固定数量的地址空间,即使实际上只使用了少量的表。
    • 执行仅部分在内存中的程序的能力将抵消许多好处。
    • 将每个用户程序加载或交换到内存中所需的 I/O 数量会更少。
    • 程序将不再受可用物理内存量的限制。
    • 每个用户程序可以占用更少的物理内存,同时可以运行更多的程序,相应地增加 CPU 利用率和吞吐量。
    用于通用用途的现代微处理器、内存管理单元或 MMU 内置于硬件中。MMU 的工作是将虚拟地址转换为物理地址。下面给出了一个基本示例 -
    虚拟内存
    虚拟内存通常通过请求分页来实现。它也可以在分段系统中实现。需求分段也可以用来提供虚拟内存。
  • 请求分页

    按需分页系统与交换分页系统非常相似,其中进程驻留在辅助内存中,页面仅按需加载,而不是提前加载。当发生上下文切换时,操作系统不会将任何旧程序的页面复制到磁盘或将任何新程序的页面复制到主内存中,而是在加载第一页后开始执行新程序并获取该页面程序的页面,因为它们被引用。
    请求分页
    在执行程序时,如果程序引用了一个在主内存中不可用的页面,因为它刚刚被换出,处理器会将这个无效的内存引用视为page fault并将控制权从程序转移到操作系统以请求将页面返回内存。

    优点

    以下是需求分页的优点 -
    • 大虚拟内存。
    • 更有效地使用内存。
    • 多道程序的程度没有限制。

    缺点

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

    页面替换算法是操作系统用来决定哪些内存页面要换出,在需要分配内存页面时写入磁盘的技术。每当发生页面错误并且空闲页面不能用于分配目的时,就会发生分页,从而导致页面不可用或空闲页面的数量低于所需页面。
    When the page that was selected for replacement and was paged out, is referenced again, it has to read in from disk, and this requires for I/O completion. 这个过程决定了页面替换算法的质量:等待换页的时间越短,算法就越好。
    页面替换算法查看硬件提供的访问页面的有限信息,并尝试选择应该替换哪些页面以最小化页面未命中的总数,同时平衡算法的主存储成本和处理器时间本身。有许多不同的页面替换算法。我们通过在特定的内存引用字符串上运行算法并计算页面错误的数量来评估算法,
  • 参考字符串

    内存引用字符串称为引用字符串。引用字符串是人为生成的,或者是通过跟踪给定系统并记录每个内存引用的地址来生成的。后一种选择会产生大量数据,我们注意到两件事。
    • 对于给定的页面大小,我们只需要考虑页码,而不是整个地址。
    • 如果我们有一个页面的引用p,然后是任何紧随其后的对页面的引用p永远不会导致页面错误。在第一次引用之后,页面 p 将在内存中;紧随其后的引用不会出错。
    • 例如,考虑以下地址序列 - 123,215,600,1234,76,96
    • 如果页面大小为 100,则引用字符串为 1,2,6,12,0,0
  • 先进先出 (FIFO) 算法

    • 主存储器中最旧的一页将被选择替换。
    • 易于实现,保留列表,从尾部替换页面并在头部添加新页面。
    先进先出
  • 最优页面算法

    • 最优页面替换算法在所有算法中页面错误率最低。存在一种最佳页面替换算法,称为 OPT 或 MIN。
    • 更换最长时间不使用的页面。使用要使用页面的时间。
    最佳页面替换
  • 最近最少使用 (LRU) 算法

    • 主存中最长未使用的页面将被选择替换。
    • 易于实施,保留列表,通过回顾时间替换页面。
    最近最少使用
  • 页面缓冲算法

    • 要快速启动进程,请保留一个空闲帧池。
    • 在页面错误时,选择要替换的页面。
    • 在空闲池的框架中写入新页面,标记页表并重新启动进程。
    • 现在将脏页写出磁盘,并将保存替换页的帧放入空闲池中。
  • 最少使用(LFU)算法

    • 计数最少的页面将被选中进行替换。
    • 这种算法会遇到这样的情况:在进程的初始阶段页面被大量使用,但之后再也不会使用。
  • 最常用(MFU)算法

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