1

如果我有一个可查找的字符设备 - /dev/mem_8,允许用户空间程序通过简单的 I/O 操作随机访问内存阵列,我可以将它映射到我的进程的虚拟寻址内存,以便使用 x86_64 指令轻松访问它:MOV, REP MOVS, 和 SSE: MOVNTDQ, MOVNTDQA... ?

操作系统:Linux x86_64 内核 >= 2.6

4

1 回答 1

1

一旦您从 Linux(用户模式)应用程序内部成功调用mmap(2)系统调用,您的地址空间就会发生变化,并且每个(非特权)机器指令(来自您的进程mmap)都可以访问它,因为进程工作在虚拟内存中

您可以使用proc(5)文件系统来查询地址空间,例如使用cat /proc/$PID/maps...。

如果你/dev/mem_8mmap,应该没问题。如果可能的话,最好把它做成一个块设备。或者可能提供一个FUSE文件系统(在您的 char 设备上方提供类似块的抽象)......

另请阅读高级 Linux 编程...

也许raw(8)是相关的......(不确定)。

于 2013-10-08T19:50:59.023 回答