10、AUTOSAR操作系统2--事件机制与资源管理

目录

1、事件机制

2、资源管理


1、事件机制

        事件机制是一种同步手段,只有扩展任务才会用到事件机制,它可以将一个任务从等待状态换到就绪状态,也可以将一个任务从运行状态切换到等待状态。

        事件是操作系统管理的对象,在任何情况下,事件的接收者只能是一个扩展任务。每个扩展任务都有一定数量的事件,该任务被称为事件的拥有者。当激活一个任务时,该任务的所有事件将被操作系统清除。事件能用来向它们所属的扩展任务传递信息。事件的含义由应用程序定义。

        所有任务均能对处于等待状态的扩展任务的任意事件进行设置。但一个事件只能由拥有该事件的任务来进行清除,并且只有拥有者才能等待它的事件。因此,中断服务程序或基本任务是不可能等待一个事件的。

        事件是扩展任务从等待状态进入就绪状态的依据。操作系统提供服务来设置、清除、询问以及等待它的事件。任何任务或二类中断均可以为一个未挂起的扩展任务设置事件,并且通过该事件来通知扩展任务关于状态的信息。扩展任务只可以清除它所拥有的事件,而基本任务不允许使用操作系统服务来清除事件。

        下图展示了两个可抢占扩展任务的事件同步。任务1和任务2均为扩展任务,其中任务2可抢占,任务1的优先级比任务2高。初始任务1由于等待的事件被清除而处于等待的状态,任务2设置了任务1等待的事件后,调度程序被激活,任务1转为就绪状态,由于任务1的优先级比较高,因此任务1获得处理器资源得以运行,任务2 被任务1 抢占而进入就绪状态。随后,任务1清除该事件而进入等待状态,任务2 得以被调度而运行。

        AUTOSAR操作系统中针对事件管理的API如下表所示。

2、资源管理

        资源管理是用来协调不同优先级的多任务对共同资源(如内存或IO等)的并发访问。资源管理可以选择性的被扩展任务和中断服务程序并发访问。

        资源管理可以保证:

  • 两个任务不能同时占用同一资源
  • 不会发生优先级反转
  • 在使用这些资源时不会发生死锁
  • 对资源的访问不会导致等待状态

        下图说明了两个任务对信号量的访问顺序,在完全抢占式调度系统里,任务1有最高优先级,低优先级任务4占有信号量1。任务1抢占任务4并并请求同一信号量。由于信号量1已经被占领,任务1进入等待状态。现在低优先级任务4被中断并被优先级在任务1和任务4之间的任务抢占,任务1只能在所有低优先级任务都终止,且信号量1 再一次被释放后才能被执行。虽然任务2和任务3 不使用信号量1,但仍使任务1延迟了任务2和任务3运行时间之和。这就是优先级反转,这意味着一个低优先级延迟了高优先级任务的执行顺序。

        为了避免优先级反转和死锁问题,AUTOSAR操作系统采用了优先级上限协议,该协议规定:在系统初始化阶段,每个资源拥有的上限优先级是静态分配的。资源上限优先级应低于不访问该资源的所有任务的最低优先级,并且高于访问该资源的所有任务的最高优先级。

        如果一个任务需要一个资源,且它当前的优先级低于资源的优先级上限,则该提升该任务的优先级到该资源的上限优先级。如果一个任务释放资源,则重置该任务的优先级到申请该资源之前的优先级。下图展示了优先级上限协议机制以防止优先级反转。

        对于优先级等于或低于资源优先级的任务,优先级上限可能导致一个时间延迟。这种延迟受限于资源被任何较低优先级任务占用的最大时间。有时一些任务与当前处于运行状态的任务具有相同的优先级,并且想访问当前任务正在使用的资源,当一个被占用的资源什邡市,想访问这个资源的任务就可能进入运行状态,但对于一个可抢占任务来说这是一个调度点。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值