作为一个操作系统,进程毫无疑问是最基本也是最重要的
我们的下一个重大目标应该是实现一个进程。再进一步,我们应该逐渐拥有多个进程。
如果从进程本身的角度来看,它只不过是一段执行的代码。这样看来它跟我们已经实现的代码没有本质的区别
可是,如果从操作系统的角度来看,进程必须是可控制的,所以这就涉及到进程和操作系统之间的转换。
因为cpu只有一个,同一个时刻要么是客户进程在运行,要么是操作系统在运行,我们应该清楚,如果实现进程
需要一种控制权转换机制,这种机制就是中断。
------------------------------------------------------------------------------
现在该给这些中断和异常的处理程序统统加上的时候了。虽然它们总数有十几个,但我们可以用相似的方法来处理它们。
中断或异常发生时,eflags,cs,eip已经被压入堆栈,如果有错误码的化,错误码也被压入堆栈。
所以我们对异常处理的总体思想是,如果有错误码,直接把向量号压入堆栈,然后执行一个函数exception handler
如果没有错误码,则先在堆栈中压入0xFFFFFFFF,再把向量号压入堆栈,然后执行exception handler
P226,自己动手写操作系统。
----------------------------------------------------------------------------------------------------------------------