0

我知道“即使是单个进程也可以拥有大于系统物理内存的虚拟地址空间”,所以只想知道哪个内核代码负责创建大于物理内存的虚拟内存?

第二件事是,我可以更改代码以使其变大吗?如果我更改代码以扩展虚拟内存,是否有任何性能优势?

4

1 回答 1

0

涉及所有内存管理(和地址空间)管理代码。

从应用程序的角度来看,您应该了解更多的虚拟内存(内核控制MMU并处理页面错误),尤其是mmap(2)mprotect(2)madvise(2)execve(2)系统调用。应用程序使用这些系统调用更改其地址空间。您可以使用proc(5)文件系统来查询它。例如cat /proc/self/maps显示正在执行的进程的地址空间cat

另请阅读高级 Linux 编程。了解更多关于VDSOASLR的信息。

在内核中,相关的源代码主要是它的mm/子目录(但几乎每个文件系统都有mmap特定的代码,页面错误也与调度等有关......)

于 2013-02-25T18:26:26.337 回答