【问题标题】:Is changing the value of any register(DR, IR etc) requires switching from user mode to kernel mode?更改任何寄存器(DR、IR 等)的值是否需要从用户模式切换到内核模式?
【发布时间】:2018-04-12 13:55:47
【问题描述】:

1)所以在我正在阅读的书中说,例如更改 IR 寄存器不需要从用户模式切换到内核模式,但我不明白,我怎么知道它是否需要切换?

2) 还有其他寄存器,如 DR、PSW、PC 等,我怎么知道它是否需要切换?

3)最后一个问题是,在某些时候这本书说:改变“内存管理寄存器”的值需要内核模式,但我什至不知道这个寄存器是什么?!

【问题讨论】:

  • 您说的是哪种架构? x86?
  • 我正在为操作系统考试而学习,所以这适用于大多数现代计算机。
  • 不同的架构有不同的寄存器集。虽然所有(“现代”)架构中的寄存器都有一些共同点,但这些寄存器的名称和规则是不同的。 how can i know if it requires switching or not? - 阅读特定架构的文档。 "memory management registers" ... but i don't even know what this register is?! - 我们也不知道,因为不同的架构有不同的内存管理寄存器。

标签: operating-system kernel cpu-registers kernel-mode usermode


【解决方案1】:

在大多数系统中,可以将寄存器分为三组:

1) 通用寄存器:这些是进程可以随意更改的寄存器。

2) 进程定义寄存器:这些寄存器只能在内核模式下更改。这样的寄存器通常包括处理器状态和定义进程地址空间的寄存器。注意处理器状态的值可以在用户态通过指令改变,但寄存器的值不能在用户态设置。

3) 系统寄存器:这些是所有进程共享的寄存器。这些更改只能在内核模式下更改。例如,通常有一个寄存器来定义中断向量的位置。

1)所以在我正在阅读的书中说,例如更改 IR 寄存器不需要从用户模式切换到内核模式,但我不明白,

什么是“IR”寄存器。这通常称为程序计数器(PC)吗?如果是这样,可以在用户模式下进行更改。

我怎么知道它是否需要切换? 和 2)还有其他寄存器,比如DR,PSW,PC等,我怎么知道它是否需要切换?

您必须阅读处理器的手册。但是,如果它不是通用寄存器,则需要在内核模式下才能更改它。

如果您的寄存器是 R0, R1, R2, .... 或有 SP, BP,PC 等别名,您可以在用户模式下更改。否则,假设它需要内核模式。

3)最后一个问题是,在某些时候这本书说:改变“内存管理寄存器”的值需要内核模式,但我什至不知道这个寄存器是什么?!

这些取决于您的处理器。

【讨论】:

    猜你喜欢
    • 2013-10-04
    • 1970-01-01
    • 2014-04-30
    • 2016-12-26
    • 2018-06-27
    • 2019-08-25
    • 2019-12-10
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多