Also found in: Dictionary, Thesaurus, Wikipedia.
concurrent processing[kən′kər·ənt ′präs‚əs·iŋ]
The simultaneous execution of several interrelated computer programs. A sequential computer program consists of a series of instructions to be executed one after another. A concurrent program consists of several sequential programs to be executed in parallel. Each of the concurrently executing sequential programs is called a process. Process execution, although concurrent, is usually not independent. Processes may affect each other's behavior through shared data, shared resources, communication, and synchronization.
Concurrent programs can be executed in several ways. Multiprogramming systems have one processing unit and one memory bank. Concurrent process execution is simulated by randomly interleaving instructions of the sequential programs. All processes have access to a common pool of data. In contrast, multiprocessing systems have several processing units and one memory bank. Processes are executed in parallel on the separate processing units while sharing common data. In distributed systems, or computer networks, each process is executed on its own processor with its own memory bank. Interaction between processes occurs by transmission of data from one process to another along a communication channel. See Distributed systems (computers), Multiprocessing
One of the first uses of concurrent processing was in operating systems. If the computer is to support a multiuser environment, the operating system must employ concurrent programming techniques to allow several users to access the computer simultaneously. The operating system should also permit several input/output devices to be used simultaneously, again utilizing concurrent processing. See Multiaccess computer, Operating system
Concurrent programming is also used when several computers are joined in a network. An airline reservation system is one example of concurrent processing on a distributed network of computers. See Local-area networks
A simple example of a task that can be performed more efficiently by concurrent processing is a program to calculate the sum of a large list of numbers. Several processes can simultaneously compute the sum of a subset of the list, after which these sums are added to produce the final total.
Concurrent programs can be created explicitly or implicitly. Explicit concurrent programs are written in a programming language designed for specifying processes to be executed concurrently. Implicit concurrent programs are created by a compiler that automatically translates programs written in a sequential programming language into programs with several components to be executed in parallel. See Programming languages
concurrent programming languageA programming language designed to support simultaneous operations. For example, Java and the Java-like Scala language natively support threads and synchronization, whereas languages such as C and C++ rely on external libraries for programming concurrency. See Java, Scala, multithreading, CUDA and multitasking.
multiprocessingSimultaneous processing with two or more processors in one computer or two or more computers processing together. When two or more computers are used, they are tied together with a high-speed channel and share the general workload between them. If one fails, the other takes over. Multiprocessing is also accomplished in special-purpose computers, such as vector processors, which provide concurrent processing on sets of data.
Concurrent Instruction Processing
All computers perform simultaneous functions, such as executing instructions while reading from an input device and writing to an output device. CPUs can also execute multiple instructions simultaneously from a single stream of instructions (see pipeline processing). However, multiprocessing refers specifically to the concurrent execution of two or more independent streams of instructions. See parallel processing, SMP, MPP, CMP, bus mastering and fault tolerant.