Threads

1. **Threads:**

   - Definition: Threads are the smallest sequence of programmed instructions that can be managed independently by a scheduler within a process. They share the same memory space, allowing them to execute concurrently.

   - Benefits:

     - Concurrency: Enables multiple tasks to run concurrently within a single process, improving performance and responsiveness.

     - Resource Sharing: Threads within the same process share resources, making communication and data sharing faster.

     - Lightweight: Threads are faster to create and switch between compared to processes since they share resources within the same process.


2. **Types of Threads:**

   - User Threads: Managed entirely by a user-level thread library, not visible to the operating system.

   - Kernel Threads: Managed by the operating system kernel, visible to the scheduler.


3. **Thread States:**

   - Common states: running, ready, blocked, or terminated. The scheduler manages state transitions and determines which thread to execute next.


4. **Thread Synchronization:**

   - Importance: Prevents data corruption or race conditions by synchronizing access to shared resources.

   - Techniques: Mutexes, semaphores, monitors are commonly used for thread synchronization.


5. **Multithreading:**

   - Definition: The ability of a program to create and manage multiple threads concurrently, leading to improved performance, especially on multi-core processors.


6. **Threading Issues:**

   - Race Conditions: Occur when two or more threads access shared data concurrently, leading to unpredictable behavior.

   - Deadlocks: Happen when two or more threads are blocked indefinitely, waiting for each other to release resources.

   - Priority Inversion: Occurs when a low-priority thread holds a resource needed by a high-priority thread.

   - Starvation: Happens when a thread is unable to gain access to a resource because other threads continually access it.

   - Context Switching Overhead: Introduces overhead when the operating system switches execution from one thread to another.

   - Thread Safety: Ensures data structures and algorithms can be accessed by multiple threads concurrently without causing data corruption.


7. **Inter Process Communication (IPC):**

   - Definition: Processes often need to communicate with each other, and IPC facilitates this communication in a structured manner.

   - Issues: Passing information between processes, preventing interference, and ensuring proper sequencing.


8. **Critical Section:**

   - Definition: A part of a program's code where shared resources are accessed and modified by multiple threads or processes.

   - Critical Section Problem: Mutual Exclusion, Progress, Bounded Waiting, Independence.

   - Synchronization Techniques: Mutexes, Semaphores, Monitors.


By understanding these concepts, programmers can effectively utilize threads, manage concurrency, and ensure the integrity of their programs through proper synchronization and IPC mechanisms.

Comments

Popular posts from this blog

Lecture-1.1 PDC

GT-lecture_01

Lecture-1 PDC