最为简单的内存分配方法之一就是将内存分为多个固定大小的分区。每个分区只能容纳一个进程。

为此,操作系统有一个表用于记录哪些内存可用和哪些内存已用。

一开始,所有内存都可用于用户进程,因此能够作为一个大块可用内存,称为孔。通常,一组不同大小的孔分散在内存中。
当有新进程需要内存时,为该进程查找足够大的孔。
如果找到,可以为该进程分配所需的内存,未分配的可以下次再用。
如果孔太大,那么就分为两块:一块分配给新进程,另一块还回到孔集合。当进程终止时,它将释放其内存,该内存将还给孔集合。
如果新孔与其它孔相邻,那么将这些孔合并成大孔。这时,系统可以检查是否有进程在等内存空间,新合并的内存空间是否满足等待进程。

从一组可用孔中选择一个空闲孔的最为常用方法有:

  • 首次适应(firsr-fit):分配第一个足够大的孔。
  • 最佳适应(best-fit):分配最小的足够孔。
  • 最差适应(worst-fit):分配最大的孔。

模拟结果显示首次适应核最好适应在执行时间和利用空间方面都好于最差适应。首次适应和最好适应在利用空间方面难分伯仲,但是首次适应要快些。

首次适应算法的统计说明,不管是用什么优化,都会有1/3的内存称为外部碎片而不能使用,这一特性称为50%规则。

这些算法都有外部碎片。随着进程装入和移出内存,自由内存空间被分为小片段。当所有总的内存之和可以满足请求,但并不连续时,就出现了外部碎片问题。

通常将内存以固定大小的块为单元来分配。采用这种方案,进程所分配的内存可能比所需要的要大。这两个数字之差称为内部碎片,这部分内存在分区内,而又不能用。

一种解决外部碎片问题的方法是紧缩。紧缩的目的是移动内存内容,以便所有空闲空间合并成一整块。紧缩是有一定条件的,要求重定位是动态的。
另一种可能解决外部碎片问题的方法是允许物理地址空间为非连续,这样只要有物理内存就可为进程分配。

【操作系统】连续内存分配策略相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来. 3.1 概述 说起垃圾收集(Garbage Collection,G ...

  9. 03-1 手敲八千字,认识垃圾收集器必须清楚的前置知识【垃圾收集器的内存分配策略】

    03-1 50问!了解垃圾收集器必须清楚的前置知识--垃圾收集器的内存分配策略 author:陈镇坤27 创建时间:2021年12月27日01:58:45 字数:7932 文章目录 03-1 50问! ...

最新文章

  1. ZooKeeper的基本原理
  2. 预产期计算器在线计算生男生女计算机,预产期计算器生男生女的四种算法
  3. FileDownloader 很棒的文件下载库
  4. 计算机应用基础2004年,计算机应用基础2004年下半年全国试题参考答案2
  5. ITK:在二进制映像中标记Connect组件
  6. 领域驱动第四章-读书笔记
  7. 009-MailUtils工具类模板
  8. LeetCode【13--罗马数字转整数】LeetCode【14--最长的公共前缀】
  9. 「CH2101」可达性统计 解题报告
  10. vue项目实践教程1:vux项目搭建和简介
  11. IDM出现输入用户名和密码不能下载解决方法
  12. twitter最多关注者_Twitter的10个最具创意的用途
  13. 计算机丢失bass,dll,bassasio.dll(缺失bassasio.dll文件修复工具)V1.0 正式版
  14. kali之入侵XP系统2
  15. 微信小程序微商城(五):动态API实现商品详情页(下)
  16. 利用Python实现FGO自动战斗脚本
  17. wp10手机不能连接微软服务器,WP10手机微软账户登陆不了该怎么办?
  18. 【蓝桥杯省赛】冲刺练习题【第十二届省赛2套题】倒计时【02】天(准考证组委会已下发,请查询)
  19. 微信小程序支付开发具体步骤
  20. 动态情景多因子Alpha模型

热门文章

  1. Docker持续集成与容器管理--系列教程
  2. Mybatis_接口编程
  3. meta http-equiv=X-UA-Compatible content=IE=edge,chrome=1 /
  4. Go条件语句、switch和循环语句
  5. 微软的正则表达式教程(一):正则表达式简介
  6. kotlin 用协程做网络请求_中国电信营业厅: 感受 Kotlin 的 quot;加速度quot;
  7. Vue生命周期与自定义组件
  8. java 将pdf转换成word_java如何实现pdf转word?
  9. 5b计算机联锁系统_力控科技油库调度管理系统应用案例
  10. linux内核udp校验和计算函数,Linux 内核IP和UDP检验和计算