操作系统的连续内存管理
内存管理的目的或者方法:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210223101659518.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzODEyMTY3,size_16,color_FFFFFF,t_70)
地址空间与地址生成:
逻辑地址与物理地址的定义:
逻辑地址的生成:
内存碎片的问题:
内碎片和外碎片是相对于应用程序来讲的,内碎片就是在一个应用程序分配的内存区域内,产生了很多小的无法内利用的内存空间,外部碎片就是在不同应用程序之间分配的内存空间之间存在的小的无法被利用的内存碎片。
分区的动态分配还是相对于应用程序来说的:
首次适配:
首次适配就是从低地址到高地址寻找一个能够满足的内存块分配出去,如下图就分配在1Kbytes空闲区域,优势:简单,易于产生更大的空闲块,向着地址空间的结尾。劣势:外部碎片,不确定性。
最佳匹配算法就是将空闲内存块与所需内存块最接近的空闲内存块分配出去。优势:当大部分分配是小尺寸时非常有效,比较简单,劣势:产生外部碎片,重分配慢,易产生很多没用的微小碎片
最差匹配分配:将空闲的内存块与所需内存相差最大的空闲内存块分配出去。优势:假如分配的是中尺寸的效果最好,劣势:重分配慢,外部碎片,易于破碎大的空闲块以致大分区无法被分配。
压缩式碎片整理:压缩式碎片整理也会带来问题,什么时候压缩,开销也会比较大。
交换式碎片整理:将目前等待的程序的内容拷贝到磁盘保存起来,以腾出更多的空间。