当一组任务使用“优先级上限协议”共享关键资源时,它可能会经历不同类型的优先级倒置。使用PCP共享关键资源时任务所经历的优先级反转的类型如下:
1.直接反演:
当较高优先级的任务等待较低优先级的任务释放该低优先级任务正在持有的关键资源,而较高优先级的任务需要此关键资源时,则会发生直接倒置。
例子:
假设有两个任务T 1和T 2 ,其中T 2的优先级高于T 1 。 T 1 (低优先级任务)持有一个关键资源CR。现在,T 2 (优先级较高的任务)需要此资源,但是T 2将必须等待,直到T 1执行并释放关键资源CR。在这里可以看到,在这种反转中,较低优先级的任务通过持有较高优先级任务所需的资源使较高优先级的任务转为反转。
2.与继承相关的反转:
当较低优先级的任务持有一个关键资源而较高优先级的任务正在等待该关键资源时,则使用PCP下的继承技术,将较低优先级的任务的优先级设置为与等待较高优先级的任务的优先级相等。结果,不需要关键资源的中间优先级任务进入了与继承相关的反转。
例子:
假设有三个任务T 1 ,T 2和T 3 。这些任务的优先级为T 1 > T 2 > T 3 。 T 1和T 3都需要关键资源CR,而T 2不需要关键资源。在某个时间点,T 3 (最低优先级任务)获取关键资源CR。现在,T 1 (最高优先级任务)需要关键资源CR并对其进行请求。现在,通过继承子句,T 3的优先级等于T 1的优先级。因此,由于T 3的优先级提高,不需要关键资源的T 2不会得到执行。因此,任务T 2处于与继承相关的反转之下。
3.与回避相关的反演:
当任务需要关键资源时,将其优先级与当前系统上限(CSC)进行比较。如果任务的优先级大于CSC的值,则为任务分配关键资源。当关键资源没有分配给任何任务,即关键资源是空闲的,并且优先级小于CSC为该关键资源请求的任务时,将拒绝对该关键资源的访问。具有比当前正在执行的任务更高的优先级并且比CSC更大的任务并且请求空闲的关键资源的任务被称为避免相关的倒置。它也被称为优先级上限相关的反转,因为更高优先级的任务被分配了关键资源,这不是因为所请求的关键资源由另一个任务持有,而是因为其优先级小于CSC。这也被称为避免死锁,因为对于其他任务没有使用的关键资源,较高优先级的任务被阻止。
例子:
假设有两个任务T 1和T 2 ,其中T 2的优先级高于T 2 。两者都需要关键资源CR 1和CR 2 。 T 1 (低优先级任务)当前正在使用关键资源CR 1 。现在,T 2 (高优先级任务)请求使用关键资源CR 2,但由于其优先级小于CSC,因此拒绝了访问。不允许T 2使用CR 2块的可能性是T 1可能请求CR 2,而T 2稍后可能请求CR 1 ,这可能导致死锁。
参考 :
nptel.ac.in