Memory 将寄存器文件保存和恢复到内存中是否需要特权指令?
我猜不会,因为用户进程应该能够保存和恢复自己的寄存器(例如用户级线程),并且不会损害任何其他进程和操作系统。然而,在进行上下文切换时,为什么我们需要先切换到内核模式,然后保存和恢复寄存器?我很困惑。有人能帮忙吗?谢谢大家! 它取决于使用的处理器以及需要保存和恢复的寄存器列表 否→ 称为的典型保存/恢复场景不需要任何特殊的东西。您可以在您喜爱的Memory 将寄存器文件保存和恢复到内存中是否需要特权指令?,memory,operating-system,kernel,cpu-registers,Memory,Operating System,Kernel,Cpu Registers,我猜不会,因为用户进程应该能够保存和恢复自己的寄存器(例如用户级线程),并且不会损害任何其他进程和操作系统。然而,在进行上下文切换时,为什么我们需要先切换到内核模式,然后保存和恢复寄存器?我很困惑。有人能帮忙吗?谢谢大家! 它取决于使用的处理器以及需要保存和恢复的寄存器列表 否→ 称为的典型保存/恢复场景不需要任何特殊的东西。您可以在您喜爱的C++编译器附带的运行时库的源代码中研究它的实现,从而找到更多关于它内部的信息 是→ 在上像CR0一样进行恢复肯定是一项特权操作,因为篡改寄存器可能会破坏所
C++
编译器附带的运行时库的源代码中研究它的实现,从而找到更多关于它内部的信息
是→ 在上像CR0
一样进行恢复肯定是一项特权操作,因为篡改寄存器可能会破坏所有安全保证,并让恶意代码对系统造成巨大危害
第5.9章“特权指令”将下列寄存器(及其保存/恢复指令)列为特权:
-加载GDT寄存器LGDT
-加载LDT寄存器LLDT
-加载任务寄存器LTR
-加载IDT寄存器LIDT
(控制寄存器)-加载和存储控制寄存器MOV
-加载机器状态字LMSW
-清除寄存器CR0中的任务切换标志CLTS
(调试寄存器)-加载和存储调试寄存器MOV
-读取特定于型号的寄存器RDMSR
-写入特定于型号的寄存器WRMSR