|
ABSTRACT
Three significant trends have underscored the central role of concurrency in computing. First, there is increased use of interacting processes by individual users, for example, application programs running on X windows. Second, workstation networks have become a cost-effective mechanism for resource sharing and distributed problem solving. For example, loosely coupled problems, such as finding all the factors of large prime numbers, have been solved by utilizing ideal cycles on networks of hundreds of workstations. A loosely coupled problem is one which can be easily partitioned into many smaller subproblems so that interactions between the subproblems is quite limited. Finally, multiprocessor technology has advanced to the point of providing supercomputing power at a fraction of the traditional cost.At the same time, software engineering considerations such as the need for data abstraction to promote program modularity underlie the rapid acceptance of object-oriented programming methodology. By separating the specification of what is done (the abstraction) from how it is done (the implementation), the concept of objects provides modularity necessary for programming in the large. It turns out that concurrency is a natural consequence of the concept of objects. In fact Simula, the first object-oriented language, simulated a simple form of concurrency using coroutines on conventional architectures. Current development of concurrent object-oriented programming (COOP) is providing a solid software foundation for concurrent computing on multiprocessors, Future generation computing systems are likely to be based on the foundations being developed by this emerging software technology.The goal of this article is to discuss the foundations and methodology of COOP. Concurrency refers to the potentially parallel execution of parts of a computation. In a concurrent computation, the components of a program may be executed sequentially, or they may be executed in parallel. Concurrency provides us with the flexibility to interleave the execution of components of a program on a single processor, or to distribute it among several processors. Concurrency abstracts away some of the details in an execution, allowing us to concentrate on conceptual issues without having to be concerned with a particular order of execution which may result from the quirks of a given system.Objects can be defined as entities which encapsulate data and operations into a single computational unit. Object models differ in how the internal behavior of objects is specified. Further, models of concurrent computation based on objects must specify how the objects interact, and different design concerns have led to different models of communication between objects. Object-oriented programming builds on the concepts of objects by supporting patterns of reuse and classification, for example, through the use of inheritance which allows all instances of a particular class to share the same method.In the following section, we outline some common patterns of concurrent problem solving. These patterns can be easily expressed in terms of the rich variety of structures provided by COOP. In particular, we discuss the actor model as a framework for concurrent systems1 and some concepts which are useful in building actor systems. We will then describe some other models of objects and their relation to the actor model along with novel techniques for supporting reusability and modularity in concurrent object-oriented programming. The last section briefly outlines some major on-going projects in COOP.It is important to note that the actor languages give special emphasis to developing flexible program structures which simplify reasoning about programs. By reasoning we do not narrowly restrict ourselves to the problem of program verification—an important program of research whose direct practical utility has yet to be established. Rather our interest is in the ability to understand the properties of software because of clarity in the structure of the code. Such an understanding may be gained by reasoning either informally or formally about programs. The ease with which we can carry out such reasoning is aided by two factors: by modularity in code which is the result of the ability to separate design concerns, and by the ability to abstract program structures which occur repeatedly. In particular, because of their flexible structure, actor languages are particularly well-suited to rapid prototyping applications.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
2
|
|
| |
3
|
|
| |
4
|
Agha, G. and Jagannathan, S. Reflection in concurrent systems.' A model of concurrent continuations. Tech. Rep., Dept. of Computer Science. Univ. of Illinois at Urbana Champaign, 1990. To be published.
|
| |
5
|
|
| |
6
|
Annot, J.K. and den Haan, P.A.M. POOL and DOOM: The object-oriented approach. In Parallel Computers: Object- Oriented, Functional, Logic, P.C. Treleaven, Ed. Wiley, 1990, pp. 4-7-79.
|
 |
7
|
|
 |
8
|
|
| |
9
|
|
| |
10
|
|
| |
11
|
Dally, W. The J-Machine: System Support for Actors. In 7bwards Open Information Systems Science, C. Hewitt and G. Agha, Eds. M.I.T. Press, Cambridge, Mass., to be published.
|
| |
12
|
|
| |
13
|
Geoffrey C. Fox , Mark A. Johnson , Gregory A. Lyzenga , Steve W. Otto , John K. Salmon , David W. Walker, Solving problems on concurrent processors. Vol. 1: General techniques and regular problems, Prentice-Hall, Inc., Upper Saddle River, NJ, 1988
|
| |
14
|
Hewitt, C. Viewing control structures as patterns of passing messages. J. Artif Intell. 8, 3 (June 1977), 323-364.
|
| |
15
|
Hewitt, C. and Baker, H. Laws for communicating parallel processes. In 1977 IFIP Congress Proceedings, IFiP (August 1977) pp. 987-992.
|
| |
16
|
Jagannathan, S. A Programming Language Supporting First-Class, Parallel Environments. Tech. Rep. LCS-TR 434, Massachusetts Institute of Technology, December 1988.
|
| |
17
|
Jagannathan, S. and Agha, G. Inheritance through Reflection. Tech. Rep., Dept. of Computer Science, Univ. of Illinois at Urbana Champaign, 1990. To be published.
|
| |
18
|
Maes, P. Computational Reflection. Ph.D. dissertation, Vrije University, Brussels, Belgium, 1987. Tech. Rep. 87-2.
|
| |
19
|
|
| |
20
|
Manning, C. Introduction to programming actors in acore. In 7bwards Open Information Systems Science. C. Hewitt and G. Agha, Ed., MIT Press, Cambridge, Mass, to be published.
|
| |
21
|
Moses, Y. Knowledge in a distributed environment. Tech. Rep. STAN-CS-86-1120, Computer Science Dept., Stanford University, 1986.
|
| |
22
|
|
 |
23
|
C. Tomlinson , V. Singh, Inheritance and synchronization with enabled-sets, Conference proceedings on Object-oriented programming systems, languages and applications, p.103-112, October 02-06, 1989, New Orleans, Louisiana, United States
|
| |
24
|
|
| |
25
|
|
CITED BY 37
|
|
|
|
|
|
|
|
|
|
|
Rajeev R. Raje , Daniel J. Pease , Edward T. Guy, III, OFFERS — a tool for hierarchical implicit analysis of sequential object-oriented programs, Proceedings of the 1996 ACM symposium on Applied Computing, p.437-441, February 17-19, 1996, Philadelphia, Pennsylvania, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Gul Agha , Svend Frølund , WooYoung Kim , Rajendra Panwar , Anna Patterson , Daniel Sturman, Abstraction and Modularity Mechanisms for Concurrent Computing, IEEE Parallel & Distributed Technology: Systems & Technology, v.1 n.2, p.3-14, May 1993
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jonathan Appavoo , Dilma Da Silva , Orran Krieger , Marc Auslander , Michal Ostrowski , Bryan Rosenburg , Amos Waterland , Robert W. Wisniewski , Jimi Xenidis , Michael Stumm , Livio Soares, Experience distributing objects in an SMMP OS, ACM Transactions on Computer Systems (TOCS), v.25 n.3, p.6-es, August 2007
|
|
|
Johnathan M. Reason , Han Chen , Changwoo Jung , Sooyeon Kim , Paul B. Chou , Kangyoon Lee, A framework for managing the life-cycle of event-driven, embedded applications, Journal of Embedded Computing, v.3 n.2, p.89-98, April 2009
|
|
|
|
|