作为一个操作系统,进程毫无疑问是最基本也是最重要的

我们的下一个重大目标应该是实现一个进程。再进一步,我们应该逐渐拥有多个进程。

如果从进程本身的角度来看,它只不过是一段执行的代码。这样看来它跟我们已经实现的代码没有本质的区别

可是,如果从操作系统的角度来看,进程必须是可控制的,所以这就涉及到进程和操作系统之间的转换。

因为cpu只有一个,同一个时刻要么是客户进程在运行,要么是操作系统在运行,我们应该清楚,如果实现进程

需要一种控制权转换机制,这种机制就是中断。

------------------------------------------------------------------------------

现在该给这些中断和异常的处理程序统统加上的时候了。虽然它们总数有十几个,但我们可以用相似的方法来处理它们。

中断或异常发生时,eflags,cs,eip已经被压入堆栈,如果有错误码的化,错误码也被压入堆栈。

所以我们对异常处理的总体思想是,如果有错误码,直接把向量号压入堆栈,然后执行一个函数exception handler

如果没有错误码,则先在堆栈中压入0xFFFFFFFF,再把向量号压入堆栈,然后执行exception handler

P226,自己动手写操作系统。

----------------------------------------------------------------------------------------------------------------------

posted on 2011-05-15 16:18  wanghj_dz  阅读(368)  评论(0编辑  收藏  举报

导航