多任务系统中关中断的时间应该尽可能的段,太长可能造成中断丢失。微处理器一般允许中断嵌套。即在中断服务期间可以识别一个更重要的中断,并服务于那个更重要的中断。
实时系统中,与中断相关的主要指标有一下几个:
1.中断延迟:
这是实时系统中最主要的指标。
中断延迟 = 关中断的最长时间+开始执行中断服务程序第一条指令需要的时间
2.中断响应:
即从中断发生到执行中断服务需要的时间。包括开始处理这个中断前的全部开销(保护现场等用掉的时间)。
对于前后台系统:保存寄存器值以后立即执行中断代码:
中断响应时间=中断延迟+保存CPU全部寄存器需要的时间
对于不可剥夺型内核:微处理器保存寄存器的全部值以后,中断服务程序立即执行:
中断响应时间=中断延迟+保存CPU全部寄存器需要的时间
对于可剥夺型内核:先调用一个特定函数通知内核即将开始中断服务。使内核可以跟踪中断嵌套:
中断响应时间=中断延迟+保存CPU全部寄存器需要的时间+内核进入中断服务函数的执行时间
注:中断响应是系统在最坏情况下的响应中断的时间。比如100次中99次响应中断的时间是50us,只有一次是1000us,则中断响应时间为1000us。
3.中断恢复时间:
对于不可剥夺型内核:中断回复时间为处理器返回到被中断的代码需要的时间。或者返回到更高的优先级的任务的时间。
中断恢复时间=恢复CPU内全部寄存器的值+执行中断返回指令的时间
前后台系统:与上面一样。
中断恢复时间=恢复CPU内全部寄存器的值+执行中断返回指令的时间
对于可剥夺型内核:中断的恢复要复杂一些。中断服务的末尾要调用一个函数,uCOS II中这个函数是OSIntExit()。用于判断是否脱离了所有的中断嵌套。进而判断是否有优先级更高的任务进入了就绪状态。
中断恢复时间=判断是否有优先级更高的任务进入了就绪状态+恢复CPU内全部寄存器的值+执行中断返回指令的时间
4.时钟节拍:
特定的周期型中断,提供了整个系统的心脏脉动。
阅读(1727) | 评论(0) | 转发(0) |