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.
KeywordsMain Memory Allocation Policy Program Component Allocation Mechanism Concurrent Program
Unable to display preview. Download preview PDF.
- Andrews, G. R. and J. R. McGraw, "Language Features for Process Interactions," Proc. Language Design for Reliable Software, SIGPLAN Notices 12:3, (March, 1977) 114–127.Google Scholar
- Brinch Hansen, P., "The programming language Concurrent Pascal," IEEE Trans. on Software Engineering, Vol. SE-1, No. 2 (June, 1975), 199–207.Google Scholar
- Hoare, C. A. R. "A Structured Paging System," Computer Journal, Vol. 16, No. 3 (1973), 209–215.Google Scholar
- Owicki, S., "Specifications and Proofs for Abstract Data Types in Concurrent Programs," Technical Report No. 133, Digital Systems Laboratory, Stanford University, April, 1977.Google Scholar
- Owicki, S., "Verifying Concurrent Programs with Shared Data Classes," in E. J. Neuhold, ed. Formal Description of Programming Concepts, North-Holland, 1978.Google Scholar
- Silberschatz, A., R. B. Kieburtz, and A. Bernstein, "Extending Concurrent Pascal to Allow Dynamic Resource Management," IEEE Trans. on Software Engineering, Vol. SE-3, No. 3 (May, 1977), 210–217.Google Scholar
- Wirth, N., "Modula: A Language for Modular Multiprogramming," Technical Report No. 18, Institut für Informatik, ETH, March, 1976.Google Scholar