SlideShare a Scribd company logo
2
Most read
7
Most read
8
Most read
The
Critical-Section
Problem
MOHITDADU
The Critical-Section
A code segment that accesses shared variables (or other shared resources)
and that has to be executed as an atomic action is referred to as a critical
section.
n processes competing to use some shared data.
No assumptions may be made about speeds or the number of CPUs.
Each process has a code segment, called Critical Section (CS), in which
the shared data is accessed.
Problem – ensure that when one process is executing in its CS, no other
process is allowed to execute in its CS.
informally,
a critical section is a code segment that accesses shared variables and
has to be executed as an atomic action.
The critical section problem refers to the problem of how to ensure that
at most one process is executing its critical section at a given time.
Important: critical sections in different threads are not necessarily the
same code segment!
PROBLEM DESCRIPTION
PROBLEM DESCRIPTION
Formally,
Mutual exclusion: when a thread is executing in its critical section, no other
threads can be executing in their critical sections.
Progress: if no thread is executing in its critical section, and if there are
some threads that wish to enter their critical sections, then one of these threads
will get into the critical section.
Bounded waiting: after a thread makes a request to enter its critical section,
there is a bound on the number of times that other threads are allowed to enter
their critical sections, before the request is granted.
CS Problem Dynamics (1)
When a process executes code that manipulates shared data (or
resource), we say that the process is in it’s Critical Section (for that
shared data).
The execution of critical sections must be mutually exclusive: at any
time, only one process is allowed to execute in its critical section
(even with multiple processors).
So each process must first request permission to enter its critical
section.
CS Problem Dynamics (2)
The section of code implementing this request is called the Entry Section (ES).
The critical section (CS) might be followed by a Leave/Exit Section (LS).
The remaining code is the Remainder Section (RS).
The critical section problem is to design a protocol that the processes can use so
that their action will not depend on the order in which their execution is
interleaved (possibly on many processors).
General structure of process
while (true)
{
Entry-Section
Critical section
// contains accesses to shared variables or other resources.
Exit-Section
Non-critical section
// a thread may terminate its execution in this section.
}
EXPLANATION
 ENTRY SECTION:- The process will request to enter the critical section
then a part of code decide wheather process can enter in the Critical
Section on not.
 CRITICAL SECTION:- A code segment that accesses shared resources and
that has to be executed as an atomic action.
 EXIT SECTION:- Locking section can be undone which is done in Critical
Section.
 REMAINDER SECTION:- Remaining part of the program .
Solution to Critical-Section Problem
There are 3 requirements that must stand for a correct solution:
1. Mutual Exclusion
2. Progress
3. Bounded Waiting
We can check on all three requirements in each proposed solution,
even though the non-existence of each one of them is enough for an
incorrect solution.
Solution to CS Problem – Mutual Exclusion
1. Mutual Exclusion –
If process Pi is executing in its critical section, then no other processes can be
executing in their critical sections.
Whenever one process is entered in the critical section then there is no other
process can enter in the critical section.
Only one process can be execute at a time.
That means access to the critical section must be mutually exclusive.
 Critical sections better be focused and short.
 Better not get into an infinite loop in there.
 If a process somehow halts/waits in its critical section, it
must not interfere with other processes.
IMPLICATIONS:
Solution to CS Problem– Progress
2. Progress –
If no process is executing in its critical section and there exist some
processes that wish to enter their critical section, then the selection of
the process that will enter the critical section next cannot be
postponed indefinitely:
If only one process wants to enter, it should be able to.
If two or more want to enter, one of them should succeed.
Solution to CS Problem– Bounded Waiting
Bounded Waiting – A bound must exist on the number of times that
other processes are allowed to enter their critical sections after a
process has made a request to enter its critical section and before that
request is granted.
• Assume that each process executes at a non zero speed.
• No assumption concerning relative speed of the n processes.
Types of solutions to CS
problem
Software Solutions :– Algorithms who’s correctness does not rely
on any other assumptions.
Hardware Solutions :– Rely on some special machine instructions.
Operating System solutions :– Provide some functions and data
structures to the programmer through system /library calls.
Programming Language solutions :– Linguistic constructs
provided as part of a language.
Each process disables all interrupts just after entering in its critical
section and re-enable all interrupts just before leaving critical section.
With interrupts turned off the CPU could not be switched to other
process.
Hence, no other process will enter its critical and mutual exclusion
achieved.
Disabling Interrupts
(Hardware Solution)
Disabling interrupts is sometimes a useful technique within the kernel
of an operating system,
But it is not appropriate as a general mutual exclusion mechanism for
users process.
The reason is that it is unwise to give user process the power to turn
off interrupts.
Conclusion
• In this solution, we consider a single, shared, (lock) variable, initially 0.
• When a process wants to enter in its critical section, it first test the lock.
• If lock is 0, the process first sets it to 1 and then enters the critical section.
• If the lock is already 1, the process just waits until (lock) variable becomes
0.
• Thus, a 0 means that no process in its critical section, and 1 means hold
your horses - some process is in its critical section.
Lock Variable
(Software Solution)
Drawbacks of
software solutions
Software solutions are very delicate .
Processes that are requesting to enter their critical section
are busy waiting (consuming processor time needlessly).
If critical sections are long, it would be more efficient to block
processes that are waiting.
Initial Attempts to Solve
Problem
Threads T0 and T1 use variables flag[i] and flag[j] to indicate their intention to enter their
critical section. A thread will not enter its critical section if the other thread has already
signaled its intention to enter.
boolean flag[i]=false , flag[j]=false ;
Incorrect Solution 1
T1
while (true) {
while (flag[ i ]) { ; } (1)
flag[ j ] = true; (2)
critical section (3)
flag[ j ] = false; (4)
non-critical section (5)
}
T0
while (true) {
while (flag[ j ]) { ; } (1)
flag[ i ] = true; (2)
critical section (3)
flag[ i ] = false; (4)
non-critical section (5)
}
This solution does not guarantee mutual exclusion.
T0
WHILE (TRUE) {
WHILE (TURN != 0) { ; } (1)
CRITICAL SECTION (2)
TURN = 1; (3)
NON-CRITICAL SECTION (4)
}
Global variable turn is used to indicate which thread is allowed to enter its
critical section, i.e., the threads take turns entering their critical sections. The
initial value of turn can be 0 or 1.
int turn = 1;
Incorrect Solution 2
T1
while (true) {
while (turn != 1) { ; } (1)
critical section (2)
turn = 0; (3)
non-critical section (4)
}
Thread T0 cannot exit the loop in (1) since the value of turn is 1 and turn will never be
changed by T1.
T0
while (true) {
flag0= true; (1)
while ( flag1) { (2)
flag0= false; (3)
while( flag1) {;} (4)
flag0= true; (5)
}
critical section (6)
Flag0= false; (7)
non-critical section (8)
}
T1
while ( true ) {
flag1= true; (1)
while ( Flag0) { (2)
flag1= false; (3)
while( Flag0) {;} (4)
flag1= true; (5)
}
critical section (6)
flag1= false; (7)
non-critical section (8)
}
Incorrect Solution 3
When one thread finds that the other thread also intends to enter its critical section, it
sets its own flag to false and waits for the other thread to exit its critical section.
Thus, the mutual exclusion requirement is satisfied.
In this execution sequence,
T0 enters its critical section infinitely often and
T1 waits forever to enter its critical section.
Thus, this solution does not guarantee bounded waiting.
This solution ensures that when both Flag0 and Flag1 are true,
only one of T0 and T1 is allowed to enter its critical section.
Correct solution:
Correct solution is a combination of solutions (2) and (3). If both threads intend to enter their
critical sections, then turn is used to break the tie.
boolean Flag0 = false , Flag1= false;
int turn; // no initial value for turn is needed.
T0
while (true) {
Flag0= true; (1)
turn = 1; (2)
while ( Flag1&& (3)
Turn == 1) { ; }
critical section (4)
Flag0= false; (5)
non-critical section (6)
}
T1
while (true) {
Flag1= true; (1)
turn = 0; (2)
while ( Flag0&& (3)
Turn == 0) { ; }
critical section (4)
Flag1= false; (5)
non-critical section (6)
}

More Related Content

PPTX
Introduction To Entrepreneurship
PPTX
python project ppt.pptx
PPTX
Output primitives in Computer Graphics
PPT
Parallel computing
PPT
Memory management
PPTX
Patient monitoring system
PPTX
Rtos concepts
ODP
Python and MongoDB
Introduction To Entrepreneurship
python project ppt.pptx
Output primitives in Computer Graphics
Parallel computing
Memory management
Patient monitoring system
Rtos concepts
Python and MongoDB

What's hot (20)

PPTX
CPU Scheduling in OS Presentation
DOC
Time and space complexity
PPTX
SCHEDULING ALGORITHMS
PPTX
File system structure
PPT
Scheduling algorithms
PPTX
Cache coherence ppt
PPTX
Operating system critical section
PPTX
Semophores and it's types
PPT
Thrashing allocation frames.43
PPTX
Process management os concept
PPTX
daa-unit-3-greedy method
PPTX
Transport layer
PPTX
Single source Shortest path algorithm with example
PPTX
INTER PROCESS COMMUNICATION (IPC).pptx
PPTX
Message passing in Distributed Computing Systems
PPTX
Analysis and Design of Algorithms
PPT
Lamport’s algorithm for mutual exclusion
PPTX
SLOTTED ALOHA and pure aloha are the category of aloha
PPTX
Flow Control.pptx
CPU Scheduling in OS Presentation
Time and space complexity
SCHEDULING ALGORITHMS
File system structure
Scheduling algorithms
Cache coherence ppt
Operating system critical section
Semophores and it's types
Thrashing allocation frames.43
Process management os concept
daa-unit-3-greedy method
Transport layer
Single source Shortest path algorithm with example
INTER PROCESS COMMUNICATION (IPC).pptx
Message passing in Distributed Computing Systems
Analysis and Design of Algorithms
Lamport’s algorithm for mutual exclusion
SLOTTED ALOHA and pure aloha are the category of aloha
Flow Control.pptx
Ad

Viewers also liked (20)

PPT
Peterson Critical Section Problem Solution
PDF
Race conditions
PPT
Semaphores OS Basics
PDF
Semaphores
PPTX
Process synchronization in Operating Systems
ODP
openmp
PPT
Tutorial on Parallel Computing and Message Passing Model - C2
PDF
Open mp intro_01
PPTX
PPTX
Parallel architecture-programming
PPTX
Intro to OpenMP
PDF
OpenMP Tutorial for Beginners
PPTX
Parallel Programming
PPTX
Semaphores-R.D.Sivakumar
PPTX
Bootloader and bootloading
ODP
Semaphore
PPT
deadlock avoidance
PPTX
Operator Overloading and Scope of Variable
PPTX
Parallel computing
PDF
Operating Systems - Advanced Synchronization
Peterson Critical Section Problem Solution
Race conditions
Semaphores OS Basics
Semaphores
Process synchronization in Operating Systems
openmp
Tutorial on Parallel Computing and Message Passing Model - C2
Open mp intro_01
Parallel architecture-programming
Intro to OpenMP
OpenMP Tutorial for Beginners
Parallel Programming
Semaphores-R.D.Sivakumar
Bootloader and bootloading
Semaphore
deadlock avoidance
Operator Overloading and Scope of Variable
Parallel computing
Operating Systems - Advanced Synchronization
Ad

Similar to Critical section problem in operating system. (20)

PPTX
Lecture 5- Process Synchronization (1).pptx
DOCX
Critical section operating system
PPTX
Operating system 23 process synchronization
PPTX
Process synchronization
PPT
Section06-Syncopkojiojoijnnjkhuubgfffppt
PDF
operating System notes ipc monitor Processor and Process
PDF
Operating Systems - Process Synchronization and Deadlocks
PPTX
process synchronization topic of operating system
PPTX
Describing the Peterson solution sw.pptx
PPTX
5 Inter Process note Communication.pptx
PDF
CH05.pdf
PPTX
synchronization in operating system structure
PPTX
Mutual Exclusion using Peterson's Algorithm
PPTX
MODULE 3 process synchronizationnnn.pptx
PPTX
Lecture 9 - Process Synchronization.pptx
PPT
Process Synchronization -1.ppt
PPTX
Synchronization in os.pptx
PPT
Operating Systems - "Chapter 5 Process Synchronization"
PPT
Chapter three- Process Synchronization.ppt
PDF
Lecture 5- Process Synchonization_revised.pdf
Lecture 5- Process Synchronization (1).pptx
Critical section operating system
Operating system 23 process synchronization
Process synchronization
Section06-Syncopkojiojoijnnjkhuubgfffppt
operating System notes ipc monitor Processor and Process
Operating Systems - Process Synchronization and Deadlocks
process synchronization topic of operating system
Describing the Peterson solution sw.pptx
5 Inter Process note Communication.pptx
CH05.pdf
synchronization in operating system structure
Mutual Exclusion using Peterson's Algorithm
MODULE 3 process synchronizationnnn.pptx
Lecture 9 - Process Synchronization.pptx
Process Synchronization -1.ppt
Synchronization in os.pptx
Operating Systems - "Chapter 5 Process Synchronization"
Chapter three- Process Synchronization.ppt
Lecture 5- Process Synchonization_revised.pdf

Recently uploaded (20)

PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PPTX
OOP with Java - Java Introduction (Basics)
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PDF
composite construction of structures.pdf
DOCX
573137875-Attendance-Management-System-original
PDF
Well-logging-methods_new................
PDF
Digital Logic Computer Design lecture notes
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PDF
PPT on Performance Review to get promotions
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
Lesson 3_Tessellation.pptx finite Mathematics
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
PPT
Mechanical Engineering MATERIALS Selection
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PPTX
Internet of Things (IOT) - A guide to understanding
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
OOP with Java - Java Introduction (Basics)
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
composite construction of structures.pdf
573137875-Attendance-Management-System-original
Well-logging-methods_new................
Digital Logic Computer Design lecture notes
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPT on Performance Review to get promotions
bas. eng. economics group 4 presentation 1.pptx
Lesson 3_Tessellation.pptx finite Mathematics
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
CYBER-CRIMES AND SECURITY A guide to understanding
Mechanical Engineering MATERIALS Selection
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Internet of Things (IOT) - A guide to understanding
Operating System & Kernel Study Guide-1 - converted.pdf

Critical section problem in operating system.

  • 2. The Critical-Section A code segment that accesses shared variables (or other shared resources) and that has to be executed as an atomic action is referred to as a critical section. n processes competing to use some shared data. No assumptions may be made about speeds or the number of CPUs. Each process has a code segment, called Critical Section (CS), in which the shared data is accessed. Problem – ensure that when one process is executing in its CS, no other process is allowed to execute in its CS.
  • 3. informally, a critical section is a code segment that accesses shared variables and has to be executed as an atomic action. The critical section problem refers to the problem of how to ensure that at most one process is executing its critical section at a given time. Important: critical sections in different threads are not necessarily the same code segment! PROBLEM DESCRIPTION
  • 4. PROBLEM DESCRIPTION Formally, Mutual exclusion: when a thread is executing in its critical section, no other threads can be executing in their critical sections. Progress: if no thread is executing in its critical section, and if there are some threads that wish to enter their critical sections, then one of these threads will get into the critical section. Bounded waiting: after a thread makes a request to enter its critical section, there is a bound on the number of times that other threads are allowed to enter their critical sections, before the request is granted.
  • 5. CS Problem Dynamics (1) When a process executes code that manipulates shared data (or resource), we say that the process is in it’s Critical Section (for that shared data). The execution of critical sections must be mutually exclusive: at any time, only one process is allowed to execute in its critical section (even with multiple processors). So each process must first request permission to enter its critical section.
  • 6. CS Problem Dynamics (2) The section of code implementing this request is called the Entry Section (ES). The critical section (CS) might be followed by a Leave/Exit Section (LS). The remaining code is the Remainder Section (RS). The critical section problem is to design a protocol that the processes can use so that their action will not depend on the order in which their execution is interleaved (possibly on many processors).
  • 7. General structure of process while (true) { Entry-Section Critical section // contains accesses to shared variables or other resources. Exit-Section Non-critical section // a thread may terminate its execution in this section. }
  • 8. EXPLANATION  ENTRY SECTION:- The process will request to enter the critical section then a part of code decide wheather process can enter in the Critical Section on not.  CRITICAL SECTION:- A code segment that accesses shared resources and that has to be executed as an atomic action.  EXIT SECTION:- Locking section can be undone which is done in Critical Section.  REMAINDER SECTION:- Remaining part of the program .
  • 9. Solution to Critical-Section Problem There are 3 requirements that must stand for a correct solution: 1. Mutual Exclusion 2. Progress 3. Bounded Waiting We can check on all three requirements in each proposed solution, even though the non-existence of each one of them is enough for an incorrect solution.
  • 10. Solution to CS Problem – Mutual Exclusion 1. Mutual Exclusion – If process Pi is executing in its critical section, then no other processes can be executing in their critical sections. Whenever one process is entered in the critical section then there is no other process can enter in the critical section. Only one process can be execute at a time. That means access to the critical section must be mutually exclusive.
  • 11.  Critical sections better be focused and short.  Better not get into an infinite loop in there.  If a process somehow halts/waits in its critical section, it must not interfere with other processes. IMPLICATIONS:
  • 12. Solution to CS Problem– Progress 2. Progress – If no process is executing in its critical section and there exist some processes that wish to enter their critical section, then the selection of the process that will enter the critical section next cannot be postponed indefinitely: If only one process wants to enter, it should be able to. If two or more want to enter, one of them should succeed.
  • 13. Solution to CS Problem– Bounded Waiting Bounded Waiting – A bound must exist on the number of times that other processes are allowed to enter their critical sections after a process has made a request to enter its critical section and before that request is granted. • Assume that each process executes at a non zero speed. • No assumption concerning relative speed of the n processes.
  • 14. Types of solutions to CS problem Software Solutions :– Algorithms who’s correctness does not rely on any other assumptions. Hardware Solutions :– Rely on some special machine instructions. Operating System solutions :– Provide some functions and data structures to the programmer through system /library calls. Programming Language solutions :– Linguistic constructs provided as part of a language.
  • 15. Each process disables all interrupts just after entering in its critical section and re-enable all interrupts just before leaving critical section. With interrupts turned off the CPU could not be switched to other process. Hence, no other process will enter its critical and mutual exclusion achieved. Disabling Interrupts (Hardware Solution)
  • 16. Disabling interrupts is sometimes a useful technique within the kernel of an operating system, But it is not appropriate as a general mutual exclusion mechanism for users process. The reason is that it is unwise to give user process the power to turn off interrupts. Conclusion
  • 17. • In this solution, we consider a single, shared, (lock) variable, initially 0. • When a process wants to enter in its critical section, it first test the lock. • If lock is 0, the process first sets it to 1 and then enters the critical section. • If the lock is already 1, the process just waits until (lock) variable becomes 0. • Thus, a 0 means that no process in its critical section, and 1 means hold your horses - some process is in its critical section. Lock Variable (Software Solution)
  • 18. Drawbacks of software solutions Software solutions are very delicate . Processes that are requesting to enter their critical section are busy waiting (consuming processor time needlessly). If critical sections are long, it would be more efficient to block processes that are waiting.
  • 19. Initial Attempts to Solve Problem
  • 20. Threads T0 and T1 use variables flag[i] and flag[j] to indicate their intention to enter their critical section. A thread will not enter its critical section if the other thread has already signaled its intention to enter. boolean flag[i]=false , flag[j]=false ; Incorrect Solution 1 T1 while (true) { while (flag[ i ]) { ; } (1) flag[ j ] = true; (2) critical section (3) flag[ j ] = false; (4) non-critical section (5) } T0 while (true) { while (flag[ j ]) { ; } (1) flag[ i ] = true; (2) critical section (3) flag[ i ] = false; (4) non-critical section (5) } This solution does not guarantee mutual exclusion.
  • 21. T0 WHILE (TRUE) { WHILE (TURN != 0) { ; } (1) CRITICAL SECTION (2) TURN = 1; (3) NON-CRITICAL SECTION (4) } Global variable turn is used to indicate which thread is allowed to enter its critical section, i.e., the threads take turns entering their critical sections. The initial value of turn can be 0 or 1. int turn = 1; Incorrect Solution 2 T1 while (true) { while (turn != 1) { ; } (1) critical section (2) turn = 0; (3) non-critical section (4) } Thread T0 cannot exit the loop in (1) since the value of turn is 1 and turn will never be changed by T1.
  • 22. T0 while (true) { flag0= true; (1) while ( flag1) { (2) flag0= false; (3) while( flag1) {;} (4) flag0= true; (5) } critical section (6) Flag0= false; (7) non-critical section (8) } T1 while ( true ) { flag1= true; (1) while ( Flag0) { (2) flag1= false; (3) while( Flag0) {;} (4) flag1= true; (5) } critical section (6) flag1= false; (7) non-critical section (8) } Incorrect Solution 3 When one thread finds that the other thread also intends to enter its critical section, it sets its own flag to false and waits for the other thread to exit its critical section.
  • 23. Thus, the mutual exclusion requirement is satisfied. In this execution sequence, T0 enters its critical section infinitely often and T1 waits forever to enter its critical section. Thus, this solution does not guarantee bounded waiting. This solution ensures that when both Flag0 and Flag1 are true, only one of T0 and T1 is allowed to enter its critical section.
  • 24. Correct solution: Correct solution is a combination of solutions (2) and (3). If both threads intend to enter their critical sections, then turn is used to break the tie. boolean Flag0 = false , Flag1= false; int turn; // no initial value for turn is needed. T0 while (true) { Flag0= true; (1) turn = 1; (2) while ( Flag1&& (3) Turn == 1) { ; } critical section (4) Flag0= false; (5) non-critical section (6) } T1 while (true) { Flag1= true; (1) turn = 0; (2) while ( Flag0&& (3) Turn == 0) { ; } critical section (4) Flag1= false; (5) non-critical section (6) }