Nik*_*war 6 operating-system privilege
我听说过特权级别,环,特权指令,非特权指令,用户模式,内核模式,用户空间,内核空间.
用户进程将以低权限运行,其中OS进程更高,我也听说过负责一般保护的CPL寄存器.CPU也只知道CPL,并确定哪个页面指令属于哪个基础.
我想知道谁/什么最初决定了流程的权限级别?
当确定进程将以低或高权限级别运行时?在编译时?在装货?
什么告诉当前程序将以特定权限级别运行?段寄存器?叙?装载机?
首先我看到 3 个问题。
其次确认一些术语的定义
当您说特权级别时,我相信您指的是与 CPU 处理器模式相关的特权级别概念,而不是任何其他可用特权机制的通用级别。
当您说进程时,我相信您指的是当前正在运行的程序的概念,而不是某些替代定义。
用户进程以给定 CPU 架构的用户权限在用户模式下运行
对于给定的 CPU 架构,内核进程以管理员权限在内核模式下运行。
进程是用户进程还是内核进程取决于未使用分页时在段描述符中设置的标志或使用分页时在页表或页目录条目中设置的标志。
这意味着进程的特权级别由该进程的代码在内存中的位置决定。如果它位于内核空间中并使用相关标志进行标记,那么它就是一个内核进程。如果它位于用户空间并使用相关标志进行标记,那么它就是一个用户进程。
如果您正在运行的进程/程序不是内核,那么它是大多数现代操作系统上的用户进程。因此,决定是在程序执行时做出的,特别是在内核首次加载时的操作系统初始化时。
该进程要么是该内核,并以管理员权限级别运行,要么不是该内核,而是以用户权限级别运行。
CPU 会根据相关状态寄存器(Intel X86 上的代码状态寄存器和 ARM 上的当前程序状态寄存器)检查内存中任何代码或数据段的每次执行。
当用户进程需要访问内核资源时,一般的方法是允许用户进程通过系统调用代表其向内核进程请求,这会在内核进程运行对内核资源的请求时进行权限上下文切换。用户进程。
顺便说一句,内核模式 Linux允许您在内核/主管模式下运行用户进程。
参考文献和进一步阅读