优先级继承协议(Priority Inheritance Protocols)

本篇文章主要以分享为主,想深入了解Linux的可以访问(Linux-Console.net)自行理解学习。

        在单个CPU上,许多进程可以在支持多任务的操作系统下同时运行。同步策略用于组织对共享资源的访问。另一方面,当高优先级活动被持有共享资源的低优先级进程阻塞时,就会发生优先级翻转。下面将介绍一种用于解决优先级翻转问题的同步方法——优先级继承协议(PIP)。

        使用优先级继承协议(PIP),解决了优先级翻转问题。PIP为拥有共享资源的任务赋予等待该资源的其他作业中最高优先级。由于这种优先级,所以高优先级活动可以访问共享资源而不会受到低优先级任务的阻塞。PIP很重要,因为它可以解决优先级翻转而不影响任务层次结构的优先级顺序。换句话说,任务的优先级在使用共享资源之前不会改变。常如VxWork、QNX和eCos等实时操作系统经常使用PIP。

目录

一、克服优先级倒置问题的方法

二、解决优先级翻转问题的其他技术

三、PIP相对于其他方法的优势

四、画中画算法

五、结论


一、克服优先级倒置问题的方法

        在PIP之前,二进制信号量和优先级上限是克服优先级翻转问题的方法。每当任务使用共享资源并为其指定设定的优先级时,优先级上限都会将任务优先级提升到优先级上限。另一方面,二进制信号量一次只允许一个进程访问共享资源。不过,这些方法都有一定的缺点。

        优先级上限可能会导致“上限优先级翻转“现象。即,持有具有较高优先级上限的共享资源的低优先级作业会阻塞较高优先级任务。当两个或多个作业正在等待另一个进程占用的资源时,二进制信号量会导致称为”死锁“的情况。PIP的创建就是为了规避这些限制。

二、解决优先级翻转问题的其他技术

        处理PIP之外,还采用了多种方法来解决优先级反转问题。其中之一是“继承优先级上限“策略,该策略为拥有该资源的任务提供等待共享资源的所有任务中具有最高优先级进行作业。该方法同样给予共享资源一个优先级上限,但是可以增加优先级上限以匹配具有等待资源的最高优先级任务的优先级。

        “优先级继承上限“技术(PIP版本)是另一种方法。它将持有资源的任务优先级提升到优先级上限,并为共享资源提供优先级上限。与PIP相比,它还提高了等待资源的任何作业的优先级。

三、PIP相对于其他方法的优势

       1、与其他方法相比,PIP在解决优先级倒置问题方面具有许多优势。好处之一是它可以避免优先级翻转,而不会干扰任务层次结构的优先级顺序。PIP确保任务的优先级在使用共享资源之前不会改变。借助此功能,可以保护较高优先级的操作不会被较低优先级任务的操作阻塞,从而影响其实时性。

        2、PIP还具有部署简单且开销很小的优点。只需向操作系统调度程序添加少量额外指令,即可使用PIP成功实现优先级继承。PIP还易于在各种硬件平台部署,因为它不需要任何硬件更改或专业硬件支持。

        3、PIP不会显著影响吸能,并且也很有效。PIP确保高优先级进程可以自由使用共享资源,而不会收到低优先级任务的阻碍,并且不会增加太多开销或延迟。由于其效率,系统能够有效运行并满足其实时性需求。

四、画中画算法

以下是PIP算法的运行方式

        1、如果高优先级任务尝试访问低优先级进程拥有的共享资源,则低优先级作业的优先级会立即提升为高优先级任务的优先级。

        2、共享资源由优先级较低的任务占用,但其优先级仍然与高优先级任务的优先级相同。由于这种优先级继承,共享资源可以由高优先级活动使用,而不会受到较低优先级任务的阻碍。

        3、当较低优先级任务释放共享资源时,较高优先级活动的优先级将返回给它。

五、结论

        在操作系统的任务同步中,优先级翻转是一个常见的问题,可能会导致延迟和错过最后期限。PIP是实时系统用来解决优先级翻转问题的方法。PIP确保高优先级任务能够利用共享资源,而不会受到低优先级任务的阻碍,从而保持任务层次结构的优先级。

你可能感兴趣的:(操作系统,人工智能,开发语言,操作系统,任务同步,优先级翻转,优先级继承)