As a result of ongoing research in parallel programming, a number of programming paradigms have been proposed and implemented. Some of them, such as message-passing, shared variables, and data-parallel have become popular, and have a large software base. A component architecture needs to be able to incorporate components written using these programming paradigms, as well as other lesser-known paradigms that are suitable for specific tasks. In addition, for effective utilization of resources, parallel components should concurrently interleave their execution. This is referred to as Parallel Composition Principle [25], which states:
``For effective composition of parallel components, a compositional programming language should allow concurrent interleaving of component execution, with the order of execution constrained only by availability of data.''
Since these programming paradigms differ in the amount of concurrency within a process and the way control is transferred among different entities of the programming model, their coexistence and interoperability among them is a non-trivial task. We have demonstrated that the message-driven programming paradigm is appropriate for implementation of these other paradigms efficiently, and facilitates coexistence and interoperability among these paradigms. For this purpose, we have developed a runtime system called Converse based on message-driven parallel programming paradigm. Converse employs a unified task scheduler for efficiently supporting different concurrency levels and ``control regimes''. Converse is described in detail in chapter 2.
In order to efficiently utilize the processor resources, especially in the presence of dynamic runtime conditions, the CLR needs to offer a common set of services to all the programming paradigms implemented using it. Some of the services Converse offers are automatic load balancing, both at the time of creation of components, and in the middle of a run; automatic and efficient checkpoint and restart service; a common performance tracing service; and a computational steering service. These services, while important and influential to the design of Charisma, are not central to this thesis, and have been described elsewhere [16,40,66,65,70].