2012-05-06 76 views

回答

1

沒有便攜的方式。您可以阻止頁與mlockmlockall(但這需要足夠的權限)互換,或者您可以使用不可移植的方法。在Linux上,/proc中的kpageflags文件以及/proc下的進程目錄中的pagemap文件應該足以爲您提供信息。它們記錄在Linux源代碼的Documentation樹中。

+0

這可能是有用的,/ proc總是在主內存上? –

+0

'/ proc'實際上並不存在於磁盤或內存中;它是在運行時從進程讀取時生成的*。即使文件顯示爲普通文件,它們在這方面的表現更像管道。唯一的問題是,在'/'下解析名稱'/ proc'可能需要訪問'/',但是在實時系統上,這可能是通過製作一個小的虛擬硬盤來實現的,大部分實際的文件系統內容'/ usr'等。 –

2

不是以便攜的方式。

即使有可能,它也是無用的。你已經檢查過的一個頁面被換入,在你準備好使用它的那一刻就可以被換出。

+0

有一種無競爭的方式來處理這種情況:如果頁面被報告爲內存中,請求助手線程在頁面上調用'mlock'(以便不阻塞)並使用「try」或「定時」型同步原語來檢查有限時間的成功。之後,您可以確定訪問該頁面不會導致IO和可能無界的阻塞。當你完成後,你可以''munlock'頁面將責任交給內核。 –

相關問題