- 火车自动驾驶的刹车系统(自动驾驶汽车自动刹车功能也是同理):
火车速度30m/s,火车头的探测器可以探索100米远,计算机的某个任务需要定时去读取该探测器数据,分析有没有障碍物,如果有,则输出刹车动作(刹车距离20m),否则该任务的本次周期结束。假设任务执行最长时间为2ms。很明显,如果该任务不能在截止期前完成,就会产生严重后果了,因此这个任务是hard real-time task,这个系统是一个实时系统。
问题:
1. 该任务确定为什么任务模型,Periodic,Sporadic,Fix-point?
2. 该任务的周期多少合适?
3. 考虑系统中已有的实时任务情况,该任务能否保证截止期?(如果该计算机不能保证,就提示程序开发人员,开发人员会选择增加计算机等方式)
当然该任务执行越频繁(周期越小),肯定越能保证及时刹车下来,但是越频繁,对计算机负载越重,该计算机中就运行不了别的任务了。因此,需要找出一个能够满足刹车成功的临界周期即可(也就是周期尽可能的大)。
答案:
1. Periodic任务(截止期就设为下次作业开始前即可)
2. 在采集到障碍物时,最晚刹车时刻区间间隔为两倍周期即可。
3. 按照RM调度,分配优先级,采用RM可调度性判定或者RTA判定即可。
如果设为Fix-point任务也是可以的,任务就不能被抢占了(即最高优先级),周期算出来也宽松一些了。但是系统中有多个这种固定点任务,可能可调度性就不好了。
- 雷达跟踪探测区域内(视场)内多个移动目标:
每个目标都有不同的,但是固定的移动速度,在屏幕上显示出每个目标的移动轨迹。该系统看应用场景了,如果跟丢了,会造成严重后果,那就是Hard硬实时任务,否则是Firm实时任务(跟丢了,该系统仅仅是无效而已),如果跟丢了一次两次也没关系,那就是Soft软实时任务。
问题:
1. 这是一个多任务的问题(每个任务去跟踪一个属于自己的目标),每个任务确定为什么任务模型,Periodic,Sporadic,Fix-point?
2. 每个任务的周期多少合适?
3. 增加一个目标,所有任务能否仍然保证截止期?(如果该计算机不能保证,就提示程序开发人员,开发人员会选择增加计算机等方式)
同样,每个任务执行越频繁(周期越小),肯定越能保证不会跟丢所属目标,但是越频繁,对计算机负载越重,该计算机中就运行不了别的任务了(别的任务还得跟踪别的目标呀)。因此,需要找出一个能够满足不跟丢临界周期即可(也就是周期尽可能的大)。
答案:
1. Periodic任务(截止期就设为下次作业开始前即可),如果设为Fix-point任务肯定不行了,因为每个任务周期都不同了。
2. 每个任务执行频率正比于对应目标的移动速度,找出该任务不会跟丢的临界执行周期即可。
3. 按照RM调度,分配优先级,采用RM可调度性判定或者RTA判定即可。
上述问题,关于更详细的讨论,可以在评论区说出来。
大家想想,具体的软件实现,在桌面版Linux系统中行不行,不行,因为上面的周期任务是要按照优先级无条件即可抢占的,因此只能在ucos,freertos,或者RT-Linux(Linux打了实时补丁)等嵌入式实时操作系统中可以了。