清华大学操作系统(陈渝,向勇)课程笔记——(四)连续内存分配
2021/5/14 7:28:47
本文主要是介绍清华大学操作系统(陈渝,向勇)课程笔记——(四)连续内存分配,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
主要内容
连续内存分配
内存碎片问题
分区的动态分配
-
- 第一适配
- 最佳适配
- 最差适配
压缩式碎片整理
交换式碎片整理
内存碎片问题
内存碎片: 内存中无法进一步利用的内存空间。
碎片分类
- 外碎片:在分配单元之间未使用的内存
- 内碎片:在分配单元内部未使用的内存
分区的动态分配
简单的内存管理方法:
- 当一个程序准许运行在内存中时。分配一个连续的区间
- 分配一个连续的内存区间路运行的程序以访问数据
分配策略
- 首次适配:为了分配n字节,使用第个可用空闲块以致块的尺寸比n大
- 最优适配:为了分配n字节使用最小的可用空闲块,以致块的尺寸比n大
- 最差适配:为了分配n字节.使用最大可用空闲块,以致块的尺寸比n大
三种分配策略的比较
特点 | 优势 | 劣势 | |
首次适配 |
按地址排序的空闲块列表 分配需要寻找一个合适的分区 重分配需要检查,看是否自由分区能合并于相邻的空闲分区(若有) |
简单,易于实现 易于产生更大的空间快,向着地址空间的结尾 |
容易产生外部碎片 不确定性强 |
最优适配 |
为了避免分割大空闲块 为了最小化外部碎片产生的尺寸 按尺寸排列的空闲块列表 分配需要寻找一个合适的分区 ≥重分配需要搜索及合并于相邻的空闲分区(若有) |
当大部分分配是小尺寸时非常有效 比较简单 |
易产生外部碎片 重分配慢 易产生很多没用的微小碎片(不怎么好) |
最差适配 |
为了避免有太多微小的碎片 按尺寸排列的空闲块列表 分配很快(获得最大的分区) 重分配雷要合并于和邻的空闲分区,若有.然后调整空闲块列表 |
假如分配是中等尺寸效果最好 |
重分配慢 易产生外部碎片 易于破碎大的空闲块以致大分区无法被分配 |
总结: 没有最好的分配算法一说,因为应用程序的请求是随机的。
压缩式碎片整理
- 重置程序以合并孔洞
- 要求所有程序是动态可重置的
- 议题
- 何时重置?
- 开销
交换式碎片整理
- 运行程序需要更多的内存
- 抢占等待的程序&回收它们的内存
- 问题: 选择哪个程序换出?
这篇关于清华大学操作系统(陈渝,向勇)课程笔记——(四)连续内存分配的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结