The Concept of Parallel Execution and Concurrent
Real world systems are obviously concurrent, and computer science is about modelling the actual world. Examples of actual world systems which need concurrency are railway networks and machines in a manufacturing works. In the computer globe, many new operating systems maintain concurrency. While working on our PC (personal computer), we may download a audio file, listen to streaming audio, print something, have a clock running and type in a text editor. A distributed computer system or multiprocessor can better use the inherent concurrency in difficulty solutions than a uniprocessor system. Concurrency is reached either by making simultaneous processes or by creating threads inside a process. Whichever of these process is used, it requires a lot of attempt to synchronise the threads/processes to evade race conditions, starvations and deadlocks.
Study of parallel and concurrent executions is important due to following reasons:
i) Some problems are most commonly solved by using a set of co-operating processes.
ii) Used to reduce the execution time.
The words "parallel "and concurrent" are often used interchangeably, however they are different.
Concurrent execution is the secular behaviour of the N-client 1-server form where only one client is providing at any given instant. It has dual nature; it is chronological in a small Time scale, but instantaneous in a large time scale. In our context, a processor workings as Server and process or thread workings as client. Some examples of concurrent languages include Concurrent Pascal, Adam, concurrent PROLOG and Modula-2). Parallel execution is linked with the N-client N-server model. It allows the servicing of extra than one client at the equal time as the number of servers is extra than one. Examples of parallel languages include Parallel C, Occam-2 and strand-88.
Parallel execution did not require explicit concurrency in the language. Parallelism can be complete by the underlying hardware. Likewise, we can have concurrency in a language with no parallel execution. This is the situation when a program is executed on an only processor.