gpt4 book ai didi

linux - 将数据从 32 位用户程序传递到 64 位 linux

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

如果一个32位的用户程序运行在64位的linux内核上,并希望将指向用户空间中数据的指针传递给内核代码。如果在用户空间和内核空间中定义了相同的结构。内核空间代码能否正确解码数据?如果是,它是如何完成的?

最佳答案

是的。您使用的 32 位地址(或您使用的任何地址,在 64 位中是相同的)是虚拟地址。换句话说,您使用并传递给任何人(包括内核)的任何类型的地址都是“幻想”的东西,它不以任何明显的方式对应于真实地址。除了虚拟地址,您什么都不知道。

为了使这项工作正常进行,内核(通常在 MMU 的帮助下)定期将虚拟地址转换为物理地址。为此,每个进程都有一个表,其中包含对该进程有效的所有页面(由内核管理)。
几乎在每次页面错误时,内核都会将虚拟地址映射和重新映射到现有或不存在的位置(基本上,一直如此)。

内核因此当然可以为您传递给它的任何指针做任何可能需要的翻译,只要是这种情况。

关于linux - 将数据从 32 位用户程序传递到 64 位 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22405900/

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