kaylil_01 Asked:2020-12-15 20:44:05 +0000 UTC2020-12-15 20:44:05 +0000 UTC 2020-12-15 20:44:05 +0000 UTC 分段和分页内存组织中的碎片 772 我是否正确理解页面模型中的碎片只能在虚拟内存级别,与段一相比?但这比实际内存级别的碎片更好,无论如何,您是否必须进行碎片整理? память 1 个回答 Voted Best Answer eanmos 2020-12-19T01:22:18Z2020-12-19T01:22:18Z 在分页中,当页面本身内部有未使用的空间时,我们只有内部碎片。对于段寻址,也存在外部碎片:内存中会出现许多“洞”——段之间的小空闲内存区域。最后,可能会出现这样一种情况,即汇总内存的总量(所有此类“空洞”的总大小)足以启动进程,但进程无法启动,因为我们没有足够大小的连续内存区域。同时,所有页面的大小都是一样的,所以分页模式下不可能有外部碎片。 碎片化也可能在另一个级别 - 在分配器级别。操作系统在整个页面中为进程分配内存。分配器管理一个任意大小的已占用和空闲内存区域的列表,并向您返回一个指向已由操作系统分配的内存的指针。也就是说,分配器本身不分配任何东西,它只能要求操作系统向上或向下更改堆大小。 在我们的抽象级别上,根本没有页面或段,只有一个连续的线性地址空间。 聊天中的@avp澄清了有关碎片的一些观点。
在分页中,当页面本身内部有未使用的空间时,我们只有内部碎片。对于段寻址,也存在外部碎片:内存中会出现许多“洞”——段之间的小空闲内存区域。最后,可能会出现这样一种情况,即汇总内存的总量(所有此类“空洞”的总大小)足以启动进程,但进程无法启动,因为我们没有足够大小的连续内存区域。同时,所有页面的大小都是一样的,所以分页模式下不可能有外部碎片。
碎片化也可能在另一个级别 - 在分配器级别。操作系统在整个页面中为进程分配内存。分配器管理一个任意大小的已占用和空闲内存区域的列表,并向您返回一个指向已由操作系统分配的内存的指针。也就是说,分配器本身不分配任何东西,它只能要求操作系统向上或向下更改堆大小。
在我们的抽象级别上,根本没有页面或段,只有一个连续的线性地址空间。
聊天中的@avp澄清了有关碎片的一些观点。