Verifying parallel programs with resource allocation

Dynamic allocation is a common method of sharing resources among processes in operating systems and other concurrent programs. Proving the correctness of these programs is simplified if the proof techniques can take advantage of the fact that only one process at a time can operate on the shared resource. This paper describes a pattern for dynamic allocation, called protected allocation, and a verification technique based on that pattern. Protected allocation is defined in terms of capabilities, but it is not restricted to capability-based systems; in fact, the pattern is general enough to cover most allocation policies and implementation mechanisms. Several examples of the use and verification of protected allocation are sketched, but detailed proofs are omitted. This paper is a report of work in progress.

[1]  C. A. R. Hoare,et al.  A Structured Paging System , 1973, Comput. J..

[2]  Susan S. Owicki Verifying Concurrent Programs With Shared Data Classes , 1977, Formal Description of Programming Concepts.

[3]  Gregory R. Andrews,et al.  Language features for process interaction , 1977 .

[4]  Niklaus Wirth,et al.  Modula: A language for modular multiprogramming , 1977, Softw. Pract. Exp..

[5]  Per Brinch Hansen,et al.  The programming language Concurrent Pascal , 1975, IEEE Transactions on Software Engineering.

[6]  Susan S. Owicki Specifications and Proofs for Abstract Data Types in Concurrent Programs , 1978, Program Construction.

[7]  Abraham Silberschatz,et al.  Extending Concurrent Pascal to Allow Dynamic Resource Management , 1977, IEEE Transactions on Software Engineering.