Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318729
  • 博文数量: 88
  • 博客积分: 2051
  • 博客等级: 大尉
  • 技术积分: 950
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-14 23:59
文章分类

全部博文(88)

文章存档

2012年(3)

2011年(2)

2010年(9)

2009年(14)

2008年(60)

我的朋友

分类: C/C++

2008-10-16 18:13:46

当系统发生大部分中断时,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中的!能做很多事情
阅读(671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~