05.08.2014 Views

here - Stefan-Marr.de

here - Stefan-Marr.de

here - Stefan-Marr.de

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!