0% found this document useful (0 votes)
9 views3 pages

Introduction To Synchronization Cse

Uploaded by

prachiksk07
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views3 pages

Introduction To Synchronization Cse

Uploaded by

prachiksk07
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

Absolutely!

Let’s go **in-depth on Synchronization Techniques in Operating Systems


(OS)**. I’ll cover **concepts, problems, classical solutions, algorithms, and real-
world examples**, structured for **CSE, GATE, and interviews**.

---

# 🔗 Synchronization Techniques in Operating Systems (In-Depth)

---

## 1. **Introduction to Synchronization**

* **Synchronization** = coordination of processes to ensure correct execution when


sharing resources.
* Required when multiple processes **access shared resources concurrently**.
* **Goal**:

* Prevent **race conditions**.


* Ensure **mutual exclusion**.
* Maintain **data consistency**.

**Key Terms**:

* **Critical Section (CS)**: Section of code where shared resources are accessed.
* **Race Condition**: Outcome depends on the **order of execution** of processes.
* **Atomic Operation**: Operation that is **indivisible**; cannot be interrupted.

---

## 2. **Critical Section Problem**

* **Requirements**:

1. **Mutual Exclusion**: Only one process in CS at a time.


2. **Progress**: If no process in CS, a waiting process should enter without
indefinite delay.
3. **Bounded Waiting**: Each process waits for a limited time before entering CS.
* **Solution Approaches**:

* Hardware-based (disable interrupts, atomic instructions).


* Software-based (Peterson’s algorithm, Bakery algorithm).
* Synchronization primitives (Semaphore, Mutex, Monitor).

---

## 3. **Hardware Solutions**

* **Disabling Interrupts** (simple but only works in uniprocessor systems).


* **Atomic Instructions**:

* **Test-and-Set (TAS)**: Locks the resource atomically.


* **Compare-and-Swap (CAS)**: Compares memory value, swaps atomically if match.
* **Spinlocks**: Busy-wait using atomic instructions (common in multiprocessor
systems).

---

## 4. **Software Solutions**
### 4.1 **Peterson’s Algorithm**

* Works for **two processes**.


* Uses:

* Boolean flag array `flag[2]` → indicates intention to enter CS.


* `turn` variable → whose turn is it.
* Guarantees **mutual exclusion, progress, bounded waiting**.
* **Limit**: Only for two processes.

### 4.2 **Bakery Algorithm**

* Works for **n processes**.


* Inspired by **“take a number in bakery”**:

* Each process takes a number; process with lowest number enters CS.
* Guarantees **mutual exclusion, progress, fairness**.

---

## 5. **Semaphore**

* **Definition**: Integer variable used for synchronization.


* Types:

1. **Binary Semaphore (Mutex)** → 0 or 1, used for mutual exclusion.


2. **Counting Semaphore** → 0 to n, used for resource counting.
* Operations:

* **wait(P)** or **down()** → decrement semaphore, block if value < 0.


* **signal(V)** or **up()** → increment semaphore, wake waiting process.
* **Uses**:

* Mutual exclusion.
* Synchronization (ordering execution).
* **Classical Problems Solved Using Semaphore**:

* Producer-Consumer.
* Readers-Writers.
* Dining Philosophers.

---

## 6. **Mutex Locks**

* Special type of **binary semaphore** used only for **mutual exclusion**.


* **Difference from Semaphore**:

* Mutex owned by single process at a time.


* Only owner can release mutex.

---

## 7. **Monitors**

* **High-level abstraction** over semaphores.


* Combines:

* **Data** (shared variables).


* **Operations** (functions to access data).
* **Synchronization** (automatic mutual exclusion).
* **Condition Variables**: Used to wait/signal inside monitor.

---

## 8. **Classical Synchronization Problems**

### 8.1 **Producer-Consumer Problem**

* **Scenario**: Producer generates items, consumer consumes items in buffer.


* **Solution**: Semaphore:

* `empty` → counts empty slots.


* `full` → counts filled slots.
* `mutex` → ensures mutual exclusion.

### 8.2 **Readers-Writers Problem**

* **Scenario**: Multiple readers can read simultaneously; writers need exclusive


access.
* **Solution**:

* Semaphores for `readCount`, `mutex`, `wrt`.


* **Variants**:

* Reader-priority (readers

You might also like