Language Constructs for Specifying Concurrency in CDL*

A description is given of language constructs for specifying concurrency in CDL*. The main goals in designing the language have been: modular specification, data integrity, and expressiveness. The language constructs are presented, and it is shown through examples how the constructs mirror the goals. The major advantages of the constructs are as follows: (1) data integrity is achieved without resorting to mutual exclusion unnecessarily, (2) dynamic resource management is achieved safely guaranteeing the anonymity of the dynamically allocating resources, and (3) similar components can be packaged together without resorting to sequential access. Various features of the language are illustrated through examples. In short, the language provides a step towards integrating abstraction mechanisms and specification techniques. Some of the features in CDL* are compared to some of the features available in other languages, including distributed programming languages. >

[1]  A. Pnueli The Temporal Semantics of Concurrent Programs , 1979, Theor. Comput. Sci..

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

[3]  John H. Howard Proving monitors , 1976, CACM.

[4]  Marly Roncken,et al.  Procedures and concurrency: A study in proof , 1982, Symposium on Programming.

[5]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[6]  Mary Shaw,et al.  An introduction to the construction and verification of Alphard programs , 1976, ICSE '76.

[7]  Gregory R. Andrews,et al.  Synchronizing Resources , 1981, TOPL.

[8]  Gregory R. Andrews,et al.  Concepts and Notations for Concurrent Programming , 1983, CSUR.

[9]  Butler W. Lampson,et al.  Experience with processes and monitors in Mesa , 1980, CACM.

[10]  Scott A. Smolka,et al.  Processes, Tasks, and Monitors: A Comparative Study of Concurrent Programming Primitives , 1983, IEEE Transactions on Software Engineering.

[11]  Brent Hailpern Verifying Concurrent Processes Using Temporal Logic , 1982, Lecture Notes in Computer Science.

[12]  Leslie Lamport,et al.  Specifying Concurrent Program Modules , 1983, TOPL.

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

[14]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[15]  David Lorge Parnas The non-problem of nested monitor calls , 1978, OPSR.

[16]  Toby Bloom,et al.  Evaluating synchronization mechanisms , 1979, SOSP '79.

[17]  Roy H. Campbell,et al.  The specification of process synchronization by path expressions , 1974, Symposium on Operating Systems.

[18]  R. K. Shyamasundar,et al.  An operational semantics of real time design language RT-CDL , 1989, IWSSD '89.

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

[20]  Joep L. W. Kessels An alternative to event queues for synchronization in monitors , 1977, CACM.

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