[comp.sys.isis] Process lists: another new facility for V2.0

ken@gvax.cs.cornell.edu (Ken Birman) (01/16/90)

As usual, your comments and suggestions would be appreciated.  We added
this for META and Deceit, which needed cheaper ways to maintain subsets
of the membership of a process group -- and wanted to be able to use
such subsets in calls to the new BYPASS communication facilities.

.TH PG_LIST 3  "1 February 1989" ISIS "ISIS LIBRARY FUNCTIONS"
.SH NAME
pgl_create, pgl_add, pgl_remove, pgl_list, pgl_get, pgl_makegroup \- manage process lists
.SH SYNOPSIS
\fB#include "isis.h"\fR
.PP
\fBaddress *pgl_create(gaddr_p, alist), *pgl_makegroup(list_p, gname);\fR
.br
\fBaddress *alist;\fR
.br
\fBchar *gname;\fR
.PP
\fBvoid pgl_add(list_p, addr_p), pgl_remove(list_p, addr_p);\fR    
.PP
\fBaddress *pgl_get(list_p);\fR
.PP
\fBvoid pgl_delete(list_p);\fR
 
.SH DESCRIPTION
.B pgl_create
is used to create a \fIprocess list\fR. 
Such a list is referenced using a \fIlist pointer\fR of type \fIaddress\fR, but 
known only within the address space of the process that invoked \fBpgl_create\fR. 
The initial membership of the list will be as specified in the null terminated 
array of addresses given by the\fBalist\fR argument.
Later, the membership is automatically changed if processes fail, and cal also be 
manually changed by calls to \fBpgl_add\fR and \fBpgl_remove\fR specifying a process 
whose address should be, respectively, appended to the list or removed from it. 
The list can be deleted by a call to \fBpgl_delete\fR.
 
The process group list facility requires that the list be a \fIsubset\fR of the 
membership of some process group to which the creator of the list belongs.
This ``parent group'' is designated at the time of list creation and will be   
monitored by the list facility to detect failures of listed processes. 
If a process in the initial list or an argument to \fBpgl_add\fR is not a member 
of the parent group, it will be excluded silently from the list.
 
The major reason for creating a process list is that it can be used in
calls to the ISIS multicast interface.
This permits the user to overcome one of the limitations on the
bypass communication protocols, namely that the destination be either
a single group to which the sender belongs, or a single process
that belongs to some group that the sender also belongs to.
When using a process list as the destination in a multicast, ISIS will
route the resulting communication via the so-called ``bypass'' protocol suite, just as if
the list address were a real process group address.
In contrast, if the same destinations were ``spelled out'' by passing a null-terminated
vector of their process 
addresses directly to the multicast interface, the bypass protocols would not be used and 
communication performance would suffer.  

A process list cannot be monitored or used like a process-group address.  Moreover, one cannot
pass a list address to a remote process.
However, if desired, a list can be ``turned into'' a process group using the
\fBpgl_makegroup\fR facility, which creates process group 
and returns its address.  
 
.SH BUGS
The major disadvantage of a process list is that the members do not know that 
they belong to the list.
Consequently, the facility cannot be used to obtain fault-tolerance as in a
coordinator-cohort computation.