通常使用什么数据结构来实现帧表?

时间:2018-05-17 02:28:19

标签: operating-system paging

我必须为操作系统项目实现一个框架表,以跟踪物理内存中的哪些帧(不是虚拟内存页面)正在使用或免费。其中一个重要的事情是决定用于帧表的数据结构。根据您的经验,帧表通常如何实现,关于它们使用的数据结构?在我的例子中,条目必须保持指向物理内存中的帧的指针。你会建议完全使用数组,列表,哈希表或其他东西吗?

1 个答案:

答案 0 :(得分:0)

Windows和Linux都使用一组结构,其中数组的每个元素都描述了物理地址空间的页面框架。因此,如果总共有128个页面帧,那么该数组将包含128个结构。

在Windows上,此阵列称为PFN数据库。每个结构描述帧的状态(无论是分配的还是空闲的),并且通常包括映射到它的那些页表条目的一个或多个物理地址。为了使查找自由帧比仅仅线性扫描数组更有效,每个元素包含指向同一状态的下一个元素的指针。所以基本上有一个免费帧的链接列表。

在Linux上,数组被称为mem_map,并且系统中的每个NUMA节点都有一个这样的数组。