1

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

4

2 回答 2

4

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

于 2012-11-17T05:40:21.267 回答
1

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

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

于 2020-07-29T01:52:35.953 回答