从任务调度iret后出现page fault

我是模仿linux2.4的switch_to写的简单的任务调度程序,在qemu上运行;不过,我在timer_interrupt直接用schedule()调度。
这是fork的子程序的寄存器的值

clipboard.png

下图堆栈分别是eip和cs

clipboard.png

然后,执行iret指令后出现下图所示的结果

clipboard.png

让我感到奇怪的是返回的eip是错误的,但是gdb打印的却是正确,我想请问下,我是漏了什么吗?
为什么会出那么奇怪的错误?

阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题