In multiprocessing, various processors have to to communicate with each other. Therefore, synchronisation is needed between them. The correctness and performance of parallel execution depends upon efficient synchronisation between concurrent computations in multiple processes. The synchronisation problem may occur because of sharing of writable data objects between processes. Synchronisation includes executing the order of operations in an algorithm by finding the dependencies in writable data. Shared object access in an MIMD architecture needs dynamic management at run time, which is much more difficult as compared to that of SIMD architecture. Low-level synchronization primitives are executed directly in hardware. Other resources like Bus, CPU and memory unit also need synchronisation in Parallel computers.
To study the synchronization, the following dependencies are identified:
i) Data Dependency: These are RAW,WAR and WAW dependency.
ii) Control dependency: These depend upon control statements like IF THEN, GO TO, etc.
iii)Side Effect Dependencies: These arise due to Traps, exceptions, I/O accesses. For the proper implementation order as enforced by correct synchronization, program dependencies must be analyzed properly. Protocols like wait protocol and sole access protocol are used for doing synchronization.