什么决定了流程的特权级别?

时间:2013-02-14 18:05:02

标签: operating-system privilege

我听说过权限级别,响铃,特权指令,非特权指令,用户模式,内核模式,用户空间,内核空间。

用户进程将以低权限运行,其中OS进程更高,我也听说过负责一般保护的CPL寄存器。 CPU也只知道CPL,并确定哪个页面指令属于哪个基础。

我想知道谁/什么最初决定了流程的权限级别?

当确定进程将以低或高权限级别运行时?在编译时?在装货?

什么告诉当前程序将以特定权限级别运行?段寄存器?叙?装载机?

2 个答案:

答案 0 :(得分:4)

首先,我看到3个问题。

  1. 谁/什么最初决定流程的权限级别?
  2. 当确定进程将以低或高权限级别运行时?
  3. 什么告诉当前程序将以特定权限级别运行?
  4. 其次确认某些术语的定义

    当您说特权级别时,我认为您指的是the concept of level of privilege associated with CPU processor mode,而不是任何其他可用权限机制的通用级别。

    当你说过程时,我认为你指的是the concept of the currently running program,而不是某个替代定义。

    用户进程以用户模式运行,具有给定CPU体系结构的用户权限

    内核进程在内核模式下运行,具有给定CPU体系结构的超级用户权限。

    进程是用户还是内核取决于在未使用分页时在段描述符中设置哪些标志,或者在使用分页的页表或页目录条目中设置哪些标志。

    这意味着进程的权限级别取决于进程的代码在内存中的位置。如果它在内核空间中并使用相关标志进行标记,那么它就是一个内核进程。如果它在用户空间中并使用相关标志进行标记,则它是用户进程。

    如果您运行的进程/程序不是内核,则它是大多数现代操作系统上的用户进程。因此,当决定是在程序执行时,特别是首次加载内核时的操作系统初始化时间。

    进程是该内核并且是在超级用户权限级别运行,或者不是,并且它以用户权限级别运行。

    CPU根据相关状态寄存器(Intel X86上的代码状态寄存器和ARM上的当前程序状态寄存器)检查存储器中每次执行任何代码或数据段。

    当用户进程需要访问内核资源时,这样做的一般方法是允许用户进程通过进行系统调用来代表它来询问内核进程,这会在内核进程运行时进行权限上下文切换。请求用户进程。

    作为旁注,Kernel Mode Linux允许您以内核/管理员模式运行用户进程。

    参考和进一步阅读

答案 1 :(得分:0)

大多数处理器都有陷阱或软件故障指令,可将处理器切换到特权模式。内核检查用户模式进程是否具有特定操作的权限。由于内核数据受到保护,内核可以强制执行安全策略 - 用户进程无法直接赋予自己权限。

权限有时被称为权限,因此我想解释处理器模式在强制执行安全权限方面的工作原理。