假如统统顺遂,系统将进入用户空间并执行 hello 二进制文件,直到使用 int 指令进行系统调用。这时就会出现题目,因为 JOS 没有设置允许从用户空间过渡到内核的硬件。当中央处置惩罚器发现本身的设置不允许处置惩罚这个系统调用中断时,它就会产生一个一般掩护非常,发现本身无法处置惩罚这个非常后,又会产生一个双重故障非常,发现本身也无法处置惩罚这个非常后,最后就会放弃,这就是所谓的 "三重故障" 。通常环境下,CPU 会重置,系统会重启。虽然这对传统应用程序很重要(请参阅本博文中的原因解释)就像这个样子:
我们用 GDB 在 env_pop_tf() 函数设置断点,然后通过指令 si,单步调试,观察 iret 指令前后寄存器的变革。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |