中断、异常处理机制
不管是什么cpu,中断部分的内容都是少不了的。试想一想,如果一颗cpu只知道不停地运行,那么它的执行效率实际上是很低的。拥有了中断的cpu不仅使得cpu可以和更多的外设io打交道,还能极大地提高自身运行的效率。不同的cpu处理中断的方法其实都差不多,在整个cpu的地址空间里面,通常在低地址区域会有一张中断向量表,表中每一项记录了每一个中断对应的处理函数。
所以,只要中断发生时,cpu就会首先将下一条pc地址压入堆栈,然后跳转到中断向量表中对应的中断地址处执行的相应的处理函数。这个过程是cpu自动完成的,不需要我们关心。这样对我们来说,它和cpu中的函数调用其实没有什么区别。等待中断处理结束后,我们使用ret指令返回到之前压入的那个ip地址处,继续下面的代码。整个过程就好像中断根本没有发生过一样。
所以,对于cpu的了解其实主要就是对寄存器、指令集和中断的了解。有了对中断和堆栈的深入理解,其实也就没有什么困难的了。在这里我们大家可以考虑一个问题,如何在Windows或者linux下仿真中断完成我们的操作系统开发呢?大家可以自己先思考一下,我们会在随后的博客中继续介绍。整篇文章,我们没有介绍编码的相关内容,其实只要把这里的基本概念弄清楚了,剩下来其实就是一些流程性的工作了。在软件开发中,设计其实是最难的,剩下的才是开发和调试。
中断、异常处理机制
不管是什么cpu,中断部分的内容都是少不了的。试想一想,如果一颗cpu只知道不停地运行,那么它的执行效率实际上是很低的。拥有了中断的cpu不仅使得cpu可以和更多的外设io打交道,还能极大地提高自身运行的效率。不同的cpu处理中断的方法其实都差不多,在整个cpu的地址空间里面,通常在低地址区域会有一张中断向量表,表中每一项记录了每一个中断对应的处理函数。
所以,只要中断发生时,cpu就会首先将下一条pc地址压入堆栈,然后跳转到中断向量表中对应的中断地址处执行的相应的处理函数。这个过程是cpu自动完成的,不需要我们关心。这样对我们来说,它和cpu中的函数调用其实没有什么区别。等待中断处理结束后,我们使用ret指令返回到之前压入的那个ip地址处,继续下面的代码。整个过程就好像中断根本没有发生过一样。
所以,对于cpu的了解其实主要就是对寄存器、指令集和中断的了解。有了对中断和堆栈的深入理解,其实也就没有什么困难的了。在这里我们大家可以考虑一个问题,如何在Windows或者linux下仿真中断完成我们的操作系统开发呢?大家可以自己先思考一下,我们会在随后的博客中继续介绍。整篇文章,我们没有介绍编码的相关内容,其实只要把这里的基本概念弄清楚了,剩下来其实就是一些流程性的工作了。在软件开发中,设计其实是最难的,剩下的才是开发和调试。
举报