linux .text和.data真的一样吗?

vlf7wbxs  于 2023-06-21  发布在  Linux
关注(0)|答案(1)|浏览(134)

在Linux syscall ptrace的文档中,我看到了以下文本:
--剪--
Linux没有单独的文本和数据地址空间,所以
--剪--
这在多大程度上是事实呢?.text.data真的是存储为一个吗?这是否意味着我可以像在data中那样在text中定义东西?
谢谢

sshcrbum

sshcrbum1#

他们不是这么说的它们位于一个平面虚拟地址空间的不同区域中。
在哈佛机器上,作为数据地址的地址0x1000将访问与作为代码地址的地址0x1000不同的字节,因为它们是不同地址空间中的地址。拥有多个地址空间就像街道地址,其中123 Church St。是与图灵街123号不同房子(存储单元)。
但是Linux的内存模型不是这样工作的;所有页地址都是唯一的整数,因为每个进程只有一个虚拟内存地址空间。
因此,您可以绘制一个内存Map,其中.text.data部分是同一空间的不同部分。它们使用不同的权限进行Map(read+exec与read+write),假设您没有使用任何特殊的链接器选项,但unsigned char *可以从其中任何一个读取字节。

相关问题