Message analysis for concurrent programs using message passing
2006 (English)In: ACM Transactions on Programming Languages and Systems, ISSN 0164-0925, E-ISSN 1558-4593, Vol. 28, no 4, 715-746 p.Article in journal (Refereed) Published
We describe an analysis-driven storage allocation scheme for concurrent systems that use message passing with copying semantics. The basic principle is that in such a system, data which is not part of any message does not need to be allocated in a shared data area. This allows for the deallocation of thread-specific data without requiring global synchronization and often without even triggering garbage collection. On the other hand, data that is part of a message should preferably be allocated on a shared area since this allows for fast (O(1)) interprocess communication that does not require actual copying. In the context of a dynamically typed, higher-order concurrent functional language, we present a static message analysis which guides the allocation. As shown by our performance evaluation, conducted using a production-quality language implementation, the analysis is effective enough to discover most data which is to be used as a message, and to allow the allocation scheme to combine the best performance characteristics of both a process-centric and a communal memory architecture.
Place, publisher, year, edition, pages
2006. Vol. 28, no 4, 715-746 p.
static analysis, runtime systems, concurrent languages, message passing, Erlang
IdentifiersURN: urn:nbn:se:uu:diva-19794DOI: 10.1145/1146809.1146813ISI: 000239815200004OAI: oai:DiVA.org:uu-19794DiVA: diva2:47566