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
John works as an associate at a construction company. His job is to draft contracts for suppliers. Before he prints the contract
worty [1.4K]

Answer:

The correct answer would be option B, Track changes.

Explanation:

John's job is to make drafts and print them. Before printing them, he sends the copy to the manager to get it checked for any mistakes. John's manager can give suggestions and edit the document where he thinks he needs to do. So he can use the Track changes feature to give his comments or suggestions as well as to edit the document. He will simple open the document, open the Review tab, and Click on the Track changes or comments icon. Here he can click on the text which he wants to edit, and there will be a pan which will keep track of the changes and mark them with red, so that John knows where he has made the changes or given the suggestions.

7 0
3 years ago
Main topics: Basic Java program
bazaltina [42]

Answer:

Explanation:

import java.util.Scanner;

public class pitcherValues {

   public static void main(String[] args) {

       String firstName, lastName;

       int earnedRuns, inningsPitched;

       double ERA;

      Scanner in = new Scanner(System.in);

     System.out.println("Pitchers First Name is?");

     firstName = in.nextLine();

     System.out.println("Pitchers Last Name is?");

     lastName = in.nextLine();

     System.out.println("How many runs did the Pitcher earn?");

     earnedRuns = in.nextInt();

     System.out.println("How many innings did the Pitcher Pitch?");

     inningsPitched = in.nextInt();

     ERA = (earnedRuns * 9) / inningsPitched;

     System.out.println(firstName + " " + lastName + " has an ERA of " + ERA);

   }

}

3 0
3 years ago
Hello, please help write code in C++. Primary U.S. interstate highways are numbered 1-99. Odd numbers (like the 5 or 95) go nort
krok68 [10]

Answer:

Please Find attached  c++ code file.

Explanation:

  1. Ask User to enter highway number.
  2. Check if highway is primary or auxiliary.
  3. Check if highway number is even / odd.
  4. Find Primary high number for an auxiliary highway

Check if highway is primary or auxiliary.

Use if condition to check if the entered number is in between 0 and 99.If it's true than the highway is primary otherwise it's an auxiliary highway.

Check if highway number is even / odd.

To check if a number is even or odd we use simple modulo formula. In mathematics modulo returns the reminder of a division operation on two numbers.If modulo of a number and 2 is equal to zero than that number is an even number other wise its an odd number.

(Any number ) mod 2 = 0

Find Primary high number for an auxiliary highway

As mentioned in the question last two digits of highway number is the number of primary high.

To Find last two digits of number apply modulo operation on highway number and 100. it will provide last two digits of number specifying our primary highway.

Download cpp
3 0
4 years ago
The labor market shows the:
Bad White [126]
<span>The labor market shows the </span><span>supply of available workers in relation to available work. The labor market is made up of </span>people who are working or looking for work. Those who are actively searching for work are calculated in the labor market as well. Those who are able to work but are not searching for work are not part of the labor market. 
8 0
3 years ago
Which statement is false? Select one: a. Function printf does not care how large the array it is printing is. b. Function scanf
dusya [7]

Answer:

Option A

Explanation:

Because each function has specific amount of space allocated by default on the stack, so it cares about the length of the array being printed by it. By default the space is up to 100 kb but this size can be increased by setting it manually.

Option B is correct answer because scanf takes input from user until first space is hit.

6 0
4 years ago
Other questions:
  • A user found that their personal data had been exfiltrated from their computer by a malicious program that they clicked on sever
    12·1 answer
  • The structure of a language has five different components: __________ refers to the smallest unit of meaning in a language, wher
    12·1 answer
  • Should you configure if you want to limit access to files with certain classifications within a folder to a specific security gr
    13·1 answer
  • I just downloaded an update for my laptop. Now, it doesn't give me a notification when the battery is low, and it just shuts off
    6·1 answer
  • Of the three types of mutating malware, what type changes its internal code to one of a set number of predefined mutations whene
    9·1 answer
  • What tag is used to contain information about a web page, such as the title and related pages?
    12·1 answer
  • In Word, the mailing list is known as the ​
    12·1 answer
  • D Question 9 What is output by the following?
    5·1 answer
  • arrange the following numbers from the highest to the lowest. ⅔,-7,0. no file or photo​
    8·1 answer
  • F. Practical Questions
    7·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!