Skip to main content
Article thumbnail
Location of Repository

Multicore Scheduling for Lightweight Communicating Processes

By Carl G. Ritson, Adam T. Sampson and Frederick R.M. Barnes


Process-oriented programming is a design methodology in which software applications are constructed from communicating concurrent processes. A process-oriented design is typically composed of a large number of small isolated concurrent components. These components allow for the scalable parallel execution of the resulting application on both shared-memory and distributed-memory architectures. In this paper we present a runtime designed to support process-oriented programming by providing lightweight processes and communication primitives. Our run-time scheduler, implemented using lock-free algorithms, automatically executes concurrent components in parallel on multicore systems. Run-time heuristics dynamically group processes into cache-affine work units based on communication patterns. Work units are then distributed via wait-free work-stealing. Initial performance analysis shows that, using the algorithms presented in this paper, process-oriented software can execute with an efficiency approaching that of optimised sequential and coarse-grain threaded designs

Topics: QA76
Publisher: Springer
Year: 2009
OAI identifier:

Suggested articles


  1. (2000). A Java Fork/Join Framework. doi
  2. (1993). A methodology for implementing highly concurrent data objects. doi
  3. (2006). A Unified Model for Inter- and Intra-processor Concurrency. Ph.D thesis,
  4. (1992). Active messages: a mechanism for integrated communication and computation. In: doi
  5. (2001). Analysis and measurement of the effect of kernel locks in SMP systems. doi
  6. (1994). Are wait-free algorithms fast? doi
  7. (1999). C.E.: Scheduling multithreaded computations by work stealing. doi
  8. (1993). C.J.: Higher-Level Paradigms for DeadlockFree High-Performance Systems. In: Transputer Applications and Systems
  9. (1988). C.L.: Multicomputers: message-passing concurrent computers. doi
  10. (1995). Cilk: an efficient multithreaded runtime system. In: doi
  11. (1999). Communicating and Mobile Systems: the Pi-Calculus. doi
  12. (1978). Communicating Sequential Processes. doi
  13. Complex Systems Modelling and Simulation infrastructure (CoSMoS),
  14. (1996). Compositional parallel programming languages. doi
  15. (1996). Concurrent Programming doi
  16. (1999). Concurrent programming in ML. doi
  17. (2007). Concurrent programming without locks. doi
  18. (2002). E.: The HiPE/x86 Erlang Compiler. doi
  19. (2006). Exploiting coarse-grained task, data, and pipeline parallelism in stream programs. doi
  20. (2005). F.R.M.: Communicating mobile processes: introducing occam-pi.
  21. (2005). F.R.M.: Mobile Barriers for occam-pi: Semantics, Implementation and Application. In:
  22. (2001). F.R.M.: Mobile Data Types for Communicating Processes. In: doi
  23. (1987). Flocks, herds and schools: A distributed behavioral model. doi
  24. (2005). Haskell on a shared-memory multiprocessor. In: Haskell doi
  25. (1992). Implementation of production systems on message-passing computers. doi
  26. (2007). Manticore: a heterogeneous parallel language. doi
  27. (1995). Message passing versus distributed shared memory on networks of workstations. In: Supercomputing, doi
  28. (2005). Message-passing and shared-data programming models - wish vs. reality. In: HPCS doi
  29. (2008). OpenMP Application Program Interface, doi
  30. (2008). Orchestrating the execution of stream programs on multicore platforms. doi
  31. (2007). P.H.: A process-oriented architecture for complex system modelling. In: doi
  32. (2008). P.H.: Investigating patterns for process-oriented modelling and simulation of space in complex systems. In:
  33. (1994). Parallel Virtual Machine: A Users’ Guide and Tutorial for Networked Parallel Computing. doi
  34. (1993). Routers and Transputers.
  35. (1998). Seamless Parallel Computing on Heterogeneous Networks of Multiprocessor Workstations.
  36. (1997). T.: Eraser: a dynamic data race detector for multithreaded programs. doi
  37. (1995). Tempest: a substrate for portable parallel programs. doi
  38. (1993). The T9000 Transputer Instruction Set Manual.
  39. (2005). The Theory and Practice of Concurrency.
  40. (1983). The transputer. In: MiniMicro West 83,
  41. Threading Building Blocks 2.1, doi
  42. (1994). Using MPI: Portable Parallel Programming With the Message-Passing Interface. doi
  43. (1967). Validity of the single processor approach to achieving large-scale computing capabilities. In: doi
  44. (2003). Wait-free cache-affinity thread scheduling. doi
  45. (1991). Wait-free synchronization. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.