2012-03-07 44 views
1

操作系統問題:如何記錄進程的頁面引用字符串?

假設我們有一個進程在分頁內存系統中運行,並且我們想跟蹤它按照特定順序訪問哪些頁面。我們怎麼能做到這一點?

我在想我們可以在每次需要將頁面加載到TLB時將頁面寫入字符串,但是我的操作系統將無法跟蹤每頁的引用順序(以及引用數量)在TLB中,除非以每種方式每次訪問內存,否則我都可以檢查TLB。總的來說,我發現這個問題是有點混亂...

假設每個頁表項爲64位,20位虛擬頁面,併爲相應的物理幀20位。一對夫婦位是狀態/特權,但也有一些「免費」位的工作。

謝謝。

編輯 - 一個例子:如果操作系統的頁面大小爲1000,並且進程訪問像1234,5660,1220,7442那樣的一些地址,則頁面引用字符串將看起來像1,5,1 ,7,...

回答

1

一種選擇是,以紀念過程無法訪問,只要有缺頁,標記故障頁(S)作爲訪問的所有頁面,在你的「串記錄的頁碼(S) 「然後讓過程執行一條指令,並從一開始(全部標爲不可訪問,等等)重複的一切。

您可能並不總是能夠做到上面的,如果你是在做這一切的代碼是不是在內核中運行。這在很大程度上取決於硬件和操作系統。你可能會接近它在Windows上,不過,看到this question和我的答案。

相關問題