操作系统内存管理_虚拟内存

虚拟内存的基本思想

按照固定大小将进程的地址空间分为多个页面,每一个页面内部都有连续的地址.这些页被映射到物理内存,但是并不是所有的页都在内存中时程序才能运行.当程序需要已经在物理内存中的地址空间时,由硬件完成映射;当程序引用不在内存中的地址空间时,产生缺页中断,由操作系统将页面调入内存.

进程运行内存模型

操作系统内存管理_虚拟内存

分页

  1. 地址的转化
    建立页表,通过MMU(内存管理单元)来完成线性地址到物理地址的转换
    操作系统内存管理_虚拟内存

  2. 页表项的结构(不同进程共享内存的 安全性)

    保护位标记了 读,写,执行三个权限
    修改位标记了是否被修改,如果被修改那么页框在重新分配前,需要先持久化到硬盘
    访问位是供页面置换算法使用
    高速缓存位是是否启用高速缓存,需要实时输入的设备需要关闭高速缓存

  3. 加速分页:快表(TLB)

  • 快表是在MMU中,可以减少内存访问次数
  • 软件管理TLB,当访问的页表不在TLB中时,发出指令让操作系统来处理(换出一页)
  • 软失效:在内存,不在页表;硬失效:不在内存
  1. 针对大内存的页表
  • 多级页表
    操作系统内存管理_虚拟内存
  • 倒排页表

倒排页表是在每个页表框记录下 是哪个进程的哪个页表项 使用当前页表框,减少了存储压力,但是增大了查询的复杂度(每次都要遍历倒排页表)

  1. 页面置换算法

最优页面置换;最近未使用(R位定时清零)根据R,M位来决定换出哪个;先进先出;时钟置换;最近最少使用;
工作集页面置换算法:局部性原理

写时复制,共享库(相对跳动)

段页式存储

操作系统内存管理_虚拟内存
操作系统内存管理_虚拟内存
操作系统内存管理_虚拟内存

分页和分段的区别

1、分页机制会使用大小固定的内存块,而分段管理则使用了大小可变的块来管理内存。

2、分页使用固定大小的块更为适合管理物理内存,分段机制使用大小可变的块更适合处理复杂系统的逻辑分区。

3、段表存储在线性地址空间,而页表则保存在物理地址空间。