Posted 12 months ago | Originally written on 28 Sep 2021

Every computation occurs in some runtime. The challenge is to accomplish complex tasks using available runtime even when it is clearly impossible to use a single runtime to complete the task. Therefore, there is a need to atomise the complete task into a coherent sequence of runtimes to accomplish the task.

In practical terms, each runtime is realised through one or more computational processes. Each process may spawn multiple child processes and it may be the necessary to communicate between processes. Additionally, it may be necessary to avail a non-terminating process to assist the main process to complete its task.

Runtimes may be:

  • terminating or non-terminating (longevity)
  • local or remote (location)
  • synchronous or asynchronous (time coupling)
  • serial or parallel (multiplicity)
  • atomic or batched (completeness)
  • single- or multi-threaded (concurrency)

The above are various techniques by which to exploit compute runtime to complete some task. It is the task of the system architect to decide which types of runtimes are suitable to accomplish the system's aims.