【发布时间】:2012-04-18 19:37:17
【问题描述】:
我正在尝试获取与文件中特定字节关联的(物理)位置。我该怎么做呢?
我不能在 C 中执行此操作,因为我必须将文件读入缓冲区,如果我尝试在 RAM 中获取物理(非虚拟)地址,我将获得缓冲区的地址而不是特定字节在文件中。
我们将不胜感激。
谢谢
【问题讨论】:
-
文件中的字节没有您所想的地址。它们存储在磁盘上,而不是 RAM 中,并且您正在请求 RAM 中的地址。
-
我将文件“临时”存储在 /shmem 中,该文件基本上映射到 RAM。
-
文件中的字节没有内存地址,除非您将文件的内容读取到缓冲区或使用 mmap 映射它。
-
@Falcata:好的,它在 RAM 中。为什么需要物理地址?通常只有操作系统本身处理物理地址。
-
我知道内存中有问题,导致设备错误。现在通常在嵌入式系统上,我会在设备上运行内存测试,但在这种特殊情况下,这是一个安全的设备......所以没有很多选择。我已经将故障范围缩小到一个位置,并且通过写出 /shmem 并将其读回,我已经能够在 RAM 中找到一个位置。现在我想获取问题发生的字节的物理地址.
标签: c linux memory virtual street-address