关于进入内核模式,是通过类似于
int
的某些指令完成的,对吗?我理解所有系统调用都受到了严格的保护,但如果我用汇编语言编写一个包含int
指令的程序会怎么样呢?那该如何保护呢?我的意思是,当这个程序被编译后,最终生成可执行文件时,int
指令必须位于“.text”部分,因为编译器不会对其进行任何处理,对吗?那么操作系统在运行时会如何处理呢?或者说,“.text”部分中究竟是什么?它是CPU所识别的指令集,还是一些中间格式,需要由操作系统进行“翻译”,以便操作系统有机会在CPU运行之前“拒绝”某些指令(如“int”或其他“受限制”的指令)?
更新: 对于任何感兴趣的人,这里有一个来自Quora的很好的解释(至少对我来说如此):https://www.quora.com/What-is-CPU-kernel-mode-and-how-is-it-guarded-by-the-OS/answer/Mostafa-Abd-El-Aziz?snids=937993065&nsrc=1&filter=all