连续分配存储管理方式及覆盖交换

  • 连续分配存储管理方式
    • 单一连续分配
    • 固定分配方式
    • 动态分区分配
      • 首次适应算法
      • 循环首次适应算法
      • 最佳适应算法
      • 最坏适应算法
      • 快速适应算法
      • 分区的分配与回收
    • 动态重定位分配
  • 覆盖与交换
    • 内存覆盖
    • 内存交换
  • 内存碎片
    • 内部碎片
    • 外部碎片
    • 内存碎片产生的原因
      • 内部碎片的产生
      • 外部碎片的产生

这方面没有什么难点,就是一些零碎的知识点,因此特别大量的应用王道的PPT,以备复习时使用,这部分基本上也就是一选择题,因此理解记忆即可。

连续分配存储管理方式

说到 内存 的分配方式,就不得不提连续分配方式。这种方式是指为一个用户程序分配一个连续的内存空间,它曾被广泛的用于20世纪60~70年代的 OS 中,至今仍被使用。连续分配方式可以进一步分为单一连续分配、固定分配方式、动态分区分配以及动态重定位分配。

单一连续分配

固定分配方式


动态分区分配


首次适应算法

循环首次适应算法

最佳适应算法

最坏适应算法


以上四种为顺序搜索法,下面一种为索引搜索法。

快速适应算法

分区的分配与回收



动态重定位分配



覆盖与交换

覆盖与交换技术是在多道程序环境下用来扩充内存的两种方法。

内存覆盖

早期的计算机系统中,主存容量很小,虽然主存中仅存放一道用户程序,但是存储空间放不下用户进程的现象也经常发生,这一矛盾可以用覆盖技术来解决。
覆盖的基本思想是:由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可以把用户空间分成一个固定区和若干个覆盖区。将经常活跃的部分放在固定区,其余部分按调用关系分段。首先将那些即将要访问的段放入覆盖区,其他段放在外存中,在需要调用前,系统再将其调入覆盖区,替换覆盖区中原有的段。
覆盖技术的特点是打破了必须将一个进程的全部信息装入主存后才能运行的限制,但当同时运行程序的代码量大于主存时仍不能运行。

内存交换

交换(对换)的基本思想是,把处于等待状态(或在CPU调度原则下被剥夺运行权利) 的程序从内存移到辅存,把内存空间腾出来,这一过程又叫换出;把准备好竞争CPU运行的程序从辅存移到内存,这一过程又称为换入。第2章介绍的中级调度就是釆用交换技术。
例如,有一个CPU釆用时间片轮转调度算法的多道程序环境。时间片到,内存管理器将刚刚执行过的进程换出,将另一进程换入到刚刚释放的内存空间中。同时,CPU调度器可以将时间片分配给其他已在内存中的进程。每个进程用完时间片都与另一进程交换。理想情况下,内存管理器的交换过程速度足够快,总有进程在内存中可以执行。
有关交换需要注意以下几个问题:

  • 交换需要备份存储,通常是快速磁盘。它必须足够大,并且提供对这些内存映像的直接访问。
  • 为了有效使用CPU,需要每个进程的执行时间比交换时间长,而影响交换时间的主要是转移时间。转移时间与所交换的内存空间成正比。
  • 如果换出进程,必须确保该进程是完全处于空闲状态。
  • 交换空间通常作为磁盘的一整块,且独立于文件系统,因此使用就可能很快。
  • 交换通常在有许多进程运行且内存空间吃紧时开始启动,而系统负荷降低就暂停。
  • 普通的交换使用不多,但交换策略的某些变种在许多系统中(如UNIX系统)仍发挥作用。

交换技术主要是在不同进程(或作业)之间进行,而覆盖则用于同一个程序或进程中。由于覆盖技术要求给出程序段之间的覆盖结构,使得其对用户和程序员不透明,所以对于主存无法存放用户程序的矛盾,现代操作系统是通过虚拟内存技术来解决的,覆盖技术则已成为历史;而交换技术在现代操作系统中仍具有较强的生命力。


内存碎片

“内存碎片”描述了一个系统中所有不可用的空闲内存。这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用,原因在于空闲内存以小而不连续方式出现在不同的位置,内存分配器无法将这些内存利用起来分配给新的进程。由于分配方法决定内存碎片是否是一个问题,因此内存分配器在保证空闲资源可用性方面扮演着重要的角色。

内部碎片


内部碎片是由于系统分配给进程的空间大于其所申请的大小,处于(操作系统分配的用于装载某一进程的内存)区域内部或页面内部的存储块,占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。

外部碎片


外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域,即处于任何两个已分配区域或页面之间的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。

内存碎片产生的原因

内部碎片的产生

因为所有的内存分配必须起始于可被 4、8 或 16 整除(视处理器体系结构而定)的地址或者因为MMU的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配给客户。假设当某个客户请求一个 43 字节的内存块时,因为没有适合大小的内存,所以它可能会获得 44字节、48字节等稍大一点的字节,因此由所需大小四舍五入而产生的多余空间就叫内部碎片。

外部碎片的产生

频繁的分配与回收物理页面会导致大量的、连续且小的页面块夹杂在已分配的页面中间,就会产生外部碎片。假设有一块一共有100个单位的连续空闲内存空间,范围是0-99。如果你从中申请一块内存,如10个单位,那么申请出来的内存块就为0-9区间。这时候你继续申请一块内存,比如说5个单位大,第二块得到的内存块就应该为10-14区间。如果你把第一块内存块释放,然后再申请一块大于10个单位的内存块,比如说20个单位。因为刚被释放的内存块不能满足新的请求,所以只能从15开始分配出20个单位的内存块。现在整个内存空间的状态是0-9空闲,10-14被占用,15-24被占用,25-99空闲。其中0-9就是一个内存碎片了。如果10-14一直被占用,而以后申请的空间都大于10个单位,那么0-9就永远用不上了,变成外部碎片。
参考:王道考研视频PPT

连续分配存储管理,覆盖交换和存储碎片相关推荐

  1. 操作系统——存储器管理(连续分配存储管理方式)

    文章目录 一.单一连续分配 二.固定分区分配 1. 划分分区的方法 2. 内存分配 三.动态分区分配 1. 动态分区分配中的数据结构 2. 动态分区分配算法 3. 分区分配操作 四.基于顺序搜索的动态 ...

  2. 4.3连续分配存储管理方式 4.4对换

    为了能将用户程序装入内存,必须为它分配一定大小的内存空间. 连续分配方式是最早出现的一种存储器分配方式. 分类: 单一连续分配 固定分区分配 动态分区分配 动态重定位分区分配 一.单一连续分配 (单道 ...

  3. 操作系统连续分配存储管理方式

    连续分配方式,是指为一个用户程序分配一个连续的内存空间. 连续分配方式的分类: l单一连续分配 l固定分区分配 l动态分区分配 l动态重定位分区分配 下面来看这几种分配方式 单一连续分配 最简单的一种 ...

  4. 操作系统:内存连续分配方式采用的几种算法及各自优劣

    连续分配方式(交换技术),是指为一个用户程序分配一个连续的内存空间.它主要包括单一连续分配.固定分区分配和动态分区分配. 注意:此处的连续内存分配是将整个进程的数据整块加载到内存之中. 1.单一连续分 ...

  5. 内存管理之非连续分配管理方式的详细解释

    如果帮到你的话,请点个赞,创作不易,谢谢 非连续分配方式允许将一个程序分散地装入不连续的内存空间.在连续分配管理方式中,即使内存有超过2GB的存储空间,但是没有连续的2GB内存空间,则需要2GB内存空 ...

  6. 12 操作系统第三章 内存管理 非连续分配管理方式 基本分页存储管理 基本分段存储管理 段页式存储管理

    文章目录 1 基本分页存储管理 1.1 什么是分页存储 1.2 重要的数据结构--页表 1.3 基本地址变换机构 1.4 具有快表的地址变换机构 1.4.1 什么是快表(TLB) 1.4.2 引入快表 ...

  7. (王道408考研操作系统)第三章内存管理-第一节6-1:非连续分配管理方式之基本分页存储管理

    文章目录 一:分页存储管理基本思想 二:分页存储管理基本概念 (1)页框和页 (2)页框和页关系 (3)分页的优点 三:分页存储管理实现地址转换 (1)借鉴连续分配管理方式中的动态重定位 (2)分页管 ...

  8. 11 操作系统第三章 内存管理 内存的基本知识 内存管理 内存空间扩充 连续分配管理方式

    文章目录 1 内存概念 1.1 内存作用 1.2 逻辑地址VS物理地址 1.3 装入的三种方式 1.3.1 绝对装入 1.3.2 可重定位装入 1.3.3 动态重定位装入 1.4 链接的三种方式 1. ...

  9. 操作系统4小时速成:内存管理,程序执行过程,扩充内存,连续分配,非连续分配,虚拟内存,页面替换算法

    操作系统4小时速成:内存管理,程序执行过程,扩充内存,连续分配,非连续分配,虚拟内存,页面替换算法 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测 ...

  10. 操作系统的内存管理机制(连续分配管理、页式、段式、段页式、快表、二级页表)

    来源:https://www.bilibili.com/video/BV1YE411D7nH 操作系统的内存管理机制(连续分配管理.页式.段式.段页式.快表.二级页表) 内存被分为系统区和用户区,系统 ...

最新文章

  1. PyTorch手把手自定义Dataloader读取数据
  2. mysql5.7.20+初始化_MySQL5.7.28 初始化数据库
  3. shell 远程协助协助(转载)
  4. Sail(CodeForces - 298B )
  5. usb长包数据结束判断_如何判断南桥好坏 判断南桥好坏方法介绍【详解】
  6. asp.net ajax 怎么获取前端ul li_useEffect Hook 是如何工作的(前端需要懂的知识点)
  7. 给Repeater、Datalist和Datagrid增加自动编号
  8. android textview显示表情,在Android TextView中显示表情符号/情感图标
  9. linux服务器知识学习:linux简介与linux的发行版
  10. java实现秒杀系统_Java秒杀系统--4.实现秒杀接口
  11. ORA-12514: TNS:listener does not currently know of service …
  12. vb杨辉三角代码编写_杨辉三角算法集锦vb
  13. 论文排版LaTeX学习笔记
  14. 编写存储过程批量造数据
  15. hexo(sakura)仿gitee添加文章贡献度日历图(echarts)
  16. GIS实验之制作地形地貌图
  17. 【服务器数据恢复】服务器重启后掉线硬盘重新上线同步数据被中断后数据丢失的数据恢复案例
  18. 李宏毅机器学习L6 GAN
  19. excel任意单元格中自动插入页码和总页数
  20. wstmall wstmart wstshop区别

热门文章

  1. 20120902 07
  2. python火车票票价_Python火车票代码
  3. ASCII码对应表chr(9)、chr(10)、chr(13)、chr(34)、chr(39)、chr(46)
  4. Ubuntu 升级显卡驱动
  5. keras的net中使用tensorflow函数, AttributeError: ‘NoneType‘ object has no attribute ‘_inbound_nodes‘
  6. No module named libs.resources
  7. 数据目录是什么?为何需要它?
  8. 惠群计算机科技,电脑报专访:探索新视角,再造多元化的宏碁
  9. 电子书-CHM-上线CS
  10. Angular最佳实践之$http-麻雀虽小 五脏俱全