操作系统之内存管理 小结

一、内存管理的重要性(需求)

  • 重定位:为程序确定在内存中的区域
  • 进程保护:本进程之外的其他进程一般情况下无法修改本进程数据
  • 共享:不同几进程允许访问相同的共享区域
  • 逻辑组织:e.g. 只读、只写、可读可写
  • 物理组织:程序数据等分配到内存

二、内存分区

1、固定分区

  • 基本假定:操作系统占据内存中固定的部分,内存中的其余部分则供多个用户进程使用

  • 固定分区就是把内存空间划分为若干边界固定的区域

  • 使用大小相等的固定分区

    • 缺点:

      • 程序可能太大不能放到一个分区中
      • 内存利用率底
  • 放置算法

    • 大小相等的固定分区:只要存在可用的分区就放进去

    • 不等的分区:贪心算法放置

      • 优点:分区方案简单、系统开销小、具有一定的灵活性
      • 缺点:
        • 分区的数量在系统生成阶段已经确定,限制了活动进程的数量
        • 进程可能在运行时动态扩展内存,分区的大小限制死了进程的活动

2、动态分区

  • 分区的长度和数量可变

  • 缺点:

    • 产生许多的外部碎片(克服:压缩)
    • 但压缩十分消耗系统资源、且有重定位的问题需要解决
  • 放置算法:

    • 最佳适配:选择与要求最接近的块
    • 首次适配:选择大小足够的第1个可用块
    • 下次适配:从上次放置的地方开始扫描内存,选择下一个大小足够的块

3、伙伴系统

  • 是较为合理的折中方案,克服了固定分区和动态分区的缺陷

4、重定位

  • 考虑相对地址:(1)基址寄存器中的值加上相对地址产生绝对地址;(2)检验绝对地址是否合法

三、分页

  • 内存划分为大小固定、相等的(较小)块,每个进程也被划分成同样大小的块,那么进程中的页就可以分配到内存中的页框

  • 每个进程在内存中浪费的空间,仅仅是进程最后一页的一小部分形成的内部碎片,没有任何外部碎片

  • 每个逻辑地址包括一个页号和在该页中的偏移量。处理器知道如何访问当前进程的页表(页表给出了该进程的每页所对应页框的位置),给出逻辑地址后,处理器使用页表产生物理地址

  • 分页与固定分区不同在于:

    • 分页所使用的分区很小
    • 一个程序可以占据多个分区
    • 这些分区不需要是连续的

四、分段

  • 分段的逻辑地址由段号和偏移量组成
  • 段有最大值限制,但并不要求所有程序的所有段的长度都相等
  • 与动态分区不同:分段方案中,程序可以占据多个分区,且不要求连续,会产生较小的外部碎片
  • 段表除了维护起始地址和偏移地址之外,还维护各段的长度

你可能感兴趣的:(计算机系统级知识)