计算机原理简略总结(二)++中断

在说虚拟地址物理地址之前我们先说下中断

 
上一章我们说了硬件可以通过控制总线给cpu传送一个中断信号,这个有非凡的意义。我们知道cpu的读写速度与硬件的读写速度不是一个数量级别的,比如我们让硬盘去读个文件,cpu怎么知道硬盘读完了呢?一种方式是不断的去查询硬件的状态寄存器,看看是否读完了,这种方式就是轮询唠,cpu傻傻得不断做重复的事情,这样cpu被毫无意义的占用了,其实想想解决方法非常简单,就是cpu先去做别的事情,硬件读完了,自己主动通知cpu一下,告诉他自己处理完毕了,这时候cpu可能在做别的事情,一旦接收到了硬件类似的消息,cpu会停止手头的工作去为硬件的请求作出响应。
 
这里需要考虑一下问题,一个是手头的工作现在停止了,待会怎么再继续做啊?很简答,我们只需要保存当前cpu的执行环境,说得很装逼,直白的说,就是只要保存当前cpu各个寄存器的值,等下再重新赋值回来就行了,执行环境基本就是寄存器的值。
 
另一个是既然中断信息来了,我们要为中断作出响应了,怎么响应?去哪里找这个中断程序呢?很简单,我们只要为每一种中断标号,成为中断号,再把中断号和程序对应,但还是去哪里找这个程序?这里就要规定一个地方了,开始人们把00000H到003FFH作为中断矢量表,中断矢量可以理解为一个程序的入口地址,索引当然就是中断号唠,其实到了后来人们不再硬性规定中断矢量表的位置了,而是把他的起始位置放在了一个寄存器(IDTR)命名为中断描述符表。
 
其实中断处理程序就是驱动程序的一种,我们称为中断处理驱动程序,之后我们会说到驱动。
posted @ 2016-03-15 17:16  神不知鬼不晓  阅读(294)  评论(0编辑  收藏  举报