2016-07-30 ND
共享资源可能会出现优先级反转或死锁。
在OSEK中采用优先级天花板协议消除这些问题。
7.1 优先级反转与死锁
- 优先级反转是指当资源被锁时,低优先级任务抢占高优先级任务。
- 优先级反转会使得任务的延迟时间成为一个不确定的值。
- 死锁发生在两个任务相互锁住对方的资源,使得每个任务都不能完成。
7.2 优先级天花板协议
- 天花板协议是指当任务加锁时,将该任务的优先级提到资源的优先级。
- 资源的优先级上限大于或等于这个资源的所有任务重最大的优先级。
- 资源的优先级上限小于所有不访问该资源的任务的最小优先级,并且大于在a中出现的最大优先级。
- 当任务对资源加锁时,任务的有限家暂时被置为该资源的优先级上限。
- 当任务释放资源时,任务的优先级还原到为它定义的静态值。
- 在OSEK/VDX系统中,任务申请资源时,不会因为该资源被另一个任务加锁而进入等待状态。(天花板协议)
- 资源的释放采取后进先出的顺序。
7.3 资源管理
- GetResource()获取资源
- ReleaseResourse()释放资源
- 在OSEK/VDX实现中,需要提供一个默认资源,即操作系统调度器。
- 严格禁止对资源嵌套访问。
- OSEK/VDX中的方法在共享资源被加锁的时间很短的情况下工作正常。如果时间过长,需要设计另外的方法。