【发布时间】:2012-10-16 21:35:47
【问题描述】:
我正在编写一个内核驱动程序,旨在剖析 Linux 内核页表。 我发现,每当我从驱动程序内部读取 CR3 寄存器时,CR3 的内容每次读取时都会发生变化!
为什么会这样?既然驱动在内核态执行,CR3需要指向内核页目录(对吧?),那为什么CR3每次都在变化呢?
如果 CR3 不断变化,驱动程序如何按预期正确访问内存?
【问题讨论】:
-
根据我的阅读,CR3 的内容将是最后一个“运行”进程的 CR3(Linux 使用每个进程的分页结构)。所以我想分析变化没有多大意义。
标签: linux linux-kernel x86 linux-device-driver x86-64