The document discusses solutions to the producer-consumer problem in concurrent programming. It describes how a shared counter variable can be incorrectly updated if the producer and consumer concurrently increment and decrement it. To prevent this race condition, only one process should manipulate the shared variable at a time. The document then introduces the concept of a critical section and Peterson's solution for allowing two processes to alternate access to a critical section while preserving mutual exclusion, progress, and bounded waiting.
This document covers important concepts of process synchronization like: Background, critical section problem, critical region, synchronization hardware, semaphores. It is beneficial for engineering students of aryabhatta knowledge university of bihar (A.K.U. Bihar).
This document covers important concepts of process synchronization like: Background, critical section problem, critical region, synchronization hardware, semaphores. It is beneficial for engineering students of aryabhatta knowledge university of bihar (A.K.U. Bihar).
Operating system 23 process synchronizationVaibhav Khanna
Processes can execute concurrently
May be interrupted at any time, partially completing execution
Concurrent access to shared data may result in data inconsistency
Maintaining data consistency requires mechanisms to ensure the orderly execution of cooperating processes
Illustration of the problem:Suppose that we wanted to provide a solution to the consumer-producer problem that fills all the buffers. We can do so by having an integer counter that keeps track of the number of full buffers. Initially, counter is set to 0. It is incremented by the producer after it produces a new buffer and is decremented by the consumer after it consumes a buffer
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
Operating system 23 process synchronizationVaibhav Khanna
Processes can execute concurrently
May be interrupted at any time, partially completing execution
Concurrent access to shared data may result in data inconsistency
Maintaining data consistency requires mechanisms to ensure the orderly execution of cooperating processes
Illustration of the problem:Suppose that we wanted to provide a solution to the consumer-producer problem that fills all the buffers. We can do so by having an integer counter that keeps track of the number of full buffers. Initially, counter is set to 0. It is incremented by the producer after it produces a new buffer and is decremented by the consumer after it consumes a buffer
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
The Indian economy is classified into different sectors to simplify the analysis and understanding of economic activities. For Class 10, it's essential to grasp the sectors of the Indian economy, understand their characteristics, and recognize their importance. This guide will provide detailed notes on the Sectors of the Indian Economy Class 10, using specific long-tail keywords to enhance comprehension.
For more information, visit-www.vavaclasses.com
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
Welcome to TechSoup New Member Orientation and Q&A (May 2024).pdfTechSoup
In this webinar you will learn how your organization can access TechSoup's wide variety of product discount and donation programs. From hardware to software, we'll give you a tour of the tools available to help your nonprofit with productivity, collaboration, financial management, donor tracking, security, and more.
We all have good and bad thoughts from time to time and situation to situation. We are bombarded daily with spiraling thoughts(both negative and positive) creating all-consuming feel , making us difficult to manage with associated suffering. Good thoughts are like our Mob Signal (Positive thought) amidst noise(negative thought) in the atmosphere. Negative thoughts like noise outweigh positive thoughts. These thoughts often create unwanted confusion, trouble, stress and frustration in our mind as well as chaos in our physical world. Negative thoughts are also known as “distorted thinking”.
The Art Pastor's Guide to Sabbath | Steve ThomasonSteve Thomason
What is the purpose of the Sabbath Law in the Torah. It is interesting to compare how the context of the law shifts from Exodus to Deuteronomy. Who gets to rest, and why?
This is a presentation by Dada Robert in a Your Skill Boost masterclass organised by the Excellence Foundation for South Sudan (EFSS) on Saturday, the 25th and Sunday, the 26th of May 2024.
He discussed the concept of quality improvement, emphasizing its applicability to various aspects of life, including personal, project, and program improvements. He defined quality as doing the right thing at the right time in the right way to achieve the best possible results and discussed the concept of the "gap" between what we know and what we do, and how this gap represents the areas we need to improve. He explained the scientific approach to quality improvement, which involves systematic performance analysis, testing and learning, and implementing change ideas. He also highlighted the importance of client focus and a team approach to quality improvement.
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptxEduSkills OECD
Andreas Schleicher presents at the OECD webinar ‘Digital devices in schools: detrimental distraction or secret to success?’ on 27 May 2024. The presentation was based on findings from PISA 2022 results and the webinar helped launch the PISA in Focus ‘Managing screen time: How to protect and equip students against distraction’ https://www.oecd-ilibrary.org/education/managing-screen-time_7c225af4-en and the OECD Education Policy Perspective ‘Students, digital devices and success’ can be found here - https://oe.cd/il/5yV
Instructions for Submissions thorugh G- Classroom.pptxJheel Barad
This presentation provides a briefing on how to upload submissions and documents in Google Classroom. It was prepared as part of an orientation for new Sainik School in-service teacher trainees. As a training officer, my goal is to ensure that you are comfortable and proficient with this essential tool for managing assignments and fostering student engagement.
2. A cooperating process is one that can affect or be
affected by other processes executing in the
system.
Concurrent access to shared data may result in
data inconsistency.
3. Previously we studied producer-consumer
problem to understand cooperating processes.
Our solution allowed at most BUFFER.SIZE - 1
items in the buffer at the same time (refer to old
slides).
To remedy this deficiency we can add an integer
variable counter, initialized to 0.
Counter is incremented every time we add a new
item to the buffer and is decremented every time
we remove one item from the buffer.
4. producer-consumer problem
Shared Data:
#define BUFFER_SIZE 10
int buffer [BUFFER_SIZE] ;
int in = 0 ,
int out = 0 ;
int count=0;
5. while (true)
/* produce an item and put in nextProduced
while (count == BUFFER_SIZE)
; // do nothing
buffer [in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
count++;
}
6. while (true)
{
while (count == 0)
; // do nothing
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
count--;
/*consume the item in nextConsumed
}
7. Although both producer and consumer routines are
correct separately, they may not function correctly
when executed concurrently.
For example the variable counter is currently 5 and
that the producer and consumer processes execute
the statements "counter++" and "counter—"
concurrently.
Following the execution of these two statements, the
value of the variable counter may be 4, 5, or 6!
.(correct result, though, is counter == 5)
8. In machine language count++ could be implemented as
MOV R1, COUNTER (R1=5)
INC R1 (R1=6)
count-- could be implemented as
MOV R2, COUNTER (R2=5)
DEC R2 (R2=4)
Consider this execution interleaving with “count = 5” initially:
producer execute MOV COUNTER, R1{count = 6 }
consumer execute MOV COUNTER, R2{count = 4}
What will be the value of Count=?
9. Notice that we have incorrect state "count == 4",
indicating that four buffers are full, when, in fact, five
buffers are full.
This happened because we allowed both processes to
manipulate the variable count concurrently.
When several processes access and manipulate the
same data concurrently and the outcome of the
execution depends on the particular order in which
the access takes place, is called a race condition.
To guard against the race condition, we need to
ensure that only one process at a time can be
manipulating the variable counter, hence the need for
processes synchronization.
10. In concurrent programming, a critical section is a
piece of code that accesses a shared resource (data
structure or device) that must not be concurrently
accessed by more than one thread of execution.
The critical-section problem is to design a protocol
that the processes can use to cooperate.
Each process must request permission to enter its
critical section. The section of code implementing this
request is the entry section. The critical section may
be followed by an exit section. The remaining code is
the remainder section.
11.
12. A solution to the critical-section problem must satisfy the
following three requirements:
Mutual Exclusion - If process Pi is executing in its critical
section, then no other processes can be executing in their
critical sections.
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 processes that
will enter the critical section next cannot be postponed
indefinitely.
13. Bounded Waiting - There exists a bound, or limit, 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.
14. A software-based solution to the critical-section problem
is known as Peterson's solution.
It is restricted to two processes that alternate
execution between their CS and remainder sections.
Peterson's solution may not work correctly on modern
architectures because of machine-language instructions
(like example of variable count in producer-consumer in
previous slides).
We present the solution because it provides a good
algorithmic description of solving the critical-section
problem and addresses the requirements of mutual
exclusion, progress, and bounded waiting requirements.
15. Processes are numbered P0 and P1.
Peterson's solution requires two data items to be
shared between the two processes:
◦ int turn;
◦ Boolean flag[2]
The variable turn indicates whose turn it is to enter
the critical section.
The flag array is used to indicate if a process is
ready to enter the critical section. flag[i] = true
implies that process Pi is ready!
16. To enter the critical section, process Pi first sets
flag[i] to be true and then sets turn to the value j,
thereby asserting that if the other process wishes
to enter the critical section, it can do so.
If both processes try to enter at the same time,
turn will be set to both i and j at roughly the same
time.
Only one of these assignments will last; the other
will occur but will be overwritten immediately.
17. do {
flag[i] = TRUE;
turn = j;
while ( flag[j] && turn == j);
CRITICAL SECTION
flag[i] = FALSE;
REMAINDER SECTION
} while (TRUE);
18. do {
flag[0] = TRUE;
turn = 1;
while ( flag[1] && turn == 1);
CRITICAL SECTION
flag[0] = FALSE;
REMAINDER SECTION
} while (TRUE);
do {
flag[1] = TRUE;
turn = 0;
while ( flag[0] && turn == 0);
CRITICAL SECTION
flag[1] = FALSE;
REMAINDER SECTION
} while (TRUE);
19. We now prove that this solution is correct. We need
to show that:
1. Mutual exclusion is preserved?
2. The progress requirement is satisfied?
3. The bounded-waiting requirement is met?