中断处理程序需要注意:
若是改写系统中断,明辩者尽量保存系统中断的原地址;
如果是自定义中断,需要注意是否允许多重中断,即能否被另一个中断(包括同一个中断号的相同中断)打断,若不希望被打断,应当在中断处理程序开始时关闭中断允许位IF(用CLI指令),并且在程序结束时开启中断位(用STI指令)。
另外,中断处理程序本身也是一个过程,也灶宴有可能出错,所以尽量不要在中断处理程序中产生错误,以免程序不可控。
1、中断请求:中租枯断事件一旦发生或者中断条件一旦构成,中断源提交“申请报告”,与请求CPU暂时放下目前的工作而转为中断源作为专项服务2、中断屏蔽:虽然中断源提交了“申请报告”,但是,是否得到CPU的响应,还要取决于“申请报告”是否能够通过2道或者3道“关卡”(中断屏蔽)送达CPU(相应的中断屏蔽位等于1,为关卡放行;反之相应的中断屏蔽位等于0,为关卡禁止通行);
3、中断响应:如果一路放行,则CPU响应中断后,将被打断的工作断点记录下来(把断点地址保护到堆栈),挂起“不再受理其他申请报告牌”(清除全局中断标志位GIE=0),跳转到中断服务子程序
4、保护现场:在处理新任务时可能破坏原有的工作现场,所以需要对工作现场和工作环境进行适当保护;
5、调查中断源:检查“申请报告”是由哪个中断源提弊亮洞交的,以便作出有针对性的服务;
6、中断处理:开始对查明的中断源进行有针对性的中断服务;
7、清除标志:在处理完毕相应的任务之后,需要进行撤消登记(清除中断标志),以避免造成重复响应;
8、恢复现场:恢复前面曾经被保护起来的工作现场,以便继续执行被中断的工作;
9、中断键哪返回:将被打断的工作断点找回来(从堆栈中恢复断点地址),并摘下“不再受理其他申请报告牌”(GIE=1),继续执行原先被打断的工作。
中断处理过程:(1)保护被中断进程现场。为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值。(2)分析中断原因,转去执行相应的中断处理程序。在多个中断请求同时发生时,处理优先级最高的中断源发出的中断请求。(3)恢复被中断进程的现场,CPU继续执行原来被中断的进程。保存和恢复现场的意义在于处理完中断请求之后,程序可以返回起始中断点继续进行。
打个比方:
一个程序正在运行,但是有一个紧急事情要先去处理。但是程序是不能放弃现在运行到的阶段,所以在处理紧急事件时(就是中断),那么先要将运行到的地方进行一个现场保护,您可以理解为存储下来。然后去处理中断,中断结束之后扒闹要恢春升罩复原来的运行到的阶段。那么就需要将促出下来的现场保护给恢复出来。那这个就是恢复现场了。同样,出现多个中断的时候,要视中断的优先级来优先处理。
中断是现在衡量处理器性能重要标准之一笑慎。楼主要好好学习!
希望这些能够有所帮助!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)