当前位置: 首页 > 面试题库 >

在Linux中如何从用户空间查找变量的物理地址?

嵇丰
2023-03-14
问题内容

我想找到用户空间进程中定义的变量的物理地址吗?有什么办法可以使用root特权吗?


问题答案:

首先,您为什么要这样做?现代VM系统的目的是使应用程序程序员摆脱物理内存布局的复杂性。给他们每个人一个统一的地址空间,使他们的生活更轻松。

如果确实要执行此操作,则几乎确实需要使用内核模块。以常规方式获取变量的虚拟地址,使用它来索引进程页面表并读取找到的值(框架的物理地址)。然后添加页面偏移量以获得完整的物理地址。请注意,启用分页后,您将无法使用该地址。

(如果幸运的话,您也许可以从/ proc文件系统中获取VM区域的帧地址,因此不需要编写内核模块。)



 类似资料:
  • 问题内容: 在运行Linux的基于ARM的系统上,我有一个将内存映射到物理地址的设备。从所有地址都是虚拟的用户空间程序中,如何从该地址读取内容? 问题答案: 您可以使用系统调用将设备文件映射到用户进程内存。通常,设备文件是物理内存到文件系统的映射。否则,您必须编写一个内核模块来创建此类文件或提供一种将所需内存映射到用户进程的方法。 另一种方法是将/ dev / mem的部分重新映射到用户内存。 编

  • 问题内容: 有没有办法从linux中的用户空间分配连续的物理内存?至少有几个保证的连续内存页。一个巨大的页面不是答案。 问题答案: 不,那里没有。您 确实 需要在内核空间中执行此操作。 如果您说“我们需要从用户空间执行此操作”-没有在内核空间中进行任何操作,那没有什么意义-因为用户空间程序无法控制 甚至不知道 底层内存是否连续。 您需要执行此操作的唯一原因-是与某个硬件或其他需要此要求的低层(即内

  • 问题内容: 我想设置一个有空间的环境变量。它是文件夹的路径,文件夹名称为:/ home / mehrabib / my video 我编辑.bashrc并在其中添加以下行: 并运行以下命令: 结果是: 我将其更改为 并运行以下命令: 结果是: 我该怎么办? 问题答案: 你应该做 总结丹的评论也可以 它将扩展到 再次。 就个人而言,我更喜欢语法。

  • 主要内容:物理地址空间,逻辑地址空间,什么是单词?物理地址空间 系统中的物理地址空间可以被定义为主存储器的大小。 将进程大小与物理地址空间进行比较非常重要。 进程大小必须小于物理地址空间。 逻辑地址空间 逻辑地址空间可以定义为进程的大小。 进程的大小应该足够小,以便它可以驻留在主内存中。 什么是单词? Word是内存的最小单位。 它是字节的集合。 在分析输入到解码器的n位地址和从解码器产生的2 ^ n个存储位置之后,每个操作系统定义不同的字长。

  • 我试图创建一个HTML编辑器(学习目的),我试图使程序尽可能动态。我希望通过它的id查找FXML变量,如TextField,并在按下按钮时检索TextField中的文本。 我设置了2个映射变量 我希望类似于通过ActionEvent获取按钮ID/值的方式。 编辑:以下是完整的FXML btw

  • 问题内容: 除了手动浏览页面目录条目之外,是否有任何合适的方法可以通过逻辑地址获取物理地址?我在内核的源代码中寻找了此功能,并发现有一个功能可以很好地利用内置的巨大和透明页面支持。但是它没有导出到内核模块(为什么?)… 因此,我不想发明轮子,我认为手动重新实现功能不是很好。 问题答案: 好吧,它看起来可能像这样(在虚拟地址后跟随PTE):