170 likes | 409 Views
Resource Access Protocols. 張軒彬助理教授 中興大學資訊科學系. Outline. Priority Inversion Priority Inheritance Protocol. Resource. A resource is any software structure A variable, a memory area, a file, etc. A resource may be shared or private. Exclusive resource
E N D
Resource Access Protocols 張軒彬助理教授 中興大學資訊科學系
Outline • Priority Inversion • Priority Inheritance Protocol
Resource • A resource is any software structure • A variable, a memory area, a file, etc. • A resource may be shared or private. • Exclusive resource • A shared resource that is protected against concurrent access • A piece of code executed under mutual exclusion to guarantee exclusive resource accesses is called critical section
Priority Inversion • A high-priority job can experience two kinds of blocking • Bounded • For example, a high-priority job waits for the executions of a low-priority job to acquire a resource • The blocking time is no longer than that of the critical section where the lower priority job owns the resources • Necessary to ensure resource consistence • Unbounded • When a third job preempts the low-priority job during the inversion, thus delaying the high-priority job even more • Would lead to uncontrolled blocking and cause high-priory job miss its deadline • Have to be solved
An Example of Priority Inversion: Bounded Priority of J1 > Priority of J2
An Example of Priority Inversion: Unbounded normal execution Priority: J1 > J2 > J3 critical section J1 and J3 share an exclusive resource J 1 blocked J 1 J 2 J 3 t0 t1 t2 t3 t4 t5 t6 t7 An example of priority inversion.
Priority Inversion (Cont.) • Solution • Disallow preemption during the execution of all critical sections • Only appropriate for very short critical sections because it may create unnecessary blocking • Priority Inheritance Protocol • Priority Ceiling Protocol
Priority Inheritance Protocol • When a job Ti is blocked by a lower priority job Tk, Titransmits its priority to the Tk. • In general, a job inherits the highest priority of the jobs blocked by it. • Priority inheritance is transitive; • If J3 blocks J2, and J2 blocks J1, then J3 inherits the priority of J1 via J2.
Example normal execution Priority: J1 > J2 > J3 J1 and J3 share an exclusive resource critical section Direct blocking J 1 Push-through blocking J 2 J 3 t0 t1 t2 t3 t4 t5 t6 t7 P1 P3 P3 Example of Priority Inheritance Protocol.
Example • Direct blocking • Occurs when a higher-priority job tries to acquire a resource already held by a lower-priority job • Necessary to ensure the consistency of the shared resource • Push-through blocking • Occurs when a medium-priority job is blocked by a lower-priority job that has inherited a higher priority from a job it directly blocks • Necessary to avoid unbounded priority inversion
Priority Inheritance Protocol (Cont.) • Unsolved problems • Chained blocking • The blocking duration for a job can still be substantial because a chain of blocking can be formed • Deadlock • The protocol does not prevent deadlocks
Chained Blocking normal execution Priority: J1 > J2 > J3 J1 and J3 share an exclusive resource a critical section J1 and J2 share an exclusive resource b J 1 a b J 2 b b J 3 a a Example of chained blocking.
Chained Blocking (Cont.) • From previous slide • J1 is blocked for the duration of two critical sections • Once to wait J3 to release resource a • Then to wait J2 to release resource b • This is called chain blocking • In the worst case, if J1 accesses n distinct resource that have been locked by n lower-priority jobs • J1will be blocked for the duration of n critical sections
Deadlock J 1 J 2 normal execution critical section Blocked on Sb wait(S a) wait(S b) J 1 a wait(S b) wait(S a) Blocked on Sa J 2 b b signal(S b) signal(S b) t1 t2 t3 t4 t5 signal(S a) signal(S b) Example of deadlock.
Deadlock (Cont.) • Two jobs that use two semaphores in a nested fashion but in reverse order • J1 is blocked on Sb at time t4. Then, J2 is blocked on Sa at time t5 • Deadlock
Deadlock (Cont.) • Notably, the deadlock does not depend on the Priority Inheritance Protocol • But is caused by an erroneous use of semaphores • The deadlock problem can be solved by the mechanisms introduced in the Operating System • E.g., impose an total ordering on the resource access
Reference • Giorgio C. Buttazzo, “Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications,” Kluwer Academic Publishers, 1997 • Jane W. S. Liu, “Real-Time Systems,” Prentice Hall, 2002