gpt4 book ai didi

c - 如何获取 DRAM 地址而不是虚拟地址

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

我知道如果我尝试打印数组元素的地址,它将是来自虚拟内存的地址,而不是来自真实内存(物理内存),即 DRAM。

printf ("Address of A[5] and A[6] are %u and %u", &A[5], &A[6]);

我发现地址是连续的(假设元素是字符)。实际上它们可能不是连续的,至少在 DRAM 中不是这样。我想知道真实地址。我怎么得到它?

对于 Windows 或 Linux,我需要知道这一点。

最佳答案

您无法从用户代码中获取虚拟地址的物理地址;只有内核的最低级别处理物理地址,您必须在那里拦截内容。

请注意,当程序运行时,虚拟地址的物理地址可能不是常量——页面可能从一个物理地址调出并调回另一个物理地址。如果您进行系统调用,这种重新映射可能发生在内核识别物理地址和函数调用完成之间,因为请求信息的程序是未安排的并且部分调出然后再次调入。

关于c - 如何获取 DRAM 地址而不是虚拟地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20559429/

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