用户模式下的进程切换到内核模式。那么该进程将具有root特权?

罗恩·文斯

根据第7段中的http://www.linfo.org/kernel_mode.html

当用户进程通过系统调用运行一部分内核代码时,该进程将临时变为内核进程并处于内核模式。在内核模式下,该进程将具有root(即管理)特权,并可访问关键系统资源。整个内核(不是进程而是进程的控制器)仅在内核模式下执行。当内核已满足某个进程的请求时,它将使该进程返回用户模式。

我不清楚这条线,

在内核模式下,该进程将具有root(即管理)特权,并可访问关键系统资源。

为什么没有以root身份运行的用户空间进程将具有root特权?它与以root用户身份运行的用户空间进程有何不同?

巴南金

(我会尽量简短。)

从理论上讲,特权有两个方面:

  • 计算机的指令集体系结构(ISA),用于保护机器的某些信息和/或功能。

  • 操作系统(OS)创建应用和通信的生态系统。它的核心是内核,该程序可以在ISA上运行而没有任何类型的依赖项。

当今的操作系统执行许多非常不同的任务,因此我们可以像今天一样使用计算机。在一个非常非常简化的视图中,您可以将内核想象为计算机执行的唯一程序。应用程序,流程和用户都是操作系统(尤其是内核)创建的生态系统的产物。

当我们谈论有关操作系统的用户(空间)特权时,我们谈论的是由操作系统管理,授予和强制执行的特权。例如,内核强制执行限制从特定目录获取数据的文件权限。它查看与文件关联的一些ID,解释一些表示特权的位,然后获取数据或拒绝这样做。

ISA中的特权层次结构提供了内核用于其目的的工具。具体细节差异很大,但是通常存在内核模式,在这种模式下,CPU执行的程序可以非常自由地执行I / O并使用ISA提供的指令,而用户模式则是I / O和指令是受约束的。

例如,当读取指令以将数据写入特定的内存地址时,处于内核模式的CPU可以简单地将数据写入特定的内存地址,而在用户模式下,它首先执行一些检查以查看该内存地址是否在特定地址中。数据可以写入的允许地址范围。如果确定不可以写入地址,通常,ISA将切换到内核模式并开始执行另一条指令流,该指令流是内核的一部分,并且将执行正确的事情(TM)。

这是一种执行策略的示例,该策略可以确保一个程序不会干扰另一个程序...,以便您当前访问的网页上的javascript不能使您的网上银行应用程序执行可疑交易...

注意,在内核模式下,不会触发其他任何东西来执行正确的事情,前提是假定在内核模式下运行的程序在做正确的事情。因此,在内核模式下,没有什么可以迫使程序遵守操作系统生态系统的抽象规则和概念。这就是为什么以内核模式运行的程序作为root用户具有强大功能的原因。

从技术上讲,内核模式比仅作为OS的root用户要强大得多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从用户模式切换到内核模式

来自分类Dev

从用户模式切换到内核模式

来自分类Dev

用户输入后将perl进程切换到后台

来自分类Dev

如何将用户root切换到root用户以杀死父进程?

来自分类Dev

MySQL进程是否以用户或内核模式运行?

来自分类Dev

如何切换到其他用户的进程?

来自分类Dev

如何在控制台模式下将功能键切换到不同的终端?

来自分类Dev

具有root特权的永远模块是否也以root特权运行其他进程?

来自分类Dev

如何放弃root用户启动进程的特权?

来自分类Dev

将交换链切换到窗口模式

来自分类Dev

JavaScript:将CSS切换到暗模式

来自分类Dev

JavaScript:将CSS切换到暗模式

来自分类Dev

将任务列表切换到评论模式

来自分类Dev

如何获取当前以内核模式运行的所有进程?

来自分类Dev

Linux内核如何在用户模式和内核模式堆栈之间切换?

来自分类Dev

React不会切换到生产模式

来自分类Dev

Notepad ++切换到奇怪的编辑模式

来自分类Dev

在Firemonkey中切换到发布模式

来自分类Dev

Chrome突然切换到“夜间模式”

来自分类Dev

如何切换到桌面模式

来自分类Dev

SELinux不会切换到“强制”模式

来自分类Dev

iOS通过代码将默认键盘从ABC模式切换到123模式?

来自分类Dev

iOS是否通过代码将默认键盘从ABC模式切换到123模式?

来自分类Dev

模式切换是否发生从用户线程到内核线程的切换?

来自分类Dev

当行模式没有足够的空间时,如何使Flexbox切换到列模式?

来自分类Dev

如何在不切换到root的情况下以root用户身份运行smartctl?

来自分类Dev

何时将context_switch()完全控制切换到新进程?

来自分类Dev

在父进程死亡并且它们都切换到init之后,如何杀死所有子进程?

来自分类Dev

终止进程后,端口的所有者切换到netstat

Related 相关文章

  1. 1

    从用户模式切换到内核模式

  2. 2

    从用户模式切换到内核模式

  3. 3

    用户输入后将perl进程切换到后台

  4. 4

    如何将用户root切换到root用户以杀死父进程?

  5. 5

    MySQL进程是否以用户或内核模式运行?

  6. 6

    如何切换到其他用户的进程?

  7. 7

    如何在控制台模式下将功能键切换到不同的终端?

  8. 8

    具有root特权的永远模块是否也以root特权运行其他进程?

  9. 9

    如何放弃root用户启动进程的特权?

  10. 10

    将交换链切换到窗口模式

  11. 11

    JavaScript:将CSS切换到暗模式

  12. 12

    JavaScript:将CSS切换到暗模式

  13. 13

    将任务列表切换到评论模式

  14. 14

    如何获取当前以内核模式运行的所有进程?

  15. 15

    Linux内核如何在用户模式和内核模式堆栈之间切换?

  16. 16

    React不会切换到生产模式

  17. 17

    Notepad ++切换到奇怪的编辑模式

  18. 18

    在Firemonkey中切换到发布模式

  19. 19

    Chrome突然切换到“夜间模式”

  20. 20

    如何切换到桌面模式

  21. 21

    SELinux不会切换到“强制”模式

  22. 22

    iOS通过代码将默认键盘从ABC模式切换到123模式?

  23. 23

    iOS是否通过代码将默认键盘从ABC模式切换到123模式?

  24. 24

    模式切换是否发生从用户线程到内核线程的切换?

  25. 25

    当行模式没有足够的空间时,如何使Flexbox切换到列模式?

  26. 26

    如何在不切换到root的情况下以root用户身份运行smartctl?

  27. 27

    何时将context_switch()完全控制切换到新进程?

  28. 28

    在父进程死亡并且它们都切换到init之后,如何杀死所有子进程?

  29. 29

    终止进程后,端口的所有者切换到netstat

热门标签

归档