Operating system 什么样的数据结构通常用于实现框架表?

Operating system 什么样的数据结构通常用于实现框架表?,operating-system,paging,Operating System,Paging,我必须为操作系统项目实现一个框架表,以跟踪物理内存(而不是虚拟内存的页面)中的哪些框架正在使用或空闲。其中一件大事是决定用于框架表的数据结构。根据您的经验,框架表通常是如何实现的,以及它们使用什么样的数据结构?在我的例子中,条目必须包含指向物理内存中帧的指针。您是否建议使用数组、列表、哈希表或其他完全相同的方法 Windows和Linux都使用一个结构数组,其中数组的每个元素描述物理地址空间的页帧。因此,如果总共有128个页面帧,那么该数组将包含128个结构 在Windows上,此阵列称为PFN

我必须为操作系统项目实现一个框架表,以跟踪物理内存(而不是虚拟内存的页面)中的哪些框架正在使用或空闲。其中一件大事是决定用于框架表的数据结构。根据您的经验,框架表通常是如何实现的,以及它们使用什么样的数据结构?在我的例子中,条目必须包含指向物理内存中帧的指针。您是否建议使用数组、列表、哈希表或其他完全相同的方法

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

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

在Linux上,调用数组,系统中的每个NUMA节点都有一个这样的数组