This Article 
 Bibliographic References 
 Add to: 
Critical Races in Ada Programs
November 1989 (vol. 15 no. 11)
pp. 1471-1480

It is noted that critical races in concurrent Ada programs are an insidious source of system errors, and that the Ada language does not have concurrency features to ease the development of critical race-free programs. The authors illustrate this using the CRF language, which extends the Ada language by the addition of a powerful caller selection mechanism. It is this facility that implements a discriminatory mutual exclusion (dimutex) construct, an important feature for building less critical race-prone programs. The Mlog language supports the CRF caller selection mechanisms; thus it is convenient as a rapid-prototyping platform. A design method for systematically converting CRF designs into Ada designs is presented. The method uses a mixture of mechanical and creative transformations that are guaranteed not to introduce critical races. D. Helmbold and D. Luckham's (1985) gas-station example is used to illustrate the various approaches to applying the design method.

[1] R. J. A. Buhr,System Design with Ada. Englewood Cliffs, NJ: Prentice-Hall, 1984.
[2] E. W. Dijkstra, "Hierarchical ordering of sequential processes,"Acta Inform., vol. 1, no. 2, pp. 115-138, Oct. 1971.
[3] N. D. Gammage, R. F. Kamel, and L. M. Casey, "Remote rendezvous,"Software--Practice and Experience, vol. 17, no. 10, pp. 741- 755, Oct. 1987.
[4] W. M. Gentleman, "Message passing between sequential processes: The reply primitive and the administrator concept,"Software--Practice and Experience, vol. 11, pp. 435-466, 1981.
[5] B. T. Hailpern,Verifying Concurrent Processes Using Temporal Logic(Lecture Notes in Computer Science no. 129). New York: Springer-Verlag, 1982.
[6] D. Helmbold and D. Luckham, "Debugging Ada tasking programs,"IEEE Software, vol. 2, no. 2, pp. 47-57, Mar. 1985.
[7] G. M. Karam, "MLog: A language for prototyping concurrent systems," Dep. Syst. Comput. Eng., Carleton Univ., Ottawa, Ont., Canada, Tech. Rep. TR CU-SCE-88-3, Nov. 1988.
[8] G. M. Karam and R. J. A. Buhr, "Starvation and critical race analyzers for ADA," Dep. Syst. Comput. Eng., Carleton Univ., Ottawa, Ont., Canada, Tech. Rep. CU-SCE-87-8, Aug. 1987.
[9] R. Kowalski, "Algorithm = Logic + Control,"Comm. ACM, Vol. 22, No. 7, July 1979, pp. 424-436.
[10] L. Lamport, "The mutual exclusion problem: Part I--A theory of interprocess communication,"J. ACM, vol. 33, no. 2, pp. 313-326, 1986.
[11] L. Lamport, "The mutual exclusion problem: Part II--Statement and solutions,"J. ACM, vol. 33, no. 2, pp. 327-348, Apr. 1986.
[12] S. E. Madnick and J. J. Donovan,Operating Systems. New York: McGraw-Hill, 1974.
[13] M. Maekawa, A. E. Oldehoeft, and R. R. Oldehoeft,Operating Systems: Advanced Concepts. Menlo Park, CA: Benjamin/Cummings, 1987.
[14] U.S. Dep. Defense,Reference Manual for the Ada Programming Language, MIL-STD- 1815a, 1983.
[15] J. L. Peterson, "Petri nets,"ACM Comput. Surveys, vol. 9, no. 3, pp. 223-252, Sept. 1977.

Index Terms:
critical races; concurrent Ada programs; system errors; Ada language; CRF language; caller selection mechanism; discriminatory mutual exclusion; dimutex; MLog language; rapid-prototyping; gas-station example; Ada; parallel programming
G.M. Karam, C.M. Stanczyk, G.W. Bond, "Critical Races in Ada Programs," IEEE Transactions on Software Engineering, vol. 15, no. 11, pp. 1471-1480, Nov. 1989, doi:10.1109/32.41338
Usage of this product signifies your acceptance of the Terms of Use.