Monday, May 11, 2009

Virtual Processes and Distributed Computing

We begin by introducing the notion of a virtual process and then relate that to distributed computing.

An operating system manages its resources in order to serve the needs of it processes. The actual players are the processes, which use the available resources in order to accomplish the goals assigned to them. In this note we refer to processes created by an operating system as the real processes.

In computing, one frequently comes across the term virtual. For instance, I may be using multiple virtual screens mapped to a physical screen. Engineers are familiar with virtual memory, and many other kinds of virtual devices. The notion of virtual process is not common, however. Normally, one creates virtual instances of a physical entity. A process is an entity created by the operating system, therefore is it already virtual.

The physical reality of an entity should be viewed as a relative characteristic. At the level of an operating system, processes are quite real. Process are the entities that carry out the operations, therefore they do exist. A virtual process would be one that provides the illusion of being a process, without actually being a real process of the operating system.

The Z47 Processor begins as a real system process. However, Z++ applications start as processes of the Z47 Processor, and are therefore virtual processes. The Z47 processor, just like the underlying operating system, manages its own processes, including their execution time-slice. Thus, Z47 creates the illusion of real processes running on a device. Therefore, the processes of Z47 are relatively virtual processes.

Now we turn to distributed computing. In any model of distributed computing there will have to be more than one node. Distributed computing is of interest when the nodes have different computing powers and resources available to them. In other words, the nodes should be heterogeneous. The heterogeneity of nodes, however, does not imply the heterogeneity of communicating processes running on those nodes.

Now consider a Z47 Processor on each of these nodes. The virtual processes of Z47 communicate through the facilities of Z47. As far as a process is concerned, it is simply talking to just another peer process, which may happen to be running on another Z47 Processor on some other node. This model can be viewed as a generalization of the UNIX IPC to distributed computing.

The Z47 Processor is responsible for negotiating with the real operating system for allocating resources to its virtual processes. Thus, Z47 is a virtual operating system running along the side of the real operating system. In fact, Z47 is a distributed operating system because its processes are capable of communicating on multiple heterogeneous nodes as if they are all running on a single node.

The notion of a virtual process solves yet another interesting problem. Since a virtual process runs on a Z47 Processor, it should not have any problem to move to another Z47 Processor and continue its execution there. In fact, that is the case. This is known as strong mobility. Basically, a process goes to the waiting queue on one node, and gains its execution time-slice on another node. This is impossible to achieve with real processes. This form of distributed computing is usually referred to as Autonomous Agent technology.

Distributed Computing and Autonomous Agent provide interesting related readings.

Labels: , , , , ,