自己动手写操作系统吧 关注:71贴子:281
  • 0回复贴,共1

《一个操作系统的实现》第六章进程切换的 tss.esp0 的大问题

取消只看楼主收藏回复

在《一个操作系统的实现》第六章中,有一个重大的问题:
在 restart() 函数运行之前,系统一直是运行在内核态的。第一次执行 restart() 之后,TestA() 进程开始运行,系统处在 ring1 。之后,中断发生,由于是 ring1 -> ring0 ,所以存在栈的切换。所以,问题就来了,因为此时 tss.esp0 还没有初始化,所以 此时 tss.esp0 的值是垃圾值,tss.esp0 被赋值是在 hwint00 执行之后才有的。那么,既然是这样,为什么会没有事?
求解!


1楼2014-11-06 16:56回复