Lecture 1.2.2
Lecture 1.2.2
1
Department of Computer Science and Engineering (CSE)
Content
Advantages:
•Ease of Programming: No need for explicit message-passing since data is directly
shared.
•Low Communication Latency: Data transfer between processors is faster due to direct
memory access.
•Efficient for Small Systems: Works well for tightly-coupled systems like multicore
processors.
Disadvantages:
•Scalability Issues: Performance degrades as the number of processors increases due to
contention for memory access.
•Limited to Local Nodes: Typically confined to a single machine, making it unsuitable for
large-scale distributed systems.
•Race Conditions: When multiple threads access shared data simultaneously without
proper synchronization.
•Deadlocks: Occurs when two or more threads are waiting indefinitely for resources held
by each other.
Advantages:
•Scalability: Can handle large-scale systems with thousands of nodes.
•Fault Tolerance: Failure of one node does not affect the entire system.
•Geographical Distribution: Suitable for systems spread across different locations.
Disadvantages:
•Complex Programming: Explicit message-passing requires careful management of data
distribution and communication.
•Higher Latency: Communication between processors is slower due to network overhead.
•Load Balancing Challenges: Ensuring all processors work efficiently without idle time can be
complex.
Usage :
Shared Memory: Best for small-scale systems, multicore processors, or when ease of
programming and low latency are critical.
•Distributed Memory: Suitable for large-scale systems, cluster computing, and applications
requiring high scalability and fault tolerance.
Synchronization Challenges
Comparison Table