Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32768
  • 博文数量: 27
  • 博客积分: 1080
  • 博客等级: 少尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-09 10:29
文章分类

全部博文(27)

文章存档

2011年(1)

2010年(15)

2009年(11)

我的朋友

分类:

2010-01-20 21:01:32

把整理过的学习笔记记录下来。。。太懒了
前/后台系统:一个大循环,循环查询各种标志位。如果标志位置位,就执行相应的服务程序。标志位就是标志事件的发生,事件响应延时处于不可预测状态。最坏的情况是循环中所有其他的事件服务程序执行完,才响应当前事件。中断服务虽然能即时/优先响应,但是它们和主循环的通讯,也是通过置主循环中相应的标志位来完成的。
实时系统(uCOS):整个程序分成一个个看起来好象是并行的任务,每个任务都在等待事件的发生。因为uCOS不支持时间片*转,除了最低优先级任务(在uCOS中是IDLE任务)是死循环以外,其他的任务都不能死循环,只能在驱动事件驱动下工作。任何驱动事件的产生,都使优先级最高的就绪任务运行。任务和任务/任务和中断的通讯,是通过相应事件驱动来完成的。
驱动事件:
不论是什么系统,CPU不可能一直在工作。CPU的工作是在各种驱动事件的驱动下工作的。CPU在完成一次驱动事件事件服务程序以后,进入IDLE模式等待新的驱动事件的发生。包括实时系统和前/后台系统都是在驱动事件的驱动下运行的。
按照uCOS中的观点,驱动事件分为三类:
1、事件 (Event)。包括信号量(Semaphores)、事件标志组(Flag)、邮箱(Message Box)、邮箱队列(Message Queue)。
2、时间(Time Tick)。包括时间延时和事件超时。
3、中断(Interrupt)。可以发出各种event。
由于第1种事件,通常都是在第2、3种状态下发出的,所以其实事件的驱动只有两种:时间(定时)和中断(各种异步中断)。
时间实际上也是中断的一种,可以说程序的驱动事件只有一种,就是:中断。
前/后台系统中还有一种驱动事件的产生,在主循环中不断的查询。有别与一般的定时查询,这种查询是为了将事件的响应时间降到最低,也可以将其归纳于定时(时间)事件。
应用程序是一个无限的循环,循环中调用相应函数完成相应操作,这部分是后台行为;中断服务程序处理异步事件,这部分是前台行为。其中,后台也叫“任务级”,前台也叫“中断级”;
阅读(481) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~