CPU对中断源做出反应后,暂停正在执行的程序,下一步要做的是?

作者&投稿:徐岚 (若有异议请与网页底部的电邮联系)
中断响应的处理过程~

中断工作是一个软硬件协调工作的过程,整个工作过程可分为四个子过程来理解:
1、中断请求
中断请求泛指中断源为了请求CPU暂停正在执行的某个程序,而转去执行中断源请求执行的某个程序,所发出的中断请求信号。也可以特指加到CPU的INTR和NMI引脚的请求信号。
读者需要注意的是:内部中断源的请求总是在CPU内部建立相应请求标志,用户可以不去理睬它。外部的非可屏蔽中断请求可以通过NMI引脚加入CPU,也比较简单。需要特别处理的主要是可屏蔽中断源的请求,这是因为外部可屏蔽中断源常常有许多个,它们只能通过CPU的INTR一个引脚输入,这就出现了以下问题:
(1)如何保证不同外部中断源采用不同的中断请求信号(电平不同或边缘不同)均能与INTR端的电平要求匹配。
(2)当多个中断源同时提出中断请求时,如何保证让优先级最高的请求,优先获得服务。
(3)如何保证当某一中断请求被响应后能及时地除掉INTR端的相应请求信号(不管中断源的请求信号是否解除)。
(4)如何解决在中断中又响应中断。
为了解决以上四个问题,必须将中断源的中断请求信号经过一个中断控制器处理,由中断控制器再去控制INTR引脚。本章第三节将要介绍的8259就是完成这一功能的专用中断控制器芯片。
2、中断承认
3、中断响应
4、断点恢复与返回
这是在中断服务程序结束前完成的操作。首先用程序指令从栈中弹出前面保护起来的寄存器内容, 执行RET指令时,硬件将自动断点保护阶段保护的内容弹至CS、IP和FLAG。

1.中断源如何向cpu表达中断请求
一般是设置中断请求触发器,在需要cpu服务时,将中断请求触发器置位,其1端或0端输出的跳变作为中断请求信号。显然中断源可以随时提出中断请求。
2.中断请求何种情况下才可能得到cpu响应
一个中断请求在同时具备下列两个条件时,才有可能得到cpu响应:
①该中断源未被屏蔽;
②该中断请求在当前所有中断请求中级别最高。
3.cpu何时响应中断
cpu在同时满足下列两个条件时,响应中断:
①if=1(对非屏蔽中断,没有此项要求);
②现行指令执行完。
cpu在每一个指令周期的最后一个总线周期的最后一个时钟周期的开始采样中断请求输入线,若有中断请求,则下一步不进入取指令周期,而进入中断响应周期,如图5.1所示。对于8086系列cpu,中断响应周期为两个。
之所以把一条指令执行完作为响应中断的条件,是因为中断响应周期以及中断服务程序要占用cpu资源。如果在执行一条指令的中间响应中断,则指令的当前状态既不能保存也无法加以恢复。与此相对比,dma操作是在dma控制器的作用下进行的,不占用cpu资源,所以在一条指令执行中间、当前总线周期结束即可进入dma周期。

保存当前所有寄存器的状态,然后处理中断请求以下内容来自Wikipedia:中断处理过程在实际运行中,一旦设备通过某引脚N向8259A发出中断指令,后者便向8086A的INTR引脚发送中断信号。8086A通过INTA引脚通知8259A中断有效(这个过程实际上还包括对此8259A的选址),后者即通过地址总线将对应引脚N的中断类型码(已预先存好,见上节)发送给CPU。CPU得到中断类型码后,先进行现场保护,主要包括:
1.状态寄存器FLAGS压栈(同时堆栈寄存器SP-2);
2.关闭中断(将FLAGS寄存器的IF位置零);
3.将当前代码段寄存器CS和程序计数器IP压栈(同时堆栈寄存器SP-4)。

现场保护完成后,CPU开始按照前述的两步骤翻译中断程序入口地址。在得到中断处理程序地址之后但调用中断处理程序之前,CPU会再检查一下NMI引脚是否有信号,以防在刚才的处理过程中忽略了可能的NMI中断。NMI的优先级始终高于INTR。

中断处理程序虽然是由程序员编写,但须循一定规范。作为例程,中断处理程序应该先将各寄存器信息(除了IP和CS,此二寄存器现已指向当前中断程序)压入堆栈予以保存,这样才能在中断处理程序内部使用这些寄存器。在程序结束时,应该按与压栈保护时相反的顺序弹出各寄存器的值。中断程序的最后一句始终是IRET指令,这条指令将栈顶6个字节分别弹出并存入IP、CS和FLAGS寄存器,完成了现场的还原。

当然,如果是操作系统的中断处理程序,则未必——通常不会——还原中断前的状态。这样的中断处理程序通常会在调用完寄存器保存例程后,调用进程调度程序(多由高级语言编写),并决定下一个运行的进程。随后将此进程的寄存器信息(上次中断时保存下来的)存入寄存器并返回。在中断程序结束之后,主程序也发生了改变。

转到处理程序


电脑死机?按CTRL+ALT+DEL没反映?
无法启动系统,画面“定格”无反应,鼠标、键盘无法输入,软件运行非正常中断等。尽管造成死机的原因是多...枋�莸那榭觯�庋�突岢鱿帧耙斐4砦蟆薄=饩霭旆ǖ比灰脖冉霞虻ィ�褪侨肃PU回到正常的...如果我们在删除一个应用软件的时候,该软件的反安装程序会记录它曾经安装过的文件并准备将其逐一删去,...

乌恰县19294219090: CPU对中断源做出反应后,暂停正在执行的程序,下一步要做的是?
鄣哪枳术: 转到处理程序

乌恰县19294219090: cpu对中断源做出反应后,暂停现在正在执行的程序,下一步要作的是?
鄣哪枳术: 忘了怎么表达了,意思差不多是:保存当前执行程序的地址,中断执行完后才能返回继续执行

乌恰县19294219090: 什么是中断系统调用?
鄣哪枳术: 所谓中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被“打断”的程序.

乌恰县19294219090: cpu接收到中断时 如何停止执行当前命令
鄣哪枳术: Cpu只能一对一的工作,它每时每刻都在中断现有进程去执行正在运行的命令.这就是得益于其主频了,主频高,单位时间内可执行中断的能力就强.接到中断时它会直接跳出程序执行其它指令,当其它运行完后就会return.没工作时就在原地等待中断

乌恰县19294219090: cpu收到中断如何停止执行当前命令
鄣哪枳术: 收到中断请求信号后,保存正在执行程序的现场,转入中断服务程序的执行,完成数据交换再返回被打断的程序继续执行.

乌恰县19294219090: 中断响应的处理过程
鄣哪枳术: 中断工作是一个软硬件协调工作的过程,整个工作过程可分为四个子过程来理解: 1、中断请求 中断请求泛指中断源为了请求CPU暂停正在执行的某个程序,而转去执行中断源请求执行的某个程序,所发出的中断请求信号.也可以特指加到...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网