1、/dev/mem 和 /dev/kmem
1)/dev/mem: 物理内存的全镜像。可以用来访问物理内存
2)/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。kernel部分内存用户空间本不可访问。但是因为所有进程共享内核空间的页表。所以内核虚拟地址对应物理地址是确定的。kmem的作用即是根据kernel的虚拟地址,找到对应的物理地址,再将物理地址映射到用户空间。这样访问映射的虚拟地址,即访问内核对应的内容。
3)区别:
/dev/mem: 物理内存的全镜像。可以用来访问物理内存。
/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。
4)作用:
前者用来访问物理IO设备,比如访问显卡的物理内存,或嵌入式中访问GPIO。用法一般就是open,然后mmap,接着可以使用map之后的地址来访问物理内存。这其实就是实现用户空间驱动的一种方法。
后者一般可以用来查看kernel的变量,或者用作rootkit之类的。
2、内核配置
Device Drivers → Character devices → /dev/kmem virtual device support
3、devmem2
1)使用方法
注意:该工具一次只能读/写1个寄存器