【操作系统】 - Operation System 第三章 连续式内存分配

本文详细介绍了操作系统的内存管理,包括计算机体系结构、内存分层、地址空间的生成和映射,以及连续内存分配中遇到的内存碎片问题。讨论了动态分配策略如首次适配、最佳适配和最差适配,并探讨了压缩式和交换式的碎片整理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.1 计算机体系结构及内存分层体系

    (1)计算机体系结构

  • CPU
  • 内存
  • I/O

    (2)操作系统在内存管理要完成的目标

  抽象:逻辑地址空间
  保护:独立地址空间
  共享:访问相同内存
  虚拟化:更多的地址空间

    (3)操作系统实现内存管理目标的手段

  程序重定位
  分段
  分页
  虚拟内存
  按需分页虚拟内存

3.2 地址空间与地址生成

    (1)地址空间的定义

  物理地址空间:硬件支持的地址空间
  逻辑地址空间:一个运行的程序所拥有的内存范围

    (2)地址空间的生成

        编译 -》 汇编 -》 链接 -》 载入到内存

    (3)应用程序的逻辑地址是如何映射到物理地址

        CPU方面

  a. 运算器ALU需要在逻辑地址的内存内容(CPU要逻辑地址)
  b. 内存管理单元MMU寻找在逻辑地址和物理地址之间的映射(然后MMU找逻辑和物理地址的关系)
  c. 控制器从总线发送在物理地址的内存内容的请求(关系找到后,去找对应物理地址)

        内存方面

  内存发送物理地址内存内容给CPU(物理地址找到了,给CPU)

        操作系统方面

  建立逻辑地址和物理地址之间的映射(确保程序不相互干扰)

    (4)地址安全检查

  确保每个程序有有效的访问空间

 

3.3 连续内存分配:内存碎片与分区的动态分配

    (1)内存碎片问题: 空闲内存不能被利用

  外部碎片:在分配单元间的未使用内存
  内部碎片:在分配单元中的未使用内存

    (2)简单的内存管理方法:

  当一个程序准许运行在内存中时,分配一个连续的区间
  分配一个连续的内存区间给运行的程序以访问数据

    (3)分区的动态分配策略

        首次适配

  内容:现在想分配n字节,从低地址开始找,碰到的第一个空间比n大的空闲块就使用它。
  要想实现首次分配,需要满足以下条件:
  1.需要存在一个按地址排序的空闲块列表
  2.分配需要找一个合适的分区
  3.重分配需要检查,看看自由分区能不能与相邻的空闲分区合并(形成更大的空闲块)

  优点
  1.简单
  2.易于产生更大的空闲块,向着地址空间的结尾

  缺点
  1.外部碎片的问题会加剧
  2.不确定性

        最佳适配

  内容:为了分配n字节,使用最小的可用空闲块,以致块的尺寸比n大。
  目的:避免分割大的空闲块;最小化外部碎片产生的尺寸。
  要想实现最佳分配,需要满足以下条件:
  1.按尺寸排列的空闲列表
  2.分配需要寻找一个合适的分区
  3.重分配需要搜索和合并于相邻的空闲分区,若有

  优点:
  1.大部分分配是小尺寸时很有效
  2.简单

  缺点:
  1.外部碎片
  2.重分配慢
  3.易产生很多没用的微小碎片

        最差适配

  内容:为了分配n字节,使用最大的可用空闲块,以致块的尺寸比n大。
  目的:避免太多的微小碎片
  要想实现最差分配,需要满足以下条件:
  1.按尺寸排列的空闲列表
  2.分配很快(获得最大的分区)
  3.重分配需要合并于相邻的空闲分区,若有,然后调整空闲块列表

  优点:
  假如分配时是中等尺寸效果最好

  缺点:
  1.重分配慢;外部碎片
  2.易于破碎大的空闲块以至大分区不能被分割

3.4 连续内存分配:压缩式与交换式碎片整理

    (1)压缩式碎片整理(紧致)

  重制程序以合并孔洞
  要求所有程序是 动态可重置的

  问题:
  1.何时重置
  2.开销


在这里插入图片描述

    (2)交换式碎片整理

  运行程序需要更多的内存
  抢占等待的程序或回收它们的内存(把暂时不用的内容挪到磁盘里)


在这里插入图片描述

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值