如何记录进程的页面引用字符串



操作系统问题:

假设我们有一个进程在分页内存系统中运行,我们想跟踪它以特定的顺序访问哪些页面。我们怎么能做到这一点?

我想,每次需要将页面加载到TLB时,我们都可以将其写入字符串,但我的操作系统将无法跟踪TLB中每个页面的引用顺序(和引用数量),除非我每次访问内存时都能检查TLB。总的来说,我觉得这个问题有点令人困惑。。。

假设每个页面表条目为64位,虚拟页面为20位,对应物理帧为20位。有几个位是状态/特权,但也有一些"空闲"位可以使用。

谢谢。

EDIT-一个例子:如果操作系统的页面大小为1000,并且进程访问一些地址,如1234、5660、1220、7442。。。那么页面引用字符串将看起来像1,5,1,7,。。。

一个选项是将进程的所有页面标记为不可访问,每当出现页面错误时,将出现错误的页面标记为可访问,将页码记录在"字符串"中,然后让进程执行一条指令,并从头开始重复所有操作(将所有页面标记为由不可访问等)。

如果执行所有这些操作的代码没有在内核中运行,则您可能无法始终执行上述操作。这在很大程度上取决于硬件和操作系统。不过,你可能会在Windows上接近它,看看这个问题和我的答案。

最新更新