1)所以在我正在阅读的书中说,例如更改 IR 寄存器不需要从用户模式切换到内核模式,但我不明白,我怎么知道它是否需要切换?
2)还有其他寄存器呢,比如DR、PSW、PC等,我怎么知道它是否需要切换?
3)最后一个问题是,在某些时候这本书说:改变“内存管理寄存器”的值需要内核模式,但我什至不知道这个寄存器是什么?!
1)所以在我正在阅读的书中说,例如更改 IR 寄存器不需要从用户模式切换到内核模式,但我不明白,我怎么知道它是否需要切换?
2)还有其他寄存器呢,比如DR、PSW、PC等,我怎么知道它是否需要切换?
3)最后一个问题是,在某些时候这本书说:改变“内存管理寄存器”的值需要内核模式,但我什至不知道这个寄存器是什么?!
在大多数系统中,可以将寄存器分为三组:
1) 通用寄存器:这些是进程可以随意更改的寄存器。
2)进程定义寄存器:这些寄存器只能在内核模式下更改。这样的寄存器通常包括处理器状态和定义进程地址空间的寄存器。请注意,处理器状态的值可以在用户模式下通过指令更改,但寄存器的值不能在用户模式下设置。
3)系统寄存器:这些是所有进程共享的寄存器。这些更改只能在内核模式下更改。例如,通常有一个寄存器来定义中断向量的位置。
1)所以在我正在阅读的书中说,例如更改 IR 寄存器不需要从用户模式切换到内核模式,但我不明白,
什么是“IR”寄存器。这通常称为程序计数器(PC)吗?如果是这样,可以在用户模式下进行更改。
我怎么知道它是否需要切换?2)还有其他寄存器呢,比如 DR、PSW、PC 等,我怎么知道它是否需要切换?
您必须阅读处理器的手册。但是,如果它不是通用寄存器,则需要在内核模式下才能更改它。
如果您的寄存器是 R0, R1, R2, .... 或具有 SP, BP,PC 之类的别名,您可以在用户模式下进行更改。否则,假设它需要内核模式。
3)最后一个问题是,在某些时候这本书说:改变“内存管理寄存器”的值需要内核模式,但我什至不知道这个寄存器是什么?!
这些取决于您的处理器。