当我们从用户模式转到内核模式时,哪些寄存器会被更改?以及迁移到内核模式的原因是什么?
为什么这些原因不会导致进入内核模式:
答案 0 :(得分:0)
从您的问题中我发现您的操作系统概念很差。 好吧,让我解释一下,(我假设你使用的是linux而不是windows)。
“当我们从用户模式转到内核模式时,哪些寄存器会被更改?” 要了解此问题的答案,您需要了解流程管理。 但我可以简单地说,linux使用系统调用接口从用户空间转换到内核空间。系统调用接口使用一些寄存器(基于您的处理器)来传递系统调用的系统调用号和参数。
答案 1 :(得分:0)
通常,在
时会转移到内核模式所有寄存器都将被保留,因为如果您的寄存器可以随机更改,编写代码会相当困难,但如何会发生特定于CPU的情况。
答案 2 :(得分:0)
“当我们从用户模式转到内核模式时,哪些寄存器会被更改?!”
在运行Linux内核的典型的基于x86的架构中,会发生这种情况:
正如您所看到的,这一切都取决于操作系统和架构。
“以及迁移到内核模式的原因是什么?”
CPU默认在内核模式下工作,你的问题应该是“用户模式需要什么?”。用户模式是必需的,因为它不提供对正在运行的软件的所有权限。您可以在用户模式下运行浏览器/文件管理器/ shell而无需担心。如果对应用程序软件给予完全权限,他们将访问内核数据并对其造成损害,并且他们也可能访问硬件,例如,销毁存储在硬盘上的数据。
内核当然必须在内核模式下工作(至少是内核的核心)。例如,应用程序软件可能需要将数据写入磁盘上的文件。应用程序软件无权访问磁盘(因为它在用户模式下运行)。实现这一目标的唯一方法是调用内核(在内核模式下运行)来完成这项工作。这就是你需要从用户模式转到内核模式的原因,反之亦然。