实时系统是指能对事件做出及时响应。
实时系统分:
a.硬实时系统
对任务的执行有严格的时间限制,不在某段时间内执行完毕会导致灾难后果
或者财产损失。
b.软实时系统
相对硬实时系统而言,对时间的响应没有严格的时间限制,能够容忍一定程
度的miss deadline。
需要注意的是,硬实时系统还是软实时系统都不是对操作系统而言,是对具
体的应用环境而言!
更具体的可以参考《嵌入式系统中的实时概念》一书。
中断程序处理异步事件,理解为前台行为。后台为任务级的应用程序。
可重入函数可被多个任务调用,而不必担心数据被破坏。可重入函数或者只使
用局部变量,或者使用全局变量的时候对全局变量进行保护(作为临界资源)。
1.任务只能主动放弃CPU的使用权。中断服务使一个高优先级的任务进入就绪态
,中断服务以后,使用权还是原来低优先级的任务,只有低优先级的任务执行
完毕发起处理器之后高优先级的任务才有机会执行。
2.任务级之间可使用不可重入函数。
3.任务级响应时间比前后台快,注意是与前后台比。
4.缺点在于高优先级的任务的响应时间不确定,有可能要等很长时间。
1.最高优先级的任务一旦处于就绪态总能获得CPU的使用权
2.不能调用不可重入函数,会有隐患。
高优先级的任务在实际中的优先级降低了,晚于低优先级的任务运行。例如:
有1、2、3三个优先级依次降低的任务,有临界资源s。
a.1、2处于挂起状态,3在运行,3运行的时候占用了临界资源s
b.此时,1进入就绪态,1就绪态后占用cpu控制权3挂起,然后1任务申请临界资源s,
但是s被3占用,所以1任务挂起。
c.1任务挂起后3任务继续运行,此时2任务就绪
d.2任务就绪后抢占cpu,3任务挂起直到2任务运行结束。
e.3任务运行结束后释放临界资源s,此时1任务才有机会占用cpu
这种情况系最高优先级的1任务运行级别反而比2任务低,产生优先级反转的情况。
1.关中断
2.禁止任务切换
3.信号量
1.邮箱
2.消息队列
3.全局变量
中断延迟是实时内核的最重要指标之一。实时系统在进入临界区之前需要先关中断,执行完临界
代码段之后再开中断。在这期间系统的中断响应是被关闭,所有产生的中断均得不到
响应,所以这段时间越长则中断延迟就越长。所以这中断延迟不是一个固定的时间,是
在实际应用中根据具体开关中断的代码来计算的。这是软件上面导致的中断延迟。
例如在μC/OS中就是:
#OS_ENTER_CRITICAL()
FUNC()
..
#OS_EXIT_CRITICAL()
中断延迟就是从ENTER开始到EXIT之间的时间。
除了软件上的中断延迟之外还包括硬件上的中断延迟。硬件上的中断延迟主要为在产生中断后CPU到
中断处理器读取中断向量,并且查找中断向量表,找到对应的中断服务子程序(ISR)的首地址,然后
跳转到对应的ISR去做相应处理的时间。
硬件上的延迟和软件上的延迟结合=中断延迟
中断发生到开始执行用户的中断服务子程序来处理这个中断的时间。
所以在中断延迟的基础上+保存现场的时间