Language and System Support for Concurrent Programming

Abstract : This curriculum module is concerned with support for concurrent programming provided to the application programmer by operating systems and programming languages. This includes system calls and language constructs for process creation, termination, synchronization, and communication, as well as nondeterministic language constructs such as the selective wait and timed call. Several readily available languages are discussed and compared: concurrent programming using system services of the UNIX operating system is introduced for the sake of comparison and contrast.

[1]  Marc J. Rochkind Advanced Unix programming , 1985 .

[2]  Lui Sha,et al.  Priority inversion in Ada , 1987, ALET.

[3]  Mamoru Maekawa,et al.  Operating Systems: Advanced Concepts , 1987 .

[4]  Ken Shumate Understanding Concurrency in Ada , 1990 .

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

[6]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[7]  Maurice Herlihy,et al.  Limitations of synchronous communication with static process structure in languages for distributed computing , 1986, POPL '86.

[8]  William E. Riddle,et al.  Anomaly Detection in Concurrent Programs , 1979, ICSE.

[9]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

[10]  Gary A. Ford,et al.  Modula-2: A Software Development Approach , 1985 .

[11]  Derek Coleman,et al.  An assessment of concurrent Pascal , 1979, Softw. Pract. Exp..

[12]  Narain H. Gehani,et al.  The concurrent C programming language , 1989 .

[13]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

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

[15]  Karl A. Nyberg The annotated Ada reference manual , 1989 .

[16]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[17]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[18]  T. M. R. Ellis Parallel processing in an adaptable application oriented language processor , 1979, Softw. Pract. Exp..

[19]  Narain H. Gehani,et al.  Ada: Concurrent Programming , 1984 .

[20]  Abraham Silberschatz,et al.  Operatlng system concepts - alternate edition , 1988 .

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

[22]  Joseph M. Morris A Starvation-Free Solution to the Mutual Exclusion Problem , 1979, Inf. Process. Lett..

[23]  Richard N. Taylor,et al.  A general-purpose algorithm for analyzing concurrent programs , 1983, CACM.

[24]  Abraham Silberschatz,et al.  Comments on “Communicating Sequential Processes” , 1979, TOPL.

[25]  Harvey M. Deitel,et al.  An introduction to operating systems , 1984 .

[26]  Brian A. Wichmann,et al.  Rationale for the design of the Ada programming language , 1979, SIGP.

[27]  G. K. Smelser The structure of the eye , 1961 .

[28]  B. Welch The structure , 1992 .

[29]  David May,et al.  A Tutorial Introduction To Occam Programming , 1987 .

[30]  K. N. King Modula-2: a complete guide , 1988 .

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

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

[33]  Mordechai Ben-Ari,et al.  Principles of concurrent programming , 1982 .

[34]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[35]  Henri E. Bal,et al.  Programming languages for distributed computing systems , 1989, CSUR.

[36]  C. B. Schoening Concurrent programming in co-pascal , 1986 .

[37]  P. David Stotts,et al.  A comparative survey of concurrent programming languages , 1982, SIGP.

[38]  Narain H. Gehani,et al.  Concurrent programming in the Ada® language: The polling bias , 1984, Softw. Pract. Exp..

[39]  Alan Burns Concurrent programming in Ada , 1985 .

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

[41]  Per Brinch Hansen,et al.  Distributed processes: a concurrent programming concept , 1978, CACM.

[42]  Narain H. Gehani,et al.  Broadcasting Sequential Processes (BSP) , 1984, IEEE Transactions on Software Engineering.

[43]  N. Witi Schemes for multiprogramming and their implementation in modula-2 , 1984 .

[44]  Charles Wetherell Design considerations for array processing languages , 1980, Softw. Pract. Exp..