prio/Paper/Paper.thy
changeset 322 c37b387110d0
parent 321 6a4249608ad0
child 323 eee031cc9634
--- a/prio/Paper/Paper.thy	Mon Feb 13 23:31:40 2012 +0000
+++ b/prio/Paper/Paper.thy	Mon Feb 13 23:50:37 2012 +0000
@@ -598,16 +598,26 @@
 thm highest_gen_def
 (*>*)
 text {* 
-  Sha et al.~\cite[Theorem 6]{Sha90} state their correctness criterion for PIP in terms
-  of the number of critical resources: if there are @{text m} critical
-  resources, then a blocked job can only be blocked @{text m} times---that is
-  a bounded number of times.
-  For their version of PIP, this property is \emph{not} true (as pointed out by 
-  Yodaiken \cite{Yodaiken02}) as a high-priority thread can be
-  blocked an unbounded number of times by creating medium-priority
-  threads that block a thread, which in turn locks a critical resource and has
-  too low priority to make progress. In the way we have set up our formal model of PIP, 
-  their proof idea, even when fixed, does not seem to go through.
+  Sha et al.~\cite[Theorem 6]{Sha90} state their correctness criterion
+  for PIP in terms of the number of critical resources: if there are
+  @{text m} critical resources, then a blocked job with high priority
+  can only be blocked @{text m} times---that is a bounded number of
+  times. This, strictly speaking, does \emph{not} prevent Priority
+  Inversion, because if one low-priority thread does not give up its
+  resource the high-priority thread is waiting for, then the
+  high-priority thread can never run.  The argument of Sha et al.~is
+  that \emph{if} threads release locked resources in a finite amount
+  of time, then Priority Inversion cannot occur---the high-priority
+  thread is guaranteed to run eventually. The assumption is that
+  programmers always ensure that this is the case.  However, even
+  taking this assumption into account, this
+  property is \emph{not} true for their version of PIP (as pointed out by Yodaiken
+  \cite{Yodaiken02}): A high-priority thread can be blocked an
+  unbounded number of times by creating medium-priority threads that
+  block a thread, which in turn locks a critical resource and has too
+  low priority to make progress. In the way we have set up our formal
+  model of PIP, their proof idea, even when fixed, does not seem to go
+  through.
 
   The idea behind our correctness criterion of PIP is as follows: for all states
   @{text s}, we know the corresponding thread @{text th} with the highest precedence;