| 
86
 | 
     1  | 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" 
  | 
| 
 | 
     2  | 
"http://www.w3.org/TR/REC-html40/loose.dtd"> 
  | 
| 
 | 
     3  | 
<HEAD>
  | 
| 
 | 
     4  | 
<TITLE>Priority Inversion Protocol</TITLE>
  | 
| 
 | 
     5  | 
<BASE HREF="http://www.dcs.kcl.ac.uk/staff/urbanc/">
  | 
| 
 | 
     6  | 
</HEAD>
  | 
| 
 | 
     7  | 
  | 
| 
 | 
     8  | 
<BODY TEXT="#000000" 
  | 
| 
 | 
     9  | 
      BGCOLOR="#4169E1" 
  | 
| 
 | 
    10  | 
      LINK="#0000EF" 
  | 
| 
 | 
    11  | 
      VLINK="#51188E" 
  | 
| 
 | 
    12  | 
      ALINK="#FF0000">
  | 
| 
 | 
    13  | 
  | 
| 
 | 
    14  | 
<TABLE WIDTH="100%" 
  | 
| 
 | 
    15  | 
       BGCOLOR="#4169E1" 
  | 
| 
 | 
    16  | 
       BORDER="0"   
  | 
| 
 | 
    17  | 
       FRAME="border"  
  | 
| 
 | 
    18  | 
       CELLPADDING="10"     
  | 
| 
 | 
    19  | 
       CELLSPACING="2"
  | 
| 
 | 
    20  | 
       RULES="all">
  | 
| 
 | 
    21  | 
  | 
| 
 | 
    22  | 
<!-- right column -->
  | 
| 
 | 
    23  | 
<TR>
  | 
| 
 | 
    24  | 
<TD BGCOLOR="#FFFFFF" WIDTH="75%">
  | 
| 
 | 
    25  | 
<H2>Proving the Priority Inheritance Protocol Correct</H2>
  | 
| 
 | 
    26  | 
 
  | 
| 
 | 
    27  | 
By Xingyuan Zhang, Christian Urban and Chunhan Wu
  | 
| 
 | 
    28  | 
<p>
  | 
| 
 | 
    29  | 
In real-time systems with threads, resource locking and 
  | 
| 
 | 
    30  | 
priority scheduling, one faces the problem of Priority
  | 
| 
 | 
    31  | 
Inversion. This problem can make the behaviour of threads
  | 
| 
 | 
    32  | 
unpredictable and the resulting bugs can be hard to find.  The
  | 
| 
 | 
    33  | 
Priority Inheritance Protocol is one solution implemented in many
  | 
| 
 | 
    34  | 
systems for solving this problem, but the correctness of this solution
  | 
| 
 | 
    35  | 
has never been formally verified in a theorem prover. As already
  | 
| 
 | 
    36  | 
pointed out in the literature, the original informal investigation of
  | 
| 
 | 
    37  | 
the Property Inheritance Protocol presents a correctness "proof" for
  | 
| 
 | 
    38  | 
an incorrect algorithm. In this paper we fix the problem of
  | 
| 
 | 
    39  | 
this proof by making all notions precise and implementing a variant of
  | 
| 
 | 
    40  | 
a solution proposed earlier. Our formalisation in Isabelle/HOL
  | 
| 
 | 
    41  | 
uncovers facts not mentioned in the literature, but also shows how to
  | 
| 
 | 
    42  | 
efficiently implement this protocol. Earlier correct implementations
  | 
| 
 | 
    43  | 
were criticised as too inefficient. Our formalisation is based on
  | 
| 
 | 
    44  | 
Paulson's inductive approach to verifying protocols.
  | 
| 
 | 
    45  | 
<BR><BR>
  | 
| 
 | 
    46  | 
  | 
| 
87
 | 
    47  | 
The source code can be downloaded 
  | 
| 
 | 
    48  | 
<A HREF="http://www4.in.tum.de/~urbanc/cgi-bin/repos.cgi/prio">here</A>.
  | 
| 
86
 | 
    49  | 
<BR><BR><BR><BR>
  | 
| 
 | 
    50  | 
  | 
| 
 | 
    51  | 
</TABLE>
  | 
| 
 | 
    52  | 
<P><!-- Created: Tue Mar  4 00:23:25 GMT 1997 -->
  | 
| 
 | 
    53  | 
<!-- hhmts start -->
  | 
| 
87
 | 
    54  | 
Last modified: Thu Feb 13 20:24:23 CET 2012
  | 
| 
86
 | 
    55  | 
<!-- hhmts end -->
  | 
| 
 | 
    56  | 
<a href="http://validator.w3.org/check/referer">[Validate this page.]</a>
  | 
| 
 | 
    57  | 
</BODY>
  | 
| 
 | 
    58  | 
</HTML>
  |