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.
5.5. Customizations and VM-specific Design Choices<br />
executing in another domain. Consequently, an instantiation of the OMOP<br />
taking this use case into account could provi<strong>de</strong> special intercession handlers<br />
for both cases. For reading fields, it could provi<strong>de</strong> #readFieldFromWithin:of:<br />
and #readFieldFromOutsi<strong>de</strong>:of:. Similarly, the other intercession handlers<br />
could be provi<strong>de</strong>d in these two variants, as well. While the resulting OMOP<br />
would no longer be minimal, an implementation of isolation on top of it<br />
would not require testing for ownership but could rely on the VM, which<br />
might provi<strong>de</strong> better performance.<br />
In future work (cf. Sec. 9.5.6), the different properties of supported concurrent<br />
programming concepts can be studied and formalized, which could yield<br />
similar variation points and a <strong>de</strong>clarative representation of possible language<br />
policies. Such a representation would again allow a different representation<br />
of key elements of the OMOP and allow more efficient implementation of<br />
common use cases.<br />
Opt-In for Enforced Execution Mo<strong>de</strong> Another <strong>de</strong>sign <strong>de</strong>cision ma<strong>de</strong> in the<br />
presented OMOP is that execution starts out in unenforced mo<strong>de</strong>. With the<br />
semantics discussed in Sec. 5.3.1 and Sec. 5.4 (cf. Lst. 5.4), a language implementer<br />
needs to opt-in explicitly to enforced execution. This <strong>de</strong>sign was chosen<br />
to provi<strong>de</strong> predictable behavior and the ability to set up all relevant libraries<br />
and system parts before enforced execution mo<strong>de</strong> is activated. This<br />
choice is partially motivated by the fact that the OMOP has been <strong>de</strong>veloped<br />
for an existing system with existing infrastructure. Thus, starting in unenforced<br />
execution mo<strong>de</strong> provi<strong>de</strong>s more flexibility. However, in a system that is<br />
<strong>de</strong>signed from the ground up as a multi-language VM with support for the<br />
OMOP, it might be <strong>de</strong>sirable to execute co<strong>de</strong> in the enforced execution mo<strong>de</strong><br />
from the beginning. The benefits of this choice would be that a language<br />
implementer does not need to opt-in to enforced execution and thus, the standard<br />
case will ensure that language semantics are ensured at all times.<br />
Handling of Primitives Primitives, i. e., built-in functionality provi<strong>de</strong>d by<br />
the VM needs to be covered by the OMOP to guarantee that the semantics<br />
of a concurrent programming concept can be enforced in their entirety. Thus,<br />
if primitives are not covered correctly, they could be used, for instance to<br />
circumvent the isolation required between processes in CSP.<br />
The presented OMOP <strong>de</strong>sign inclu<strong>de</strong>s every single primitive as a separate<br />
intercession handler on the OMOP. This choice works well as part of the<br />
presentation in this dissertation and for VMs that have only a small number<br />
129