2015-01-06 35 views
4

我可以爲已經分配的頁面接收新的虛擬地址嗎?如何獲取新的虛擬內存地址到已經分配的頁面?

如果是的話系統調用是什麼? (最好是在Linux上)

+0

這似乎是這樣一個危險的事情要做。內核可能會照顧一切,但仍然是。我想知道你是否有特定的用例? – tux3

+0

最主要的原因是在免費維爾後免除使用。這樣原來的虛擬地址仍然會存在並且起作用,但不會再指向他們之前引用的內容(因爲它將被重寫)。 – Valarauca

+1

哦,我誤解了,我雖然想讓兩個不同的虛擬地址同時指向同一個物理頁面!抱歉。你可能會想看看mremap:http://linux.die.net/man/2/mremap – tux3

回答

3

不能完全確定你所要求的在這裏,但:

  • 一個小小的研究(先回答here)建議你可以在一般情況下,通過mmap做到這一點「荷蘭國際集團/proc/PID/mem。沒有嘗試過,但假設它可以工作,它可以讓你訪問調用進程的內存或(受安全保護)其他進程。

  • 有(據我所知)沒有直接的系統調用,讓你可以就已經分配給已不同過程頁面創建一個進程的地址空間的虛擬地址。

  • 有(據我所知)沒有直接的系統調用,讓你可以就已經分配給相同過程中的頁面時,其他的創建一個進程的地址空間的虛擬地址不是作爲的結果mmap

  • 對於使用mmap分配給同一進程的頁面,您可能想要查看mremapremap_file_pages

+0

是否有Linux內存管理系統調用和接口的一般文檔?我嘗試搜索,但基本上失敗了。 – Valarauca