假設如下。我有一個帶有一個槓桿分頁的虛擬內存系統,我有一個MMU,TLB的東西是由軟件控制的。MMU和TLB未命中
好吧..想象一下,我是一個過程,我想讀取虛擬地址vaddr的RAM中的單詞。
因此,CPU給MMU vaddr,如果有一個條目與(假設)vaddr的5個最高有效位,則MMU檢查TLB。如果它在那裏......一切正常,它會計算物理地址,一切正常。
現在..假設它不在TLB中。在這種情況下,MMU發生中斷(頁面錯誤)。 好的..現在我在處理頁面錯誤。
在PBR(頁面基址寄存器)中,我有頁表的起始地址。 我的問題在這裏。這個地址是物理地址嗎?我想是的,因爲如果它是虛擬的,將意味着兩件事: 1)必須以某種方式保留在進程的虛擬地址空間中(從未聽說過類似的東西) 2)如果此地址不在TLB中,會再次出現頁面錯誤,我會有一個無限循環。
關於表中地址的同樣問題。如果我有兩級分頁。第一級表格中的地址(指向第二級表格)在某種程度上是虛擬的還是物理的?
謝謝。
需要指出的是,TLB未命中並不一定會導致#PF! – Benoit 2013-01-08 10:49:47
謹慎闡述?爲什麼TLB錯過免費的錯誤?這是正交的 - TLB命中/未命中只是緩存翻譯的問題,由HW處理,而許多其他情況(架構可見並應由OS處理)會導致錯誤,如頁面丟失,頁面沒有被訪問,等等......話雖如此,爲了回答最初的問題 - 頁面地圖是作爲物理地址空間來組織和訪問的,這意味着你不需要在頁面轉換過程中轉換對它的訪問。 – Leeor 2013-07-20 07:02:28