gpt4 book ai didi

linux - x86_64 Linux 进程的用户空间虚拟内存布局是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 09:29:56 24 4
gpt4 key购买 nike

我想知道 Linux 内核如何在 x86_64 上映射 0x7fffffffffff 以下的用户空间部分(如堆栈、堆和全局变量)。

内核是否更喜欢每个部分的固定起始地址?或者它在某种程度上取决于链接器的决定?每个部分的大小是多少?

最佳答案

Linux(以及大多数其他现代操作系统)正在做一些叫做 Address space layout randomization 的事情.这允许操作系统将堆栈、堆和库移动到任意位置以防止某些类别的攻击。<​​/p>

唯一需要链接器支持的部分是文本部分 - 您需要构建 enter link description here为了随机化本节的开始。

关于section的大小,text section显然取决于二进制大小,而初始化和未初始化的data section则取决于具体的程序。最大堆栈大小由内核控制,堆大小由程序中断决定(图形说明参见 enter link description here),可以通过调用 brk (2) 来更改。

关于linux - x86_64 Linux 进程的用户空间虚拟内存布局是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32645172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com