# PUPS P3

PUPS/P3 is an implementation of an organic computing environment for Linux which provides support for the implementation of low level persistent software agents.

## Introduction

PUPS/P3 is a cluster computing environment derived from the MSPS operating environment implemented on the BBC Micro.
The PUPS P3 environment has been used in the infrastructure of a number of scientific computing projects include the Daisy automated species identification system and a number of computational neuroscience projects.

## Features of the P3 process

PUPS/P3 processes are homeostatic agents. These agents are able to save their state and migrate between machines running compatible Linux kernels (via CRIU). The PUPS/P3 API also gives them significant access to the state of their environment: like biological organisms they are animate. That is, they are able to sense changes in their environment and respond appropriately. Fir example, a P3 process may elect to save its state or migrate if some resource, for example processor cycles become scarce. Effectively, this is the machine equivalent of an animal electing hibernate or migrate when its food resources become scarce. PUPS/P3 can also share data resources via a low level persistent object, the shared heap. The semantics of using this are similar to those used by the free/malloc API supplied by standard C libraries.
Computations can be jointly executed by a cluster of co-operating P3 processes. This cluster is in many ways analalogous to a multicellular organism: like cells within an organism, individual P3 processes can specialise. For example, in the case of the Daisy pattern recognition system, the cluster consists of (ipm) processes which pre-process pattern-data, (floret) processes which run the PSOM neural nets used to classify those patterns, and (vhtml) processes which communicate the identity of patterns Daisy has discovered to the user. In addition, the Daisy cluster also has specialist (maggot and Kepher) processes to clear and recycle file and memory space and (lyosome) processes which destroy and replace other processes within the cluster which have become corrupted and therefore non-functional.
In conjunction with virtualisation systems, for example the Oracle VirtualBox system, it is possible to use PUPS/P3 to build homeostatic virtual (Linux) machines which can carry computational payloads while living in a dynamic cloud environment. The latest release of PUPS/P3 also supports container based operating system level virtualization (via Docker (software) and check pointing and subsequent migration and/or restoration via CRIU.

## P3 process network

The P3 system facilitates dynamic asynchronous peer to peer communication between processes and also dynamic asynchronous communication between processes and the user. In the example process network shown, several of the communications methods implemented in PUPS/P3 are illustrated. These include:
User to PSRP server via PSRP client (using PSRP protocol). This communication mode establishes an asynchronous pseudotty connection between the psrp client (and hence the user) and the PSRP server process.
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 Interaction Client Channel (SIC). It then instructs this slaved psrp client to open a PSRP channel to the peer it wishes to talk to.
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 enzyme-substrate and biological signaling systems.
* Screenshot of MSPS (Multiple Segment Pascal System) running on BBC Model B with 6502 second processor (circa 1986)
* psrp the P3 shell showing help page
* psrp the P3 shell talking to floret, one of the components of the DAISY automated species identification system
* Schematic of a PUPS/P3 process network consisting of two clusters of PSRP servers and a maggot (a PSRP server which collects and disposes of garbage)