物理内存管理:连续内存分配

Posted My heart will go ~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了物理内存管理:连续内存分配相关的知识,希望对你有一定的参考价值。

1. 计算机体系结构和内存层次

重定位,分段,分页,虚拟存储
重定位:改段寄存器的地址。
分段:程序分为数据、代码、堆栈。
分页:把内存分为最基本的单位
虚拟存储:逻辑地址空间大于物理内存空间

2.地址空间和地址生成

物理地址:硬件支持的地址空间。
逻辑地址:在cpu运行进程看到的地址。

程序加载到内存中,变成进程。
源代码编译,变成指令的汇编指令(汇编的源代码),再次编译,变成二进制代码(机器能认识的指令)。

3.连续内存分配

给进程分配一块不小于指定大小的连续的物理内存区域。
内存碎片:外碎片(两块之间的)、内碎片(分配给进程的无法利用的区域)

动态分区分配:加载执行进程时,为其分配指定的内存。进程结束之后,就会释放内存空间。再次使用这些内存碎片的时候,就进行动态分配:最先匹配、最佳匹配、最差匹配。

最先分配:简单、高地址空间有大块空闲分区;
但外部碎片多,分配大块时较慢。尤其是后面搜索时间会很长,开销变大。

最佳匹配:比他大但大的最少;
简单,外碎片小,但剩余的外碎片基本没用了,

最差匹配:直接找最大的。
中大分配较多时,效果最好,不会出现很多小碎片。但是释放较慢,外部碎片,后续难以分配。

4.碎片整理

碎片整理:调整进程占用的分区位置,减少或避免分区碎片。
碎片紧凑:移动分配给进程的内存,以合并外部碎片。条件是:所有的应用程序可动态重定位。
分区对换:抢占并回收处于等待状态进程的分区,以增大内存空间。

5.伙伴系统



以上是关于物理内存管理:连续内存分配的主要内容,如果未能解决你的问题,请参考以下文章

物理内存管理:非连续内存分配

linux内存池能分配连续物理内存吗

物理内存管理:连续内存分配

物理内存管理:连续内存分配

Linux内存从0到1学习笔记(六,物理内存初始化之四 --- 内存分配器)---持续更新

Linux内存从0到1学习笔记(6.8,物理内存初始化之buddy伙伴系统)