虚拟内存相关笔记

在这里插入图片描述
虚拟内存是计算机系统内存管理的一个功能,它允许程序认为它们有比实际物理内存更多的可用内存。它使用硬盘来模拟额外的RAM。当物理内存不足时,操作系统将利用磁盘空间作为虚拟内存来存储数据。这种机制提高了资源的利用率并允许更大、更复杂的应用程序的执行。

以下是虚拟内存的工作原理和组成:

  1. 分页与页表:

    • 为了实现虚拟内存,操作系统将虚拟地址空间和物理地址空间分成固定大小的块,称为页。
    • 每个虚拟页都有一个对应的物理页,但并不是所有虚拟页都一直保留在物理内存中。
    • 页表是一个数据结构,用于跟踪虚拟页和物理页之间的关系。
  2. 页面置换:

    • 当一个程序需要访问一个不在物理内存中的页时,会触发一个页面错误(page fault)。
    • 操作系统会选择一个物理页,将其内容写回到磁盘(如果该页被修改过),并从磁盘读取所需的页到该物理页中。
    • 页面置换算法(如最近最少使用LRU、先进先出FIFO等)用于确定应该替换哪个物理页。
  3. 交换空间或页面文件:

    • 当物理内存不足时,操作系统使用磁盘上的一部分作为虚拟内存,称为交换空间(Linux)或页面文件(Windows)。
    • 当一个页面从物理内存被移出时,它被存储在这个磁盘空间中。
  4. 优点:

    • 内存抽象: 应用程序不必关心物理内存的实际数量和位置,而是工作在一个连续的、统一的地址空间中。
    • 资源最大化: 虚拟内存允许多个进程共享有限的物理内存,而每个进程都认为它独占了所有的内存。
    • 安全性: 通过虚拟内存,每个进程都运行在其自己的地址空间,这防止了一个进程意外(或恶意地)访问或修改另一个进程的数据。
  5. 缺点:

    • 如果系统过度依赖虚拟内存(即频繁地进行页面置换),性能会受到严重影响,因为磁盘访问速度远慢于RAM。这种现象被称为"页面抖动"。

类比说明:
想象你是一位厨师,正在为一个大型晚宴做准备。你的厨房操作台是你的"物理内存",因为这是你直接使用食材和工具的地方。但是,你有太多的食材和工具,无法全部放在操作台上。这时,你的冰箱和储藏室就起到了"虚拟内存"的作用。

  1. 工作中: 当你制作一个菜肴时,你从冰箱或储藏室取出所需的食材和工具放到操作台上。同样地,当电脑运行一个程序时,它需要从硬盘(相当于你的冰箱/储藏室)中取出数据,放到物理内存(操作台)中。

  2. 空间不足: 如果操作台上的空间不足,你需要做出决策:将一些不急用的食材或工具放回冰箱或储藏室,为即将使用的食材腾出地方。同样,当电脑的物理内存不足时,它会将一些不常用的数据移至硬盘上的一个特定区域(虚拟内存),为即将使用的数据腾出空间。

  3. 取用速度: 从操作台拿东西总是比从冰箱或储藏室拿要快。同理,电脑从物理内存中取数据比从硬盘上的虚拟内存取数据要快得多。

  4. 过度依赖的问题: 如果你频繁地从冰箱和储藏室拿取东西,你的烹饪速度就会变慢。同样,如果电脑过于依赖虚拟内存,它的运行速度也会受到影响。

我们继续使用厨房的例子来解释分页和页表。

  1. 分页

    • 解释: 分页是将计算机的内存划分为许多固定大小的小块,这些小块就叫做"页"。
    • 厨房比喻: 想象你的操作台上有一个特别的蛋糕模型,这个模型可以将一个大蛋糕切成等大的小块。在这里,大蛋糕代表电脑的整个内存或一个大型程序,而蛋糕模型将大蛋糕分成了许多小块,每一小块蛋糕就是一个"页"。
  2. 页表

    • 解释: 页表是一个目录或索引,它记录了每个"页"的位置,无论是在操作台上(物理内存)还是在冰箱/储藏室中(虚拟内存)。
    • 厨房比喻: 想象在操作台旁边有一个食谱,这个食谱告诉你每一小块蛋糕现在放在哪里——是在操作台上,还是在冰箱里。如果你需要找到一个特定的蛋糕块,你只需要查看食谱,而不是去每个地方寻找。这个食谱就像是计算机的"页表",帮助电脑迅速找到每一个"页"的位置。

当程序在运行时,它可能需要某个特定的数据(也就是蛋糕的某一小块)。电脑首先会查看页表(食谱)以确定这个数据当前存储在哪里。如果它在操作台上(物理内存),那么电脑可以直接使用它;如果它在冰箱/储藏室(虚拟内存),那么电脑需要先将其移动到操作台上才能使用。

分页是计算机内存管理中的一种技术,用于将物理内存和虚拟内存分成固定大小的块。以下是分页的具体步骤和机制:

  1. 固定大小的块

    • 无论是物理内存(RAM)还是虚拟内存(通常在硬盘上),它们都被分为固定大小的块,这些块被称为"页"。常见的页大小有4KB, 8KB等,但这取决于操作系统和硬件架构。
  2. 虚拟地址与物理地址

    • 当程序运行时,它在一个叫做"虚拟地址空间"的地方生成地址。这些地址不直接对应物理内存的实际位置。
    • 物理地址是数据在RAM中的实际位置。
    • 分页的任务之一是将虚拟地址映射到物理地址。
  3. 页表的作用

    • 为了完成这种映射,操作系统维护了一个叫做"页表"的数据结构。页表为每一个虚拟页存储一个条目,指示这个虚拟页在物理内存中的位置。
    • 当CPU需要访问一个虚拟地址时,它首先查找相关的页表,找到物理地址,然后访问那个物理位置。
  4. 页失效

    • 如果一个程序试图访问的虚拟页不在物理内存中(这意味着它可能在硬盘的虚拟内存部分),则会发生"页失效"。此时,操作系统必须从虚拟内存中取出所需的页,并将其加载到物理内存中。为了给新页腾出空间,操作系统可能需要选择一个当前在物理内存中的页,并将其移出。

尝试使用一个更简单的比喻来帮助理解页失效和页面置换算法。

想象一下,你有一个小书桌和一个大书架。你正在研究一本书,但书桌上只能放5本书。你的书桌代表物理内存,而大书架代表虚拟内存。

页失效的情境:

  1. 你正在阅读一个新主题,需要从书架上取一本书。
  2. 但是,你的书桌已经放满了5本书,没有空间放新书。
  3. 这种情况,就像页失效,你需要的"数据"(书)不在"物理内存"(书桌)上。

页面置换算法:

  1. 既然书桌上没有空间,你需要决定放回书架的哪一本书来为新书腾地方。
  2. FIFO(先进先出): 你放回最早放到书桌上的那本书,无论你多久没读它。它就像排队,第一个来的书将是第一个离开的。
  3. LRU(最近最少使用): 你思考一下,然后放回你很长时间都没有看过的那本书,因为你认为短期内不太可能再需要它。

所以,这些"页面置换算法"就是你用来决定哪本书放回书架的方法,以便为新书腾出空间。计算机在决定哪一页数据从物理内存中移出以容纳新数据时,也采用类似的策略。

  1. 页面置换算法

    • 为了决定哪一页应该从物理内存中移出,操作系统使用页面置换算法。常见的算法包括LRU(最近最少使用)、FIFO(先进先出)等。
  2. 分页的优点

    • 通过使用分页,操作系统可以使得每个进程都认为它在使用整个连续的地址空间,而实际上,它的数据可以散布在物理内存的各个地方。
    • 分页还有助于保护进程之间的隔离,因为每个进程的地址空间是独立的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值