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

虚拟内存的基本思想

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

进程运行内存模型

在这里插入图片描述

分页

  1. 地址的转化
    建立页表,通过MMU(内存管理单元)来完成线性地址到物理地址的转换
    在这里插入图片描述

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

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

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

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

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

  1. 页面置换算法

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

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

段页式存储

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分页和分段的区别

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值