当我们从用户模式转移到内核模式时,哪些寄存器会发生变化?!移动到内核模式的原因是什么?
为什么这些原因不会导致迁移到内核模式:
- 由root创建新管理员(超级用户或管理员)
- 如果我错过了 TLB 为什么我们不转移到内核模式
- 当我们写入页表中修改的位页时
当我们从用户模式转移到内核模式时,哪些寄存器会发生变化?!移动到内核模式的原因是什么?
为什么这些原因不会导致迁移到内核模式:
“当我们从用户模式转移到内核模式时,哪些寄存器会发生变化?!”
在运行 linux 内核的典型 x86 架构中,会发生以下情况:
如您所见,这完全取决于操作系统和架构。
“以及转移到内核模式的原因是什么?”
CPU默认工作在内核模式,你的问题应该是“用户模式需要什么?”。用户模式是必要的,因为它不为正在运行的软件提供所有权限。您可以在用户模式下运行浏览器/文件管理器/shell,而无需担心。如果授予应用软件完全权限,他们将访问内核数据并对其进行破坏,他们还可能访问硬件,例如,破坏存储在硬盘上的数据。
内核当然必须在内核模式下工作(至少是内核的核心)。例如,应用软件可能需要将数据写入磁盘上的文件。应用程序软件无权访问磁盘(因为它在用户模式下运行)。实现这一点的唯一方法是调用内核(在内核模式下运行)来完成这项工作。这就是为什么您需要从用户模式转移到内核模式,反之亦然。
从您的问题中,我发现您的操作系统概念很差。好的,让我解释一下,(我假设您使用的是 linux 而不是 windows)。
“当我们从用户模式转移到内核模式时,哪些寄存器会发生变化?” 要知道这个问题的答案,您需要了解流程管理。但我可以简单地说,Linux 使用系统调用接口从用户空间转换到内核空间。系统调用接口使用一些寄存器(基于您的处理器)来传递系统调用号和系统调用的参数。
通常,迁移到内核模式发生在
所有寄存器都将被保留,因为如果您的寄存器可以随机更改,那么编写代码将相当困难,但是如何发生这种情况是非常特定于 CPU 的。