.sh 1 "Language Overview"
.pp
An SR program is composed from three kinds of separately-compiled
#components:  resource specifications, resource bodies, and globals.
Resources are the main building block; they are the unit
of abstraction and encapsulation.
Globals contain declarations of constants and types shared by resources;
they have the form
.(b
%global identifier
     declarations of constants and types
%end identifier
.)b
.pp
A resource is a parameterized pattern, instances
of which are created dynamically.
Resources define operations and are implemented
by one or more processes that execute in the same address space.
Processes interact by means of operations;
processes in the same resource may also share variables.
SR provides a variety of mechanisms for implementing
and invoking operations.
These mechanisms can be used in various combinations
to program resources that implement objects ranging
from sequential stacks and queues, through monitors,
to complex servers.
Moreover, inheritance is supported so resources
can implement classes of objects.
The remainder of this section summarizes the most interesting
aspects of resources and operations.
