What is PUPS/P3?PUPS/P3 is portable cluster computing environment derived from the earlier MSPS operating environment implemented on the BBC Microcomputer. PUPS/P3 has been designed to provide a homeostatic environment for coarse grained parallel computations. PUPS/P3 borrows many ideas from biological systems. For example, it the PUPS/P3 environment permits processes to migrate within a clustered environment to those nodes capable of supporting them optimally (in terms of disk, processing speed, specialist devices etc). PUPS/P3 also supports direct peer-to-peer communication with running processes. An authenticated user or process can request a terminal-like interface to a running process dynamically and then make status enquiries, change parameters or plug new code into the (running) process using this interface. PUPS/P3 also supports persisent heaps. These are persistent objects which may be serially mapped into the address spaces of processes running on many different hosts if the backing store associated with them resides on a network filesystem such as NFS or MFS. Lastly, PUPS/P3 supports and encourages associating processes with names rather than PID's: this can greatly simplify process management within a network/cluster environment.
The PUPS/P3 system is implemented in ANSI-C and is POSIX compliant. This means that it is easy to port PUPS/P3 to almost any modern variant of UNIX or UNIX-like operating system, but currently, the only modern implementation which exists is for Linux.
The documentation for PUPS/P3 is lagging a long way behind the latest release. In particular, the documentation of library functions (of which there are many hundreds) is poor. This situation is only likely to improve if and when the project attracts more developers. PUPS/P3 is a system which facilitates the development of complex multi-process and multi-host computations by emulating colonies of homeostatically regulated organisms. PUPS/P3 has already been used to write applications in the areas of computational neuroscience, neuroinformatics and digital photogrammetry. PUPS/P3 faciltiates the implementation of long running persistent distributed computations by providing standardised interfaces and environmental support for:
The central philosophy of PUPS/P3 is each process is a digital artificial lifeform, responsible for maintaining its own environment. The PUPS/P3 libraries therefore provide routines which allow processes to protect valuable resources such as files, areas of shared memory, and indeed their own thread of control from accidental deletion. For example, PUPS/P3 processes protect their files from accidental or malicious deletion by relinking them in response to attempted deletion by other processes. In PUPS/P3 almost anything may be protected by a homeostat. In addition to homeostats, the PUPS/P3 system also employs redundancy. For example important PUPS/P3 applications may be multithreaded, so if the current process providing the application is damaged or incapacitated its function is rapidly taken over by its children. In addition to redundancy PUPS/P3 applications may also be protected themselves by rapidly changing PID/PGRP: this form of protection is a direct analogue of certain retro viruses which change the protien coat of their virus particles rapidly enough to evade host immune systems.
PUPS/P3
is written in ANSI-C, is POSIX compliant and should run under any POSIX compliant
UNIX or UNIX clone with minimal changes.
With appropriate modifications, it should also be possible to port PUPS/P3 to the
Microsoft
NT family of operating systems.
Historically
PUPS/P3 has been ported to the following UNIX-like operating systems:
These implementations are no longer maintained as the operating systems concerned are now obscolescent or historic. |