哪些指令只能在内核模式下运行?

时间:2014-02-22 18:05:53

标签: x86 kernel mode

哪些指令(对于x86芯片)只能在内核模式下运行?我试图了解用户和内核模式之间的实际区别。到目前为止,我了解地址空间的一部分只能在内核模式下访问。此内存空间包含应受到保护以免受用户程序影响的驱动程序等。内核模式如何在CPU中实际实现?在CPU中有一点转1或类似的事情发生?

编辑:之后 答案已在下面提供。

我只是在这里添加从答案中提到的链接中复制的部分答案。

特权级别说明

指令说明

LGDT将GDT的地址加载到GDTR

LLDT将LDT的地址加载到LDTR

LTR将任务寄存器加载到TR

MOV控制寄存器复制数据并存储在控制寄存器中

LMSW加载新的机器状态字

CLTS清除控制寄存器CR0中的任务切换标志

MOV调试寄存器复制数据并存储在调试寄存器中

INVD使高速缓存无效回写

INVLPG使TLB条目无效

WBINVD使用回写无效缓存

HLT暂停处理器

RDMSR读模型特定寄存器(MSR)

WRMSR写入模型特定寄存器(MSR)

RDPMC读取性能监控计数器

RDTSC读取时间戳计数器

1 个答案:

答案 0 :(得分:4)

这个问题更多地针对那些处理非常低级别硬件细节(比如内核程序员)的人,而不是那些处理通常被称为软件开发人员的高级问题的人。我会回答,因为我认为这仍然是计算机科学!

您不希望运行用户应用程序,它会突然删除屏幕上的所有内容,删除硬盘中的所有数据,拒绝任何硬件访问,完全控制CPU资源等等。不愉快的方式。内核是控制用户访问系统实用程序的主服务器。此外,如果一个用户应用程序失败,那么它将“孤军奋战”!所以病毒通常以内核为目标,从而造成有意义的伤害。

这种保护不能通过软件有效地完成。这将要求操作系统检查用户应用程序的每条指令,确保没有任何恶意!一个例子是试图直接写入内核内存空间的例子。例如,尝试访问地址0处的内存将生成称为“一般保护错误”的中断。转到the link below并搜索“特权级别说明”文本。

通过配置GDTR(全局描述符表寄存器)等系统寄存器来实现内核模式。转到the link below并搜索标题“Global Descriptor Table”。根据该寄存器的配置,在违反特权级别时会产生一般保护错误中断。

链接:http://www.brokenthorn.com/Resources/OSDev23.html