Subsystems provide a layer of abstraction on the set of services provided at lower layers.
Subsystems make remote resources individually visible to their clients and expose the relationships among these resources - such as the parent-child
relationship between directories and files on a remote file system.
There should typically be only one subsystem implementation for each type of remote resource.
Minor differences between remote systems or
the protocols required to access them should be provided by different
implementations of an underlying service.
For example, RSE provides a single
exemplary file subsystem, but that file subsystem uses different file services to use different remote file access protocols.
The duty of tieing a subsystem to its underlying service goes to the subsystem configuration.
A subsystem configuration creates subsystems of the kind it understands and, in addition, create them with the appropriate
underlying service if there is one. These configuration classes are registered with RSE using the
org.eclipse.rse.core.subsystemConfigurations extension point.
RSE supplies ready-made subsystems for files, command execution, and processes.