Parallel execution increases the overall throughput of a program enabling to break down large tasks to accomplish them faster or to accomplish more task in a certain time. Web search engines that process millions of requests every second has parallel programming in it. Parallel programming needs parallel hardware along with multiple processor to execute different parts of the program at the same time .
Flynn's Taxonomy classifies parallel computer architecture on the basis of :
1. Instruction Stream (control stream)
2. Data Stream
Thereby classifying parallel computers into 4 parts:-
1. Single Instruction Single Data.
2. Single Instruction Multiple Data.
3. Multiple Instruction Single Data.
4. Multiple Instruction Multiple Data.
1. Shared Memory:-
Here all processors access same memory with global address space. Change in the memory by one processor is visible to others. It is further classified into :-
1) UNIFORM MEMORY ACCESS
2) NON-UNIFORM MEMORY ACCESS
2. Distributive Memory Access:-
Here each processor has its own local memory , with its own address space.Each processor works independently.
Smaller processes (sub-elememts) within the process working over different task are known as threads. Though thread has independent path of execution but then can only exits as a part of process.
Threads within a process shares same address space , code and data .
1. Sockets and pipes.
2. Remote procedure calls
3. Shared Memory.