微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么ELF的虚拟地址可以在映射到虚拟空间之前确定?

链接目标文件生成ELF文件,并确定其虚拟地址。 例如,.text的虚拟地址是0x8048000。 当ELF文件将被映射到虚拟空间时,另一个ELF已经被映射到这个地址。 操作系统应该做什么? 为什么在映射到虚拟空间之前,可以确定ELF的虚拟地址。

当我从.NET产生一个新的线程时究竟发生了什么?

为什么Linux的IPv4堆栈需要随机数字?

无法启动Windows 7(32位)与bcdedit /debugging选项

用户空间中实现Linux字符驱动程序

有没有办法让Splint或类似的静态检查器与Linux内核模块一起工作?

每个进程都有自己的私有虚拟地址空间 – 这就是虚拟的点。 它不必对应于程序实际位于物理RAM中的位置。 所以在不同进程中运行的程序之间没有地址冲突。 它们都可以映射到这个地址,每个地址都在它自己的私有地址空间中。

ELF告诉Linux内核它要放置在哪里,如果Linux内核接受这个地址,它会把它加载到那里。

例如0不起作用,因为太低: 为什么ELF执行入口点的形式为虚拟地址0x80xxxxx,而不是0x0?

ld使用它配置的链接描述文件决定地址: 在一个ELF文件中,_start的地址是如何确定的?

正如所述的那样,每个进程都有自己的虚拟地址空间。

更确切地说,虚拟地址空间通过分页支持硬件 : x86分页如何工作? 内核设置和使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐