【发布时间】:2012-01-24 08:22:54
【问题描述】:
朋友们,我正在尝试跟踪操作系统的完整执行情况,包括在其上运行的进程。为此,我想要每个进程执行的指令及其执行跟踪,我想这样做而不必去获取每个进程的 objdump。
所以我的目标是:
1)构建每个pid的地址空间。
2)跟踪每个pid的执行。
为了实现上述目标,我在模拟器 Qemu 上运行基于 linux 的操作系统。
当 qemu 第一次遇到指令时,我将使用 io-port 或 guest 中已知的物理内存地址检查运行该指令的进程的 pid。然后我可以使用这些信息来做我想做的事情。
我的问题是.... 在 kernel/sched.c 中我可以知道接下来要执行的进程的 pid。意味着我无法计算出像 -> launch_process(pid) 这样的函数调用。有人可以将我指向内核中的这个位置吗?或者系统中是否存在我们可以跟踪地址空间的已知位置。一个是CR3,但我真的不能相信它。
对于某些人来说,这似乎是指向此位置的微不足道的指针,但我自己无法找到此位置。
【问题讨论】:
标签: linux architecture linux-kernel scheduling