当系统发生大部分中断时,cpu必须在确定的时间之内做出响应!
中断延时是指,中断发出到进入该中断isr的时间!书中的一个例子说明,对于utra来说,如果向cpu发出中断必须在50us之内做出响应,否则utra的数据就有可能丢失!
这样,不管在user模式还是svr模式,大部分代码执行过程中都是允许中断发生的,那么isr就不能破坏user和kernel side的数据,基本上不能往已有的对象写数据!isr能做的事情非常有限,并且必须快速退出!
正因为如此,symbian加入了dfc和idfc!isr不能做的事情,可以让idfc或者dfc!区别在于,调度器可以直接执行idfc的代码,退出isr,系统lock空闲时就可以执行了!而dfc是在一个kernel thread当中执行的,kernel thread有一个成员变量叫做iDFCs,调度器在调度过程中执行这些dfc!
isr可以:
1.生成idfc放到调度器能看到的地方
2.添加或者取消nanokernel timer
3.允许或者禁止中断
idfc可以:
1.让一个nanokernel thread处于ready状态
2.生成dfc到对应的thread里去
3.释放fast semaphore
4.isr可以做的事情
idfc运行时,系统处于lock状态,scheduler不能重新调度其它thread
dfc是运行在kernel thread的context中的!能做很多事情
阅读(759) | 评论(0) | 转发(0) |