在数据库缓冲池(内存池)的实现中,我有一个由内存中的页面组成的缓冲区。具有可变大小页面的缓冲池。当传入页面大于要被驱逐的页面时,需要高性能的方式来合并页面
页面有不同的大小(512kb的所有整数倍)。
说我的驱逐政策是LRU(最近最少使用),但我试图驱逐的页面尺寸比我需要替换的尺寸小,如果我想跟随LRU,我应该驱逐尽可能多的LRU页面必要适合我的新页面。
假设我需要n
最近使用的页面被驱逐。但是,这些页面在缓冲区/内存池中不一定是连续的。
我想过的一个简单方法是合并这些页面,这意味着我需要适当地重新排序缓冲池。
最简单的方法是复制整个缓冲区并覆盖永久缓冲区并适当地更新数据类型。然而,这假定我们有足够的RAM来拷贝整个缓冲区来执行这个操作。有没有一种巧妙的方法,我不需要复制整个缓冲区?
感谢
感谢您的详细解答。赞赏。 –