here - Stefan-Marr.de
here - Stefan-Marr.de
here - Stefan-Marr.de
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
3.1. VM Support for Concurrent and Parallel Programming<br />
consi<strong>de</strong>red internal basic building blocks outsi<strong>de</strong> of the scope of this survey,<br />
and thus do not have an influence on our results.<br />
3.1.3. Conclusion<br />
Summary This survey investigated the state of the art in VM support for<br />
concurrent and parallel programming. It examined thirteen VMs, including<br />
contemporary multi-language VMs and a number of VMs selected for their<br />
support for concurrent and parallel programming. The analysis i<strong>de</strong>ntified for<br />
each VM the concepts it exposes and whether it exposes them in terms of<br />
implicit semantics, as part of the VM’s instruction set architecture, in terms of<br />
primitives, or merely as part of the standard libraries. The main insight is<br />
that the analyzed VMs only support one or two categories of concepts. Furthermore,<br />
they consistently relegate support for parallel programming to the<br />
standard library without providing explicit support for optimization.<br />
Concept Exposure In answering the question of how concepts are exposed,<br />
the survey shows that very general concepts such as shared memory, memory<br />
mo<strong>de</strong>ls, and global interpreter lock semantics are realized by a combination<br />
of mechanisms in the VM, which were categorized as implicit semantics<br />
(cf. Sec. 3.1.1.1). Typically, they have an impact on most parts of a VM, because<br />
they require guarantees from a wi<strong>de</strong> range of VM subsystems. More<br />
restricted, and often performance sensitive concepts are exposed as part of<br />
the overall instruction set architecture. Examples are monitors, synchronized<br />
methods, volatile variables, and in some cases also high-level concepts like<br />
channels, message sends, message receives, and threads or processes.<br />
Primitives are used for a wi<strong>de</strong> range of concepts. Design <strong>de</strong>cisions differ<br />
between VMs, thus some concepts are supported either in the instruction<br />
set or as primitives, e. g., locks, channels, and threads, but also concepts like<br />
atomic operations, and condition variables. Other high-level concurrency concepts<br />
such as concurrent data structures are provi<strong>de</strong>d as libraries. With the<br />
<strong>de</strong>finitions of concurrent and parallel programming of Sec. 2.3 in mind, the<br />
conclusion is that none of the concepts that are provi<strong>de</strong>d with implicit semantics,<br />
ISA support, or primitives is directly related to parallel programming.<br />
Instead, all the i<strong>de</strong>ntified parallel programming concepts have been realized<br />
in the form of libraries.<br />
Only limited support for concurrent and parallel programming. Since support<br />
for parallel programming is based on libraries, none of the VMs is cate-<br />
55