出于某种原因,我需要将代码段的虚拟地址转换为物理地址。我做了以下实验:Linux中进程代码段的页面转换。为什么页表条目为某些页面取0?
我从START_CODE和END_CODE在A处理的mm_struct,这是最初的地址和可执行代码的最终地址得到虚拟地址。
我得到的过程A.
的CR3我通过网页翻译的虚拟地址到物理地址的页面。例如,过程A中有10个代码段。我将翻译页面每个开始处的10个虚拟地址。
我发现一些页面会得到Page Table Entry(PTE)== 0.某些页面可以成功转换为物理地址。
我尝试Firefox和Minicom作为我的过程,他们两人都会陷入困境。
我想我的问题是:有谁可以向我解释为什么PTE == 0?这是否意味着这些页面已被换出到磁盘?如果是这种情况,我怎么才能找到这些网页?
感谢您的任何输入!
这是在内核模式(如从常规设备驱动程序)或用户模式? – wallyk
谢谢你的提问。实际上,这既不在内核模式下,也不在用户模式下。我正在另一台计算机上进行取证。假设我有一个内存转储4G文件,进程A的CR3,进程A的start_code和end_code(虚拟地址)。我需要找出进程A的可执行代码。 –