【问题标题】:How Linux manages and keeps track of the physical memory pages?Linux 如何管理和跟踪物理内存页面?
【发布时间】:2014-04-29 21:15:35
【问题描述】:
我在询问以下使用的数据结构:
我想知道 linux 如何跟踪所有物理页面。我不担心它如何保留vm_area_struct。用于存储所有这些的数据结构是什么?
当它被赋予一个虚拟地址时它如何查找一个特定的物理页面?
基数树?红黑树?哈希表?什么?
谢谢。
【问题讨论】:
标签:
linux
memory-management
linux-kernel
linux-device-driver
process-management
【解决方案1】:
内核保留一组struct page 结构,每个物理页一个。
通过遍历页表结构查找虚拟地址,该结构是一棵树(由硬件定义)。
【解决方案2】:
来自:
包括/linux/mm_types.h
/*
* 系统中的每一个物理页面都有一个struct page与之关联
它来跟踪我们在
片刻。请注意,我们无法跟踪哪些任务正在使用
一个页面,但如果它是一个 pagecache 页面,rmap 结构可以告诉我们
谁在映射它。
*/