previous up next index
Previous: Distributed Aspect Up: Resource Management Next: Intranode Messages

User Primitives

The following primitive functions comprise the interface between the Application tasks and the Resource Manager. They are all non-blocking, returning control immediately to the calling function.

The implementation method of these primitives is not explicitly defined, but it is assumed that it uses a machine specific protection mechanism (such as system call gates, supervisor mode calls, etc.) to provide protected system calls. While the actual resource manager could be simplified by implementing it's primitives as protected system tasks, the synchronization overhead isn't necessary due to the non-blocking nature of these primitives. Additionally, multiple resource manager calls (such as allocating a data object and then executing a task token built with it) may be made by a single task using the machine specific mechanism.

POST-TASK

This primitive takes a tag referring to a data object, which contains a new task token, and posts it for execution.

A more correct term is that a demand is made for the The task token contains a tag indicating the instructions and the argument list for the task. The task token is examined, and the most appropriate processor (local or remote) is chosen for execution. If stream parallelism is to be utilized, this is when it happens. The resulting task tokens are then either placed on the local wait or ready queue, or sent to a remote node for execution.

CLEAR-TASK-DEP

This primitive, while used primarily within the resource manager, allows a task to explicitly clear a dependency on another task.

CREATE-OBJECT

This primitive creates a descriptor in the given environment (if the task has the appropriate priviledges), as well as the memory associated with it. A system unique tag is returned.

CREATE-STREAM

This primitive creates a stream descriptor in the given environment, and possibly allocates memory for it as well. A system unique tag is returned. The memory primitives implement the capability based naming scheme, as well as streams.

EXPORT-OBJECT

This primitive copies the descriptor of an object from it's current environment into another environment. This has the effect of making an object available to tasks using that environment. If the destination is the system environment, the object will be available to other applications, and it will also not be deleted upon completion of its creating process.

DESTROY-OBJECT

This primitive destroys a data object associated with a tag, if the task has the appropriate priviledges. The associated descriptor is also freed, but the actual tag value will not be reused.

SEND-MESSAGE

This primitive sends a message object to another processing node in the system. Note that this is an unreliable process, and receipt of the message is not guaranteed.

SEND-RELIABLE-MESSAGE

This primitive sends a message object to another processing node in the system, and verifies it's reception.


previous up next index
Previous: Distributed Aspect Up: Resource Management Next: Intranode Messages

magiceight-web@media.mit.edu