gpt4 book ai didi

operating-system - 什么决定进程的特权级别?

转载 作者:行者123 更新时间:2023-12-04 15:24:24 24 4
gpt4 key购买 nike

我听说过特权级别、环、特权指令、非特权指令、用户模式、内核模式、用户空间、内核空间。

用户进程将以低特权运行,而操作系统进程具有更高的特权,我也听说过负责一般保护的 CPL 寄存器。 CPU 也只知道 CPL,它是根据页面指令属于哪个页面来决定的。

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

什么时候决定进程将以低权限级别还是高权限级别运行?在编译时?在加载?

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

最佳答案

首先我看到3个问题。

  • 谁/什么最初决定进程的权限级别?
  • 什么时候决定进程将以低权限级别还是高权限级别运行?
  • 什么告诉当前程序将以特定的权限级别运行?

  • 其次确认一些术语的定义

    当您说权限级别时,我相信您指的是 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 , 允许您在内核/主管模式下运行用户进程。

    引用资料和进一步阅读
  • OS Dev Security Page
  • OS Dev Segmentation Page
  • OS Dev Paging Page
  • OS Dev ARM overview
  • Memory Translation and Segmentation
  • CPU Rings, Privilege, and Protection
  • Operating System Privilege: Protection and Isolation
  • Operating Modes, System Calls and Interrupts
  • Paging and Segmentation
  • 关于operating-system - 什么决定进程的特权级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881223/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com