Caltech Computer Science Technical Reports

Distributed Diners: From UNITY Specification to CC++ Implementation

Binau, Ulla (1993) Distributed Diners: From UNITY Specification to CC++ Implementation. Technical Report. California Institute of Technology. [CaltechCSTR:1993.cs-tr-93-20]

Full text available as:

Postscript - Requires a viewer, such as GhostView
Other (Adobe PDF (332KB))

Abstract

Resource conflicts may typically be described as the dining philosophers problem (or diners for short). In this report we derive a distributed message-passing solution to the diners problem from the shared memory solution presented in [CM88, Ch.12 Dining Philosophers]. We define an isomorphism between variables in the shared memory state and variables in the distributed state. This allows us to translate the shared memory UNITY specification to a distributed UNITY specification without affecting the validity of the original refinement proof. It turns out that the translated progress properties cannot be fulfilled by the solution scheme we have in mind. However, we show that weaker properties may be used instead, still without affecting the correctness of the original proof. The derivation of a UNITY program from the translated properties is not quite obvious. Hence we introduce an extra refinement step prior to deriving our distributed UNITY implementation. Finally the distributed UNITY implementation is translated to Compositional C++, (CC++) a parallel extension of C and C++. Note: The reader is assumed to be familiar with UNITY [CM88] and C, C++ or CC++ [KR88, Str91, CK92].

EPrint Type:Monograph (Technical Report)
Subjects:All Records
ID Code:221
Deposited By:Caltech Library System
Deposited On:14 May 2001
Record Number:CaltechCSTR:1993.cs-tr-93-20
Official Persistent URL:http://resolver.caltech.edu/CaltechCSTR:1993.cs-tr-93-20
Usage Policy:You are granted permission for individual, educational, research and non-commercial reproduction, distribution, display and performance of this work in any format.

Archive Staff Only: edit this record