操作系统八股文03-内存管理

操作系统八股文03-内存管理

1. 覆盖与交换

  • 覆盖:同一进程内对页进行覆盖
  • 交换:中级调度,在内存紧张时将不常用的进程换出

2. 连续分配

2.1 单一连续分配

  • 内存中只有一个作业,用于单用户、单任务的操作系统
  • 无外部碎片,有内部碎片

2.2 固定分区分配

  • 多个分区,每个分区只存放一个作业

分区过小时,使用覆盖技术;分区过大时,有外部碎片。

2.3 动态分区分配

  • 按需分配,分区大小、数量可变
  • 有外部碎片,无内部碎片
  • 分配算法
    • 首次适应算法
    • 最佳适应算法
    • 最坏适应算法
    • 邻近适应算法(循环首次适应算法)

通过紧凑技术,可以合并空闲块,消除外部碎片

3. 离散分配

3.1 分页

  • 内存划分为若干个固定大小的页,以页为单位将内存分配给进程
  • 无外部碎片,有内部碎片(理论上内部碎片大小为半个页)
  • 每个进程都维护一个页表,实现从逻辑地址到物理地址的映射

操作系统八股文03-内存管理_第1张图片

  • 地址翻译过程:

    • 无快表:页号 -> 越界检查 -> 查页表 -> 页框号
    • 有快表:页号 -> 查快表 -> 越界检查 -> 查页表 -> 页框号
      • 快表命中时,可以直接拿到页框号
  • 每个页表映射空间为整个内存,存储页表会浪费空间,此时可以使用多级页表进行压缩,其中二级页表不使用时可以不分配

  1. 进程中的单位为页,内存中的单位为页框,外存中的单位为块,三者概念类似。
  2. 页表每个进程独有,快表所有进程共享,需要解决快表在不同进程中的冲突问题(增加进程标识字段、刷表)

3.2 分段

  • 内存划分为若干个段,段长不固定,以段为单位将内存分配给进程

操作系统八股文03-内存管理_第2张图片

  • **地址翻译过程:**段号 -> 越界检查 -> 查页表 -> 块号

分页存储中的越界检查:页号是否越界

分段存储中的越界检查:段号是否越界、段内偏移是否越界

4. 虚拟分配**(扩大逻辑内存)**

4.1 局部性原理

  • 时间局部性
  • 空间局部性

4.2 请求分页

  • 页表项:页号、页框号、状态位P、访问字段A、修改位M、外存地址
    • 状态位P:标识该页是否在内存中
    • 访问字段A:该页在一段时间内的访问次数
    • 修改位M:该页调入内存后是否被修改

操作系统八股文03-内存管理_第3张图片

  • 页面置换算法:OPT、FIFO、LRU、CLOCK、改进CLOCK

抖动:频繁的页面置换

你可能感兴趣的:(八股文,算法,jvm,数据结构)