2015-01-06 28 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