需要了解虚拟内存的概念。
当一个进程请求2GB映射到4GB的Linux环境中的virutal内存( 1GB内核: 3GB Userspace)时,当另一个进程已经保存了2GB的映射时。
如何实现堆栈、堆、数据段的映射?我找不到任何例子来说明我的理解。教科书只针对每一种映射单独提及,而不是一种实际的方法。
发布于 2015-06-16 08:44:50
假设有3 GiB的虚拟地址空间可用,进程的文本、堆栈、堆和先前的内存映射一起只占用少量的地址空间(远小于1 GiB)。然后,如果这个过程请求2GB大小的映射,那么就没有问题,就有足够的空间来容纳该映射。
(实际上,有一个小情况是不正确的:如果进程的现有映射是分散在地址空间中的,并且没有连续的2GB地址范围可用的话)。但这不太可能)。
在不同进程的地址空间中存在或不存在什么映射与其无关。
https://unix.stackexchange.com/questions/209928
复制相似问题