首页 文章

哪些指令只能在内核模式下运行? [关闭]

提问于
浏览
3

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

Edit :在下面提供了答案之后 .

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

Privileged Level Instructions

说明说明

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 回答

  • 4

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

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

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

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

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

相关问题