虽然只是一个奇怪的问题!
在进行内存分配和管理的各种技术时,特别是将固定大小的块分配给特定请求的分页,一切正常,直到进程退出内存,留下空间用于其他进程的非连续分配。现在,对于这种情况,数据结构页表保持跟踪相应的页面到帧号。
可以设计算法,使得页面总是在内存中最后分配的页面之后分配,并动态地移动并覆盖由释放过程(从中间某处)引起的空页面空间分钟间隔,在任何给定时间保持一排连续的内存。这可以保留进程的连续内存分配,从而实现更快的内存访问。
例如:
---------- ----------
| Page 1 | After Page 2 is deallocated | Page 1 |
---------- rather than assigning ----------
| Page 2 | the space to some other process | Page 3 |
---------- in a non-contiguous fashion, ----------
| Page 3 | there can be something | Page 4 |
---------- like this --> ----------
| Page 4 | | |
---------- ----------
关键是内存分配可以是连续的,并且总是在最后分配的页面之后。
如果我被告知在考虑任何此类算法时必须注意的设计缺陷或参数,我将不胜感激。
答案 0 :(得分:1)
这称为“压缩”垃圾收集,通常是标记紧凑型垃圾收集算法的一部分:https://en.wikipedia.org/wiki/Mark-compact_algorithm
与任何垃圾收集器一样,收集/压缩是最简单的部分。困难的部分是让你正在收集的程序继续工作,因为你正在移动它的记忆。