内存管理

2021/8/25 7:07:38

本文主要是介绍内存管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、连续分配

1、单一连续分配

  • 优点

    • 实现简单;
    • 无外部碎片;
    • 不一定需要内存保护
  • 缺点

    • 只能用于单用户、单任务OS;
    • 有内部碎片;
    • 存储器利用率低;

2、固定分区分配

  • 优点

    • 实现简单;
    • 无外部碎片;
  • 缺点

    • 1.较大用户程序时,需要采用覆盖技术,降低了性能;
    • 2.会产生内部碎片,利用率低

3、动态分区分配

  • 记录内存使用情况

  • 选择分区给新进程

  • 分区回收

二、非连续分配管理

1、分页存储管理

  • 将内存分为大小相等的分区
  • 页框/页帧/内存块/物理块
  • 页框号/页号从0开始
  • OS以页框为基本单位分配内存

2、基本地址变换

  • 物理地址= (页号->块号)+偏移量
  • 页号P =逻辑地址A ,页面长度(大小)L
  • 偏移量W=逻辑地址A%页面长度L
  • P=A>> 12; W= A & 4095

3、基本地址变换机构

  • 页式管理中地址空间是一维的
  • 每次访存都需要地址转换,必须足够快
  • 页表不能太大,会降低内存利用率

4、快表和慢表

  • 直接将页号与快表页号比较
  • 匹配成功,取块号+偏移量形成地址
  • 匹配失败,访问主存页表,并同步到快表(局部性原理)

5、二级页表

  • 页表连续存放,占用大量连续空间
  • 一段时间内只需要访问部分特定页面
  • 页表项分组/分页离散存储
  • 建页目录表管理离散页表
  • 将逻辑地址拆分成三部分
  • 从PCB中读取页目录表始址
  • 根据一级页号 查出二级页表位置
  • 根据二级页号查内存块号,加偏移量计算物理地址

三、分段存储管理方式

  • 分段
  • 段表
  • 地址变换机构
  • 段的共享与保护

1、分页与分段方式对比

  • 页->物理单位
  • 段->逻辑单位
  • 分页>-维地址空间
  • 分段>二维地址空间
  • 分段更容易信息共享和保护

2、段页式管理

  • 先分段,再分页
  • 1个进程->1个段表
  • 1个段表项->1个页表
  • 1个页表->多个物理块





这篇关于内存管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程