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 support shared heaps. These are persistent objects which may be concurrently 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 PIDs: 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. Currently, ports exist for Linux, FreeBSD, Solaris, Darwin and cygwin. To date, only Linux and FreeBSD, the primary development systems, are capable of supporting the PUPS/P3 environment in its entirety.
The documentation for PUPS/P3 is currently 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.
operating system. At
the present time PUPS/P3 has been ported to the following systems:
|