gtpc3m0kConcepts and Structures

Multiprogramming Defined

Multiprogramming is defined within the context of the use of one I-stream engine because a single I-stream engine can only process a stream of instructions for one program at a time. When several program instruction streams are shared in a single I-stream engine and a dispatching mechanism exists to switch among the programs, the environment is said to be multiprogrammed.

The TPF system is designed on the assumption that the processing required for a single message places relatively heavy demands on database access and only a little demand on I-stream processing cycles. This assumption identifies a fundamental principle of multiprogramming in the TPF system: To keep an I-stream engine busy when programs are delayed by I/O operations. Multiprogramming is useful when an application program is delayed due to I/O requests, and the I-stream engine is more efficiently utilized if another program can be processed by the I-stream engine during that delay. Multiprogramming makes sense because a channel subsystem represents independent processors sharing storage with I-stream engines. So, in reality, multiprogramming on an I-stream engine within the TPF environment is done in support of multiprocessing, where a channel subsystem and a single I-stream engine represent the multiple processors. Multiprogramming is also effective when a program must wait for the use of the services of an I-stream engine that is different than the I-stream engine on which the program is running.

There are other reasons for multiprogramming, some of which do not exist in the TPF system. For example, computationally intensive programs are not tolerated in the TPF system where most Entries complete in less than one-half second. However, multiprogramming is used in other systems to force computationally intensive programs to give up control to higher priority work.