【OS操作系统】Operating System 第三章:连续内存分配

OS操作系统系列文章目录

【OS操作系统】Operating System 第一章:操作系统的概述
【OS操作系统】Operating System 第二章:启动、中断、异常和系统调用
【OS操作系统】Operating System 第三章:连续内存分配
【OS操作系统】Operating System 第四章:非连续内容分配
【OS操作系统】Operating System 第五章:虚存技术
【OS操作系统】Operating System 第六章:页面置换算法
【OS操作系统】Operating System 第七章:进程与线程
【OS操作系统】Operating System 第八章:处理机调度
【OS操作系统】Operating System 第九章:同步互斥问题
【OS操作系统】Operating System 第十章:信号量与管程
【OS操作系统】Operating System 第十一章:死锁与进程通信
【OS操作系统】Operating System 第十二章:文件系统



第三章:续内存分配

  • 计算机体系的主要结构:
    • CPU(程序执行);
    • 内存(执行程序的代码、数据存放在这);
    • I/O(设备);

      在这里插入图片描述

内存的分层体系

  • 内存:
    • 运行内存(主存):
      主存是在运行程序时,所需要保存的数据空间;
    • 磁盘(虚拟内存):
      用于持久化数据保存的数据空间;
  • CPU可以访问的内存:
    • 寄存器;
    • cache
      • L1缓存;
      • L2缓存;

  • 层次:

    从CPU寄存器到磁盘,读写速度不断降低,单位成本不断降低,存储容量不断增大;

    • 微处理器(CPU访问);
    • CPU寄存器、L1缓存;
    • L2缓存;
    • 主存(程序访问);
    • 磁盘(程序访问);

  • OS在内存管理单元(MMU)中的管理目标:
    • 抽象:逻辑地址空间;
    • 保护:独立地址空间;
    • 共享:访问相同内存;
    • 虚拟:更多的地址空间;

  • OS的内存管理方法:

    实现要高度依赖于硬件,其中内存管理单元负责CPU的内存访问请求;

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

地址空间与地址生成

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

  • 程序的地址空间的生成

在这里插入图片描述

  • 程序的逻辑地址到物理地址的映射过程
    • CPU方面:
      • 运算器ALU需要在逻辑地址的内存内容(CPU要逻辑地址);
      • 内存管理单元MMU寻找在逻辑地址和物理地址之间的映射(MMU去寻找逻辑和物理地址的映射关系);
      • 控制器从总线发送在物理地址的内存内容的请求(找到映射关系后,寻找对应的物理地址);
    • 内存方面:
      • 内存发送物理地址的内存内容给CPU(物理地址找到了,并发送给CPU);
    • OS方面:
      • 建立逻辑地址和物理地址之间的映射(确保程序不互相干扰);

在这里插入图片描述

  • 在建立映射关系前,会进行地址的安全检查

在这里插入图片描述

连续内存的分配

  • 内存碎片问题:

    指空闲的内存无法被利用;

    • 外部碎片:分配单元外的未使用内存;
    • 内部碎片:分配单元内的未使用内存;

  • 简单的内存管理方法:
    当一个程序准许运行在内存中时,分配一个连续的区间;
    分配一个连续的内存区间给运行的程序以访问数据;

  • 分区的动态分配策略

    三种分配方式并无优劣之分,因为我们无法判断内存请求的大小;

    • 第一匹配分配:在内存中找到第一个比需求大的空闲块,分配给应用程序;
    • 最优适配分配:在内存中找到最小的空闲块,分配给应用程序;
    • 最差适配分配:在内存中找到最大的空闲块,分配给应用程序;
  • 区别

    分配方式实现需求优点缺点
    第一匹配分配1.按地址排序的空间块列表;
    2.分配需要寻找一个合适的分区;
    3.重分配需要检查是否可以合并相邻空闲分区;
    简单、易于产生更大空闲块;产生外部碎片、不确定性;
    最优适配分配1.按尺寸排序的空闲块列表;
    2.分配需要寻找一个合适的分区;
    3.重分配需要检查是否可以合并相邻空闲分区;
    比较简单、大部分分配是小尺寸时较为高效;产生外部碎片、重分配慢、产生很多没用的微小碎片;
    最差适配分配1.按尺寸排序的空闲块列表;
    2.分配需要寻找一个合适的分区;
    3.重分配需要检查是否可以合并相邻空闲分区;
    分配很快、大部分分配是中尺寸时较为高效;产生外部碎片、重分配慢、易于破碎大的空闲块以致大分区无法被分配;

内存碎片的整理方法

  • 压缩式碎片整理:
    • 重置程序已合并碎片;
    • 要求所有程序时动态可重置的;
    • 问题:
      • 何时重置(在程序处于等待状态时才可以重置);
      • 需要考虑内存拷贝的开销;

在这里插入图片描述

  • 交换式碎片整理:
    • 运行程序需要更多的内存时,抢占等待的程序并回收它们的内存;
    • 问题:
      • 哪些程序是应该首先被回收的;
    • 情况:
      • 运行中的程序:P3
        等待中的程序:P1、P2、P4
        内存分配 :主存-> OS、P1、P3、P2、P4;磁盘 -> 空;
      • 当P3程序需要更大的内存时:
        内存分布:主存 -> OS、P1、P3、P2;磁盘 -> P4;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值