Introduction
Home Introduction Successes Examples Download Install Documentation Discussion Acknowledgments

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.



A blast from the past! Screen shots of MSPS running on a BBC Model B with 6502 second processor. Some of the ideas which were introduced by MSPS, for example smart data which actively manages programs which process it, took more than 10 years to to appear in mainstream systems.


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.


Schematic of a PUPS/P3 environment consisting of two clusters of PSRP servers and a maggot (a PSRP server which collects and disposes of garbage). In cluster 1, several PUPS/P3 based communications methods are illustrated, including:

  1. User to PSRP server via PSRP client (via PSRP protocol). This communication mode establishes an asynchronous psuedotty connection between the psrp client (and hence the user) and the PSRP server process.

  2. Peer to peer (between PSRP servers) via SIC channel. A PSRP server wishing to communicate directly with another server slaves an instance of the psrp client via a Slaved Interation Client Channel (SIC). It then instructs this slaved psrp client to open a normal PSRP channel to the peer it wishes to talk to.

  3. Peer to peer (between PSRP servers) via sensitive file. In this mode a PSRP server sends data to another server via file. To prevent any server reading the file it tagged with a key which has a matching lock on the recipient server. This lock and key system was inspired by biological signaling systems.

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:


Direct communication with running processes via Process Status Request Protocol (PSRP). These processes may be multithreaded using POSIX threads.

Serially mapping persistent objects (persistent heaps) into the address spaces of multiple processes which may be located on arbitrary hosts.

Delivery of any signal within a distributed multihost computing environment.

Process checkpointing and migration (via the Criu checkpointing Library).

Access authentication to resources on a per-process basis.

Homeostatic protection for file system objects and processes.

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:

BSD 4.4 (FreeBSD)
BSD 4.4 (Darwin)
OSF1 (TRU-64 UNIX)
Solaris
Cygwin (1.5.8)

These implementations are no longer maintained as the operating systems concerned are now obscolescent or historic.


PUPS/P3 (C) Mark A. O'Neill 2023