Some Computing Concepts

Parallelism (or True Parallelism) is when the instructions of two or more processes (or threads) run simultaneously on two or more CPUs (or multicore processors.)

Concurrence (or Pseudo [= false] Parallelism) is when the operating system uses context switches to quickly switch between processes (or threads) on a CPU to create the feeling that these processes (or threads) run in parallel, without them actually running in parallel.

Multi-programming is the execution of two or more programs at the same time by the OS. The idea is that the OS can store two or more programs in memory simultaneously while the programs wait for a CPU to become available.

Multi-processing is the use of two or more CPUs on the same device to run different parts of a process’s code or to run two or more different processes. For example, process A could first run on CPU #0 and then on CPU #1 (or run two of its threads on both CPU #0 and CPU #1 in parallel.)