Recent rapid advances in the development of data processors and software implementations are making more and more data processing services available to users. Basic services, such as the processing and manipulation of data in response to instructions and commands and the managing of data including storing such data in records and files, modifying the stored data and reading the stored data are now within economic reach of both small and large users. Typically, the processing is provided by one or more digital computers cooperating with externally connected user devices, such as data terminals, which may provide the data to be manipulated, managed or transferred or the commands and instructions for the data.
Some "users" of data processing services may find it preferable to process data in their own, on-premises, host computer. A single such "user" may have widely geographically separate "subsidiary" locations (such as "outlets" for a manufacturer) and thus have need for processing services at these various locations. One solution is to send all raw data through the common carrier network to the "user" host and return processed data, as needed, to terminals at the "outlet locations". Another solution is to provide distributed processing services at or near the various terminal locations to reduce the carrier network communications between each terminal and the host computer. More specifically, in accordance with the latter solution, it is advantageous to provide local services such as editing of "text", interpretation of commands, creation of forms, accumulation and manipulation of numerical and text data and the like, at locations adjacent or near to the several terminals. The carrier network communication between the host and the terminals is then limited to data after such accumulation, manipulation and editing at the various locations. It has been suggested that the provision of such distributed processing services can be appropriately handled by a service vendor for a plurality user "customers", reducing the cost for each "customer" by time-sharing the usage of processing equipment among such plurality of "customers".
Since each customer has unique and differing processing needs, individualized programs, specially tailored for these needs, must be available for the several customers. It is therefore clear that each distributed processing location (or node) for the above-described service necessarily must accommodate a large number of programs (for a plurality of customers) and each node might preferably comprise a plurality of processors or CPUs, each processor supporting a plurality of programs. As is well known in the art, only one program can actually be "executing" at any given time in a computer. However, if the program currently running should terminate, time-out, or go into a "wait" state pending the occurrence of some "event", such as the completion of any input/output operation, another program is immediately available to begin executing, thus permitting different customer programs the opportunity to time-share computer time.
In discussing the execution of a program, it is important to understand the concept of "processing". A process is the total environment in which a program (or image) executes and has, in addition to the image, three further components, namely: (1) memory space allocated to the process for storing the image, for storing data generated and used by the image and for storing control information; (2) a software context which includes such pieces of information such as priorities and privileges allocated to the process, a unique process identifier, accounting information and so on; and (3) a hardware context which comprises the contents at any instant of time of the general purpose registers within the processor or CPU. Whenever execution of the process is suspended, its hardware context is stored in memory before another process begins execution. When a process is again allowed to execute, its hardware context is restored in the registers so that the process can resume execution at the point it was interrupted without again processing previously manipulated data or reexecuting commands or instructions.
As previously noted, each customer of a service vendor typically has needs and requirements that differ from, in part, and are similar to, in part, the needs and requirements of other customers. To satisfy these diverse customers, it is advantageous for the service vendor to create an individual process to execute each "customized" program developed for the unique needs of each customer and create other processes to execute programs having "universal capabilities" which satisfy common needs of a plurality of customers.
A communication subsystem for transferring data between the several processes is a critical element in an integrated distributed-processing system suitable for diverse time-sharing customers or users. An important attribute in such a communication subsystem is to identify and select process-to-process connections in response to a request from an originating process to call a terminating end-point process which may be in a different processor in the same or in a different node and to provide communication criteria or parameters for the call, such as a rate of data flow and a grade of service. It is therefore advantageous to pass data defining such communication parameters over external communication links between the processors and the nodes (by way of foreign systems such as common carrier networks) so that the end point (users) can process such communication parameter data and intercommunicate within the parameters.
In order to communicate over another (foreign) system, an interface is required to convert the "processed" data to information suitable for conveyance over the "foreign" system. This interface which provides the suitable conversion is necessarily transparent to the communication parameter data provided by (and destined to) the end-point users. This limits the usefulness of the interface since it must be "blind" to the parameter data and thus cannot receive calls as would an end-point user or process. It is an object of this invention to enhance the usefulness of an interface process.