1、区别
/dev/mem: 物理内存的全镜像。可以用来访问物理内存。
/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。2、作用
前者用来访问物理IO设备,比如X用来访问显卡的物理内存(用户空间和内核空间的零拷贝),或嵌入式中访问GPIO。用法一般就是open,然后mmap,接着可以使用map之后的地址来访问物理内存。这其实就是实现用户空间驱动的一种方法。
后者一般可以用来查看kernel的变量,或者用作rootkit之类的。
使用mmap最典型的例子是显示卡的驱动,将显存空间直接从内核映射到用户空间将可提供显存的读写效率。