Intermediate Topic 19 of 51 Operating Systems
Critical Section
Code region that must not run concurrently.
How it works
A critical section is a segment of code that accesses shared resources and must not be executed by more than one thread at a time. A correct solution provides mutual exclusion, progress, so that a decision is made without unnecessary delay, and bounded waiting, so no thread waits forever. Entry and exit protocols are implemented with locks, semaphores or algorithms such as Peterson's.
Step-by-step walkthrough
- Two threads need the shared data.
- Thread A enters the critical section.
- Thread B must wait outside.
- A leaves and B enters.
- Only one thread is inside at any moment, giving mutual exclusion.
Where it is used
Updating shared counters, modifying linked lists, writing to a log file, managing a bank balance and updating caches shared across threads must be done within critical sections.
Common pitfall
Making sections too large reduces concurrency and creates contention, while too small leaves invariants broken. Forgetting to release the lock on an error path causes deadlock, so use scoped locks. Doing slow work, like I/O, while holding a lock hurts throughput. Keep critical sections short and well documented.
Where it fits in the course
Critical Section is topic 19 of 51 in Operating Systems, rated Intermediate. It follows Race Conditions. The next topic is Mutex.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Operating Systems quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Operating Systems quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Critical Section?
Where do people use Critical Section?
What is the most common mistake with Critical Section?
What should I learn before this topic?
How can I practice it?
Is Critical Section hard to learn?
How long does it take to learn Critical Section?
Which topics are related to Critical Section?
What should I study after Critical Section?
Related topics
- Race Conditions (Operating Systems)
- Mutex (Operating Systems)
- Pipes and Signals (Operating Systems)
- Semaphores (Operating Systems)