在Linux中,用户空间如何无法访问内核空间?

时间:2012-11-17 05:33:36

标签: linux

在用户空间中,如果我尝试访问内核空间中的虚拟地址,那么保护究竟发生在哪里?

2 个答案:

答案 0 :(得分:3)

用户进程和内核在完全不同的地址空间上工作(除了内核在处理用户进程的系统调用时必须使用的区域),可以“尝试访问内核空间中的虚拟地址”的假设是无效。

答案 1 :(得分:0)

关于arm / aarch64中的页表,有一些位(AP [2:0])控制访问;对于内核地址,它将由EL1(内核)将其设置为“读/写”,而由EL0(用户)将其设置为“无”,并且该保护措施将阻止用户访问内核地址。

对于ArmV8.1,PSTATE中有一个PAN,以防止内核访问用户空间,这很有趣 ^^ 。如果有兴趣,请检查https://lwn.net/Articles/700623/