1

操作系统问题:

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

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

假设每个页表条目为 64 位,虚拟页为 20 位,对应的物理帧为 20 位。有几个位是状态/特权,但有一些“免费”位可以使用。

谢谢。

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

4

1 回答 1

1

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

如果您执行所有这些操作的代码未在内核中运行,您可能并不总是能够执行上述操作。这在很大程度上取决于硬件和操作系统。不过,您可能会在 Windows 上接近它,请参阅这个问题和我对它的回答。

于 2012-03-07T03:04:39.860 回答