Journal/Paper.thy
changeset 8 5ba3d79622da
parent 7 0514be2ad83e
child 11 8e02fb168350
--- a/Journal/Paper.thy	Wed Dec 19 12:51:06 2012 +0000
+++ b/Journal/Paper.thy	Wed Dec 19 23:46:36 2012 +0000
@@ -165,8 +165,8 @@
   {\bf Contributions:} There have been earlier formal investigations
   into PIP \cite{Faria08,Jahier09,Wellings07}, but they employ model
   checking techniques. This paper presents a formalised and
-  mechanically checked proof for the correctness of PIP (to our
-  knowledge the first one).  In contrast to model checking, our
+  mechanically checked proof for the correctness of PIP. For this we 
+  needed to design a new correctness criterion. In contrast to model checking, our
   formalisation provides insight into why PIP is correct and allows us
   to prove stronger properties that, as we will show, can help with an
   efficient implementation of PIP in the educational PINTOS operating
@@ -354,6 +354,15 @@
   \end{center}
 
   \noindent
+  We will design our scheduler  
+  so that every thread can be in the possession of several resources, that is 
+  it has potentially several incoming holding edges in the RAG, but has at most only one outgoing  
+  waiting edge. The reason is that when a thread asks for resource that is locked
+  already, then the process is stopped and cannot ask for another resource.
+  Clearly, also every resource can only have at most one outgoing holding edge---indicating
+  that the resource is locked.
+
+
   The use of relations for representing RAGs allows us to conveniently define
   the notion of the \emph{dependants} of a thread using the transitive closure
   operation for relations. This gives
@@ -1317,6 +1326,10 @@
   implemented as Braun Trees providing an heap interface, therefore
   the function is called @{ML_text "heap_insert"}. Next we
   record that the current thread is waiting for the lock (Line 10).
+  According to our specification, we need to ``chase'' the holders of locks
+  in the @{text RAG} (Resource Allocation Graph). In Lines 11 and 12 we
+  assign to the variable @{ML_text pt} the owner of the lock, and enter
+  a while-loop in Lines 13 to 24, which implements the ``chase''.  
 
 *}