Linux内核的哪一部分实施权限分离以及如何实现?

时间:2016-08-14 08:27:36

标签: linux linux-kernel

我想知道内核以及负责此任务的内核部分如何强制执行权限分离。

例如,假设有两个进程在运行 - 一个在环0,另一个在环3.内核如何跟踪每个进程的环号?

编辑:我知道戒指号码。我的问题是关于内核(模块或其他)的部分,它执行对进程的检查以找出它们的权限级别。我相信可能有一个内核组件可以检查进程的环号。

1 个答案:

答案 0 :(得分:4)

没有关于进程的环号的概念。

内核映射到一个内存区域,用户空间映射到另一个区域。在引导时,内核指定执行 syscall 指令时cpu必须跳转到的地址。所以有人做系统调用,cpu切换到ring0并按照内核的指示跳转到该地址。它现在正在执行内核代码。然后,在返回时,cpu切换回ring3并继续执行。

其他进入内核的方式也有类似的例子。

那么,linux内核如何强制分离?它为用户空间设置了在ring3中执行的功能。触发cpu切换到ring0的任何内容也会跳转到内核在引导时配置的地址。 除了内核代码之外没有其他代码在ring0中执行