Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bd5c3d824c3db63ffd9226c15941e6ad > files > 672

mozart-1.4.0-1mdv2010.0.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>1 Introduction</TITLE><LINK href="ozdoc.css" rel="stylesheet" type="text/css"></HEAD><BODY><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="index.html">- Up -</A></TD><TD><A href="node2.html#chapter.connections">Next &gt;&gt;</A></TD></TR></TABLE><DIV id="chapter.introduction"><H1><A name="chapter.introduction">1 Introduction</A></H1><P>Mozart provides support for distributed programming. This document describes how distribution is realized and what features Mozart offers to deal with distribution. Guidance on how to practically do distributed programming can be found in the <A href="../dstutorial/index.html">``Distributed Programming in Mozart - A Tutorial Introduction''</A>. </P><P>Distribution is realized by a <EM>Distribution Subsystem</EM> (DS) used by the Mozart process. The DS implements a state-of-the-art middleware abstracting away the network from higher levels. This is achieved by defining entity consistency protocols that maintain the semantics of local Oz-entities also when distributed. Messages in these protocols are reliably delivered disregarding, transient network congestion and partitions. </P><DIV class="apropos"><P class="margin">Communication with an arbitrary number of sites<A href="node1.html#label3"><SUP>1</SUP></A></P><P></P></DIV><P>Through a 128 bit unique-id schema, billions of remote machines can be addressed. By letting connections time-share the usage of physical channels when there is a lack of resources, the DS is able to handle thousands of simultaneous connections even on off-the-shelf hardware. </P><DIV class="apropos"><P class="margin">Modular design allows customization</P><P></P></DIV><P>The DS has a layered and modular design enabling additions of new transport protocols. The DS currently uses TCP, but work is being done to add a lean reliable UDP implementation and a shared memory communication schema. </P><DIV class="apropos"><P class="margin">Platform Independent</P><P></P></DIV><P>The implementation of the DS is mature, stable, and available on multiple platforms. Currently, versions for Linux, Windows and many flavours of Unix exist. The protocols used for transferring data are platform independent, enabling inter-platform communication. </P><DIV class="apropos"><P class="margin">Serialization of the language graph</P><P></P></DIV><P>An advanced marshaler is available to serialize language graphs to be fit in messages. During marshaling the different types of entities are treated separately to allow replication of stateless entities, and distribution of references to stateful ones. An unmarshaler is able to build a corresponding language graph at the receiver side, replacing remote entity references with proxy structures. </P><DIV class="apropos"><P class="margin">Reliable message delivery and fault tolerant</P><P></P></DIV><P>The DS ensures reliable delivery of messages even in the case of transient faults. By use of an acknowledge schema, transient faults can be recovered. </P><DIV class="apropos"><P class="margin">High throughput with an efficient implementation</P><P></P></DIV><P>By clever usage of pipelining in bounded memory, together with priority based message sending, the overhead imposed by the complexity of the DS makes the communication only slightly slower than over a raw socket implemented in C. </P><H2><A name="label1">1.1 Layered Design</A></H2><P>The DS is responsible for opening and closing connections, transferring messages, reporting network problems and executing the consistency protocols attached to all distributed entities. This is implemented by a three-layered structure (see <A href="node1.html#figure.three-layered">Figure&nbsp;1.1</A>) with the three layers <EM>Protocol Layer</EM>, <EM>Communication Layer</EM> and <EM>Transport Layer</EM>. The topmost layer, the Protocol Layer, is responsible for running the protocols that the DS implements. The middle layer, the Communication Layer, handles virtual channels that are created between different processes. The lowest layer, the Transport Layer, implements an interface to any transport protocol used to transfer messages between machines. The Communication Layer and the Transport Layer together are also referred to as the <EM>Message Passing Layer</EM>. A more detailed description of this design can be found in Anna Neiderud's <A href="http://www.sics.se/~annan/ThesisReport.doc">master's thesis report</A>. </P><DIV id="figure.three-layered"><HR><P><A name="figure.three-layered"></A></P><DIV align="center"><IMG alt="" src="core_three_layers.gif"></DIV><P class="caption"><STRONG>Figure&nbsp;1.1:</STRONG> The Mozart Virtual machine and the Distribution Subsystem </P><HR></DIV><P> </P><H2><A name="label2">1.2 Outline</A></H2><P>The remainder of this document describes some major parts of the DS and their implementation. <A href="node2.html#chapter.connections">Chapter&nbsp;2</A> explains the bootstrapping sequence for connections and how connection establishment can be customized. <A href="node3.html#chapter.entities">Chapter&nbsp;3</A> then discusses how entities of Mozart are distributed. After that <A href="node4.html#chapter.efficient">Chapter&nbsp;4</A> shows how the implementation has been made efficient. A challenging question in distributed programming is failure, and how to deal with it is discussed in <A href="node5.html#chapter.failures">Chapter&nbsp;5</A>. <A href="node6.html#chapter.tools">Chapter&nbsp;6</A> and <A href="node7.html#chapter.interfaces">Chapter&nbsp;7</A> give useful pointers to understanding and using all the features described. </P></DIV><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="index.html">- Up -</A></TD><TD><A href="node2.html#chapter.connections">Next &gt;&gt;</A></TD></TR></TABLE><HR align="left" width="30%"><DIV class="footnote"><A name="label3">1. </A>Every Mozart process is referred to as a site.</DIV><HR><ADDRESS><A href="http://www.sics.se/~erik">Erik&nbsp;Klintskog</A> and&nbsp;<A href="http://www.sics.se/~annan">Anna&nbsp;Neiderud</A><BR><SPAN class="version">Version 1.4.0 (20090610)</SPAN></ADDRESS></BODY></HTML>