连续内存分配

连续内存分配的缺点

1、分配给程序的物理内存是连续的

2、内存利用率低

3、内存碎片问题:空闲内存不能被利用

(1)外部碎片:在分配单元之间,无法使用的内存

(2)内部碎片:已经分配给应用程序的内存空间,但应用程序无法使用的内存

 

简单的内存管理方法

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

2、分区的动态分配策略

(1)首次适配

(2)最佳适配

(3)最差适配

 

首次适配

1、分配 n 字节,从低地址开始找,碰到的第一个空间比 n 大的空闲块就使用它

2、条件

(1)按地址排序的空闲块列表

(2)分配需要找一个合适的分区

(3)重分配需要检查自由分区,是否与相邻的空闲分区合并(形成更大的空闲块)

3、优点:易于产生更大的空闲块

4、缺点:产生外部碎片,不确定性

 

最佳适配

1、分配 n 字节,使用恰好满足需求,且最小的可用空闲块

2、目的:避免分割大的空闲块,最小化外部碎片产生的尺寸

3、条件

(1)按尺寸排列的空闲列表

(2)分配需要寻找一个合适的分区

(3)重分配需要搜索和合并于相邻的空闲分区

4、优点:分配是小尺寸时效果好

5、缺点:重分配慢,易产生很多没用的微小外部碎片

 

最差适配

1、分配 n 字节,使用最大的可用空闲块

2、目的:避免太多的微小碎片

3、条件

(1)按尺寸排列的空闲列表

(2)分配快,获得最大的分区

(3)重分配需要合并于相邻的空闲分区,若有,然后调整空闲块列表

4、优点:分配中等尺寸时效果最好

5、缺点:重分配慢,分割最大的空闲块影响后续分配

 

碎片整理

1、压缩式碎片整理:重置程序以合并孔洞,要求所有程序是动态可重置的

2、交互式碎片整理:主存存放运行内存,磁盘的虚拟内存存放等待程序

posted @   半条咸鱼  阅读(230)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示