根据第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] 删除。
我来说两句