在用户空间中,如果我尝试访问内核空间中的虚拟地址,那么保护究竟发生在哪里?
答案 0 :(得分:3)
用户进程和内核在完全不同的地址空间上工作(除了内核在处理用户进程的系统调用时必须使用的区域),可以“尝试访问内核空间中的虚拟地址”的假设是无效。
答案 1 :(得分:0)
关于arm / aarch64中的页表,有一些位(AP [2:0])控制访问;对于内核地址,它将由EL1(内核)将其设置为“读/写”,而由EL0(用户)将其设置为“无”,并且该保护措施将阻止用户访问内核地址。
对于ArmV8.1,PSTATE中有一个PAN,以防止内核访问用户空间,这很有趣 ^^ 。如果有兴趣,请检查https://lwn.net/Articles/700623/。