系统运行过程中,碎片越来越多,很可能无法获取需要的较大的内存空间。我们需要解决这个问题,这就是碎片整理的意义,可以通过碎片整理获得更大的连续内存空间,以便于满足进程的应用空间需求。碎片整理是通过调整进程占用的分区位置来减少或避免分区碎片的。碎片整理有很多种方式,比如碎片紧凑、分区对换。

碎片紧凑:

  • 实现方式:通过移动分配给进程的内存分区,以合并外部碎片。
  • 条件:所有的应用程序可以动态重定位。这是因为程序中可能有很多地址引用,如果引用了绝对地址,移动分配的内存位置可能就会出错。因此需要动态重定位,执行到命令的时候才生成内存地址。
  • 时机:进程处于等待状态时搬动。
  • 开销:移动已分配的内存分区是有开销的,因此不会为了一小块碎片就进行紧凑。具体开销暂且按下不讲。

分区对换:

分区对换是通过抢占并回收处于等待状态进程的分区,以增大可用内存空间。即将等待状态进程的数据存储到外存中,也就是对换到对换区。可以结合下面的图示理解:假设系统运行到某个时刻处于如下第一张图片的状态,图中下侧为内存与外存状态,上侧为操作系统维护的进程状态数据结构示意图,即有三个进程P1、P2、P3占满了内存区,而P1处于等待状态,P2处于运行状态,P3处于就绪状态。此时又有第四个进程要运行,而内存是不够的。则进行分区对换,对换后如第二张图所示,将处于等待状态的进程P1移动到外存,此时就有足够的内存空间。通过这种方式,我们可以让更多的进程在系统中交替进行。

由于对换是在内存与外存之间,对换速度是非常慢的,开销很大,因此需要解决一个问题,就是到底要交换哪些进程。

操作系统学习笔记(八):连续内存分配——碎片整理相关推荐

  1. C语言学习笔记之动态内存分配结构体——辣鸡版学生管理系统

    @[C语言学习笔记] 小辣鸡自学C语言中,好多视频教程都有这个案例,小辣鸡自己边学边记,下边是代码. 如有错误,感谢告知!!! #include<stdio.h> #include< ...

  2. 《操作系统》OS学习(五):连续内存分配 内存碎片、动态分配、碎片整理、伙伴系统

    内存碎片 在没有其他方式辅助的情况下,我们分配给一个进程的内存是连续的.在分配时候我们需要有动态分配与碎片处理.如何理解呢?就是每个进程需要一块内存,我们要选取合适的位置的内存分配给它.当有的进程先结 ...

  3. 【操作系统/OS笔记05】非连续内存分配:分段、分页、页表

    本次笔记内容: 4.1 非连续内存分配:分段 4.2 非连续内存分配:分页 4.3 非连续内存分配:页表 文章目录 为什么需要非连续内存分配 非连续分配的优劣 分段(segment) 分段寻址方案 分 ...

  4. 【操作系统/OS笔记04】内存分层体系、地址生成、连续内存分配概论

    本次笔记内容: 3.1 计算机体系结构及内存分层体系 3.2 地址空间和地址生成 3.3 连续内存分配:内存碎片与分区的动态分配 3.4 连续内存分配:压缩式与交换式碎片整理 文章目录 物理内存 计算 ...

  5. OS学习笔记-6(清华大学慕课) 非连续内存分配管理

    非连续内存分配的需求 有可能找不到连续的一块内存空间满足进程需求 连续分配存在内碎片,外碎片,内存利用率比较低 非连续内存分配目标:提高内存利用效率以及管理灵活性 于是由于非连续内存块的大小分成了:段 ...

  6. 操作系统 非连续分配_操作系统中的连续和非连续内存分配

    操作系统 非连续分配 In this article, we will learn about the different types of memory management techniques ...

  7. 清华大学《操作系统》(六):非连续内存分配 段式、页式、段页式存储管理

    背景 连续内存分配给内存分配带来了很多不便,可能所有空闲片区大小都无法满足需求大小,这个分配就会失败.基于这种现状,就有了非连续内存分配的需求.非连续分配成功的几率更高,但也面对更多的问题,比如分配时 ...

  8. 【清华大学】操作系统 陈渝 Part3 ——物理内存管理 之 连续内存分配

    [清华大学]操作系统 陈渝 Part3 --物理内存管理 之 连续内存分配 3.1计算机体系结构及内存分层 计算机体系机构 内存体系层次 管理内存方法 3.2地址空间 & 地址生成 地址空间定 ...

  9. 操作系统-- 连续内存分配、非连续内存分配

    文章目录 一.连续内存分配 1.内存碎片的问题 (1)外部碎片 (2)内部碎片 2.连续内存分配算法 (1)首次适配 (2)最优适配 (3)最差适配 3.碎片整理方法 4.连续内存分配的缺点 二.非连 ...

最新文章

  1. 计算机视觉在生物力学和运动康复中的应用和研究
  2. Trustzone——利用硬件对数据加密,秘钥存在芯片里
  3. Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)(转载)
  4. 执行单元测试 报TEST class 有不能识别字符
  5. C++Primer学习笔记:第6章 函数
  6. 秀操作 | 函数宏的三种封装方式
  7. Python 爬取淘宝商品信息栏目
  8. 开放式的Video Captioning,中科院自动化所提出基于“检索-复制-生成”的网络
  9. IPC Binder
  10. win8.1使用及优化
  11. 响应式编程笔记三:一个简单的HTTP服务器
  12. html显示ftp资料,获取FTP信息及使用方法
  13. win10安装马上6卡在icon.ico的一种解决方案
  14. 软件工程-----个人总结
  15. 全外显子数据分析流程
  16. vmware使用显卡
  17. WebRTC回声消除(1)
  18. 靠查看英语资料 , “一不小心”成了国内第一
  19. math.hypot java_java.lang.Math.hypot(double x, double y)方法实例
  20. android 远程代码,如何通过代码远程解锁Android手机

热门文章

  1. 政策东风下,政府区块链项目采购上半年同比增长66%
  2. JQuery如何自定义插件——$.fn的使用
  3. openssh arm linux 编译,交叉编译openssh
  4. 2021 12 23 的程序
  5. 个人邮箱登陆,邮箱登录入口有哪些?有移动办公app吗?
  6. Keynote如何与iCloud配合使用
  7. 2循环赛日程表(分治)
  8. 女模特徐倩离奇被害,凶手被判死缓 丹比奴
  9. 运动耳机什么牌子好一些、专业运动耳机推荐
  10. redis5 stream php队列,使用redis stream实现队列服务