IT袋

当前位置:主页 > 经验教程 > 硬件教程 >

内存管理:空间分配及逃逸分析

内存管理:空间分配及逃逸分析 内存管理: 分配与逃逸分析(2)

时间:2023-12-22 19:23:12 来源:IT袋 作者:马勇
导读:内存管理:空间分配及逃逸分析,分页内存都是预先划分好的,所以不会产生间隙非常小的内存碎片,分配时利用率比较高。 而分段就不一样了,它是基于程序的逻辑来分段的,由于程序

内存管理:空间分配及逃逸分析

内存管理:空间分配及逃逸分析

分页内存都是预先划分好的,所以不会产生间隙非常小的内存碎片,分配时利用率比较高。

而分段就不一样了,它是基于程序的逻辑来分段的,由于程序属性可能大不相同,所以分段的大小也会大小不一。

分段管理时,虚拟地址和物理地址间通过段表来进行映射:

内存管理:空间分配及逃逸分析

不难发现,分段内存管理的切分不是均匀的,而是根据不同的程序所占用的内存来分配。

这样带来的问题是,假设程序1的内存(1G)用完了释放后,另一个程序4(假设内存需要1000M)装到物理内存中可能还剩余 24M 内存,如果系统中有大量的这种内存碎片,那整体的内存利用率就会很低。

于是,段页式内存管理方式出现了,它将以上两种存储管理方法结合起来:即先把用户程序分成若干个段,为每一个段分配一个段名,再把每个段分成若干个页

在段页式系统中,为了实现从逻辑地址到物理地址的转换,系统中需要同时配置段表和页表,利用段表和页表进行从用户地址到物理内存空间的映射。

系统为每个进程创建一张段表,每个分段上有一个页表。段表包括段号、页表长度和页表始址,页表包含页号和块号。

内存管理:空间分配及逃逸分析

在地址转换时,首先通过段表查到页表地址,再通过页表获取页帧号,最终形成物理地址。

虚拟内存到物理内存的映射,是操作系统层面去管理的。而我们在开发时,涉及到的内存管理,往往只是软件程序去调用虚拟内存时要做的工作:

相关阅读