MOVIE Server


SUMMARY
MOVIE server is a base building block of the MOVIE system. The server offers operating services such as inner loop of the MovieScript interpreter, memory management, inter-task communication, real-time preemtvie thread scheduling and task migration. Consistent design of all these constructs as abstract objects within an interpreted server protocol results in a paradigm which supports both rapid prototyping and "in large" programming.

KEY CONTACTS
Geoffrey Fox | gcf@npac.syr.edu | 315-443-2163
Wojtek Furmanski | furm@npac.syr.edu | 315-443-3891
Janusz Niemiec | janusz@npac.syr.edu | 315-443-3190



PROJECT DESCRIPTION
The MOVIE system is a collection of servers distributed over a heterogenous network of parallel and sequential machines. The main objective of the system development is to provide an object-oriented, high level programming environment suitable both for rapid prototyping and for "in large" programming across diverse hardware and operating system platforms. This is accomplished by designing the system as a network of interpretative servers, based on the powerful computational, communication and control protocol of MovieScript.

MOVIE server provides the MovieScript interpreter, memory management, communication and scheduling for the user level interpreted threads. Each server is carefully tuned to take advantage of a particular hardware and software characteristics on a given node. This guarantees that programs will be executed with the best possible performance. At the same time, architecture independent communication subsystem ensures information flow between local and remote user tasks. The server's scheduler controls execution of threads in a real-time, preemptive fashion.

The user programs may fully benefit from the MOVIE multithreading capabilities. Each user task is by definition a set of one or more threads of control. All threads belonging to the same task may share interpreted objects and also have an option of maintaining the private access to desired data. Tasks can only share data by inheritance and any other inter-task interaction is to be mediated by the IPC communication.

Threads are scheduled in accordance with their priorities and their internal states. Having more than one thread of execution, the programmer can better utilize an inherent concurrency in the program. It also makes the programming semantics much cleaner by the absence of any non-blocking operations. The operation which cannot be completed immediately causes the thread to block and allows another thread from that task to resume execution. Semaphore objects are used to synchronize activities of concurrent threads.

Communication between different tasks is based on a notion of unidirectional port and bidirectional channel. Ports may have only one receiving task and many sending tasks. Channels provide a two way information flow between two participating tasks. Both the communication objects can have particular characteristics imposed by the user program. This way a programmer can specify different protocol styles, thus tailoring the communication to the application needs. Since ports and channels are abstract objects, they are not hardwired to any particular architecture nor message passing protocol. This implies that they provide communication links between arbitrary sites on a global, heterogenous metacomputer.

In fact, all server constructs such as tasks, threads, messages, tasks or ports are implemented as MovieScript objects. As a consequence of this systematic object-oriented design, the computation and communication semantics is extremely powerful and clean at the same time. The equivalence between code and data, when combined with the "MovieScript Passing" based communication, makes it possible to send an executable object, which will be executed as a part of a different thread. Any given internal state of a user task can be transformed to MovieScript, sent and reinstalled on a different node server, which leads to an effortless task migration between arbitrary architectures.


REFERENCES
  1. Ref.1
  2. Ref.2
  3. Ref.3

Northeast Parallel Architectures Center, Syracuse University, npac@npac.syr.edu
This page maintained by Wojtek Furmanski, furm@npac.syr.edu