C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Priority InversionIn TSL mechanism, there can be a problem of priority inversion. Let?s say that there are two cooperative processes, P1 and P2. The priority of P1 is 2 while that of P2 is 1. P1 arrives earlier and got scheduled by the CPU. Since it is a cooperative process and wants to execute in the critical section hence it will enter in the critical section by setting the lock variable to 1. Now, P2 arrives in the ready queue. The priority of P2 is higher than P1 hence according to priority scheduling, P2 is scheduled and P1 got preempted. P2 is also a cooperative process and wants to execute inside the critical section. Although, P1 got preempted but it the value of lock variable will be shown as 1 since P1 is not completed and it is yet to finish its critical section. P1 needs to finish the critical section but according to the scheduling algorithm, CPU is with P2. P2 wants to execute in the critical section, but according to the synchronization mechanism, critical section is with P1. This is a kind of lock where each of the process neither executes nor completes. Such kind of lock is called Spin Lock. This is different from deadlock since they are not in blocked state. One is in ready state and the other is in running state, but neither of the two is being executed.
Next TopicTurn Variable or Strict Alternation
|