1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
BaLLatris [955]
3 years ago
11

Use semaphore(s) to solve the following problem. There are three processes: P1, P2, and P3. Each process Pi has a segment of cod

es Ci, i=1, 2, 3. These three processes are executed only once, i.e., no repeat or loop at all, and their executions can start at any time. Your goal is to ensure that the execution of C1, C2, and C3 must satisfy the following conditions:
a. If C1 is executed ahead of C2 and C3, C2 must be executed ahead of C3.
b. Otherwise, C1 must be executed after both C2 and C3 are executed. In this case, the order of C2 and C3's execution doesn't matter. One of the possible execution orders is demonstrated below. Obviously, two other possible sequences in time are C2, C3, C1 and C3, C2, C1.
Please write your algorithm level code for semaphore initialization and usage in each code segment. [Hint: no if statements should ever be used. All you need is some semaphore function calls surrounding C1, C2, and C3 and their initial values.]
Computers and Technology
1 answer:
Lisa [10]3 years ago
4 0

Answer:

See explaination

Explanation:

Here we will use two semaphore variables to satisfy our goal

We will initialize s1=1 and s2=1 globally and they are accessed by all 3 processes and use up and down operations in following way

Code:-

s1,s2=1

P1 P2 P3

P(s1)

P(s2)

C1

V(s2) .

P(s2). .

. C2

V(s1) .

P(s1)

. . C3

V(s2)

Explanation:-

The P(s1) stands for down operation for semaphore s1 and V(s1) stands for Up operation for semaphore s1.

The Down operation on s1=1 will make it s1=0 and our process will execute ,and down on s1=0 will block the process

The Up operation on s1=0 will unblock the process and on s1=1 will be normal execution of process

Now in the above code:

1)If C1 is executed first then it means down on s1,s2 will make it zero and up on s2 will make it 1, so in that case C3 cannot execute because P3 has down operation on s1 before C3 ,so C2 will execute by performing down on s2 and after that Up on s1 will be done by P2 and then C3 can execute

So our first condition gets satisfied

2)If C1 is not executed earlier means:-

a)If C2 is executed by performing down on S2 then s2=0,so definitely C3 will be executed because down(s2) in case of C1 will block the process P1 and after C3 execute Up operation on s2 ,C1 can execute because P1 gets unblocked .

b)If C3 is executed by performing down on s1 then s1=0 ,so definitely C2 will be executed now ,because down on s1 will block the process P1 and after that P2 will perform up on s1 ,so P1 gets unblocked

So C1 will be executed after C2 and C3 ,hence our 2nd condition satisfied.

You might be interested in
Nina visited an area that receives a large amount of precipitation during all twelve months and is typically warm year round. Th
slava [35]

Answer: Rainforest

Explanation:

A rainforest is an area that typically has tall, green trees and also has a high amount of rainfall. Rainforest can be found in the wet tropical uplands and lowlands. The largest rainforests can be seen in the Amazon River Basin.

Since the area visited by Nina has a large amount of precipitation during all twelve months, typically warm year round and has a large variety of organism diversity, then the biome thatcNina most likely visited is the rainforest.

7 0
3 years ago
Who was responsible for the development of the rocket motor?
kiruha [24]

Answer: Robert H. Goddard

Explanation: he developed and flew the first liquid-propellant rocket

6 0
3 years ago
Read 2 more answers
I have a question about this programming assignment. The outcome when the user puts in Taylor for guest one and Fernando for gue
ivolga24 [154]
Yes u need more brackets
4 0
3 years ago
Read 2 more answers
What will be the output of the following code?
saveliy_v [14]

Answer:

The correct answer to this question is given below in the explanation section.

Explanation:

The correct answer to this question is : 4.

When you run this program in Java. The output produce by this program is 4

The given code is:

import java.util.ArrayList;

public class arrayList7

{

public static void main(String[] args) {

ArrayList one = new ArrayList ();

Integer count=3;

count=count+1;

one.add(2);

one.add(count);

System.out.println(one.get(1));

}

}

This code store the value in ArrayList one variable. It first adds 2 at zero indexes and 4 at first index.  When you print the value at index one, you will get the output 4. because the count variable contains 4. If you want to print 2, then you specify the print statement that prints the value at index zero. eg.

System.out.println(one.get(0));

5 0
3 years ago
Contact Us Save
svetoff [14.1K]
All except drinking caffeinated beverages:)))
3 0
3 years ago
Other questions:
  • How do you fix this windows 7 screen​
    8·1 answer
  • 4. An outline is most like which of the following? (1 point)
    14·1 answer
  • A computer lab has two printers. Printer I handles 40% of all the jobs. Its printing time is Exponential with the mean of 2 minu
    8·1 answer
  • Which statement is true?
    5·2 answers
  • Which element would the search element be compared to first, if abinary search were used on the list above?
    6·1 answer
  • 3. Which of the following is called address operator?<br> a)*<br> b) &amp;<br> c).<br> d) %
    12·1 answer
  • What is the d/c b/n information rich and information poor society​
    13·1 answer
  • The process of bringing data or a file from one program to another is called
    5·2 answers
  • Hi there! I am writing a code to make a square using a drone, however I’m having trouble doing so. The website that I’m writing
    8·1 answer
  • Do network packets take the shortest route?
    14·2 answers
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!