免責聲明:此問題與我的操作系統類有關。但是,這不是針對任何特定的作業問題。我只是想明白。需求分頁交換框架
以下是我所瞭解的有關按需分頁的內容。每個進程都有自己的分頁表。該表包含邏輯地址的索引,其對應的物理地址以及指示頁面當前是否加載到主存儲器中的有效/無效位。
訪問頁面時,如果有效/無效位設置爲有效,則通過表中的邏輯地址條目在主存儲器中訪問該頁面。如果頁面未包含在物理內存中,則會生成頁面錯誤。這會導致程序嘗試將頁面加載到內存中。
系統首先檢查請求的地址是否有效。如果不是,則該過程終止。如果地址有效,則系統檢查空閒幀。如果找到空閒幀,系統會從磁盤加載所請求的數據並將其放入空閒幀中。有效/無效位在分頁表中設置爲有效,邏輯地址設置爲先前的空閒幀,程序可以繼續執行。
如果不存在空閒幀,則系統必須換出當前使用的幀並將請求的數據放入幀中。系統使用諸如LRU,MRU等的算法來確定將哪個頁面交換出去。系統將舊頁面交換出來,加載到新頁面中,然後將控制權返回給進程。
這是我的問題:當全幀換出時,訪問此幀的分頁表的有效/無效位如何設置?也就是說,系統如何知道進程的分頁表訪問正在被交換的幀?
下面是一個例子。假設有兩個過程中,每個大小爲2和大小2的物理存儲器的分頁表讓被處理的分頁表如下:
方法A虛擬存儲器:
Address Contents
0 'A'
1 'B'
方法B虛擬存儲器:
Address Contents
0 'C'
1 'D'
方法A分頁表:
Logical Physical Valid/Invalid
0 0 Valid
1 0 Invalid
種方法B分頁表:
Logical Physical Valid/Invalid
0 1 Valid
1 0 Invalid
主存儲器:
Address Contents
0 'A'
1 'C'
現在假定進程A試圖訪問B的其邏輯地址的系統,交換出的主存儲器地址1和互換的在內容'd'。在進程的B分頁表中,系統如何知道將有效/無效位設置爲無效,邏輯地址爲0?
太棒了。這就是我需要知道的。謝謝您的幫助。 – LandonSchropp 2012-04-22 20:39:50