|
比如当前系统处于进程A的系统调用中,要访问另一进程B的地址空间的一个vam虚存段。
直接访问是不行的了,因为当前cr3寄存器是A进程的pgd,对应的页表都是A进程的。
那么该怎么访问呢?可以使用的是B进程的 task_struct指针。
copy_from_user也是访问A进程的空间吧?
可不可以先switch_mm()到B的mm_struct或者临时装入B的pgd到cr3再访问?
还有内核代码访问内核空间是通过init_mm的pgd转换逻辑地址吗?
内核能不能越过mmu直接访问物理地址?
比如一条嵌入汇编mov某个数到某个地址p,
那么这个p应该是逻辑地址还是物理地址?
望好心人指点,不甚感激! |
|