话说用户态访问内核内存很简单,将这块内核内存映射到用户地址空间即可.依托一个字符设备,实现其mmap回调函数,在用户进程打开那个设备,mmap之,很容易实现用户进程直接访问内核内存. 但是反过来呢?内核访问用户内存.理论上也很简单,因为所有进程的内核态地址空间都是共享的,所以想访问哪个进程的内存,就切换到那个进程的地址空间,这 将丝毫不会影响当前的执行流.事实上也是这么简单,use_mm就是干这个的,不过既然要切换地址空间,那么当前task的地址空间就必须是明确的,因此 就不能在任意上下文调用u