0%

Memory Management

Memory Management.png

Why Memory Management

没有内存管理的时代(单进程)岁月静好,而多进程出现了问题

虚拟内存

虚拟内存.png

目的

  • 让物理内存扩充成更大的逻辑内存,从而让程序有更多的可使用内存

内存分页

  • 概念

    • 每个程序有自己的地址空间,这些地址空间被分为很多拥有连续地址范围的页面
    • 程序运行时,并非所有页面都要加载进内存。只有需要时,页面才被OS映射到物理内存
    • 页面可以被交换(和磁盘)
    • 程序里用到的是虚地址
  • 分页系统地址映射

    • MMU(内存管理单元)MMU.png

      • 作用

        • 持有页和页框的映射表,负责地址空间和物理内存的转换
      • 虚拟地址到物理地址的翻译过程翻译过程.jpg

    • 页面置换算法

      • 什么情况下需要进行页面置换

        • 新的进程没有足够的内存
      • 分类

        • 最优置换算法(OPT)

          • 特点

            • Optimal but unreliazable
            • Page fault数最小
            • 替换最后使用的进程
          • 作用

            • 业界标杆,仅做参考
        • LRU

          • 将最近最久未使用的页面替换出
        • NRU

          • 状态位

            • R

              • 页面被访问一次设置为1,定期清零
            • M

              • 页面被修改一次设置为1
          • 缺页中断时,将RM编号最小的页面替换出去

        • FIFO

          • 先进先出
        • 第二次机会算法第二次机会算法.png

          • FIFO的改进,如果页面被访问过,多一次不被替换的机会
        • 时钟clock时钟算法.png

          • 第二次机会算法的改进,将链表首位相连

内存分段

  • 特点

    • 段的长度可以不同,并且可以动态增长
    • 使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护
  • 缺点

    • 内存碎片
    • 内存交换效率低

段页式

  • 先将地址空间划分为段,段内再划分页面