Sale!

Assignment 3 Process Synchronization

$35.00 $21.00

Category: You will Instantly receive a download link for .zip solution file upon Payment || To Order Original Work Click Custom Order?

Description

5/5 - (3 votes)

Question 1:
You’ve been hired by XYZ University to build a controller for their elevator system. The
university has one elevator that starts from the ground floor and goes to the top floor and
then comes back to the ground floor (and so on). You must make a thread for the elevator that
will run until there are no more users waiting for the elevator on any of the floors or inside the
elevator. You will begin this thread in the start function provided.
A user is represented by a thread – when the user gets to the elevator, the user calls
“GoingFromTo(int fromFloor, int toFloor)”. The thread should not return until the elevator has
gone from the fromFloor to the toFloor. For simplicity, you can assume the elevator holds only
20 people.
Extra Instructions for Help:
Think about the problem this way: A user starts when he/she reaches the elevator. All Users
wait on a floor until the elevator reaches that floor. The elevator then signals all the waiting
users on that floor to get on and all the waiting users inside the elevator that want to get out on
that floor. You will find that having two semaphores per floor will help you execute this easily –
One for users waiting inside and one for the users waiting outside the elevator.
See the part1.h and part1.c for more instructions
Question 2:
You have been hired by the Metropolitan Transit authority (MTA) to design controller of their
automated trains around the city in a circular loop. The stations in this loop are numbered 1
through N. Each station has a boarding area where passengers wait for the train in a queue. To
enter the boarding area, passengers need to scan their ticket on an automated machine.
Similarly, just before entering the train passengers scan their tickets on a 2nd scanning
machine. The scanned information includes the source station and destination station of the
passenger. Suppose that the capacity of each train is 50 (i.e., only 50 passengers can be in the
train at any given point in time). There are 5 trains running in the loop with an inter-arrival time
of 5 minutes. When a train arrives at the station passengers waiting in the queue board the
train. If the train becomes full, it does not take further passengers and the remaining
passengers in the queue wait for the next train. A train stops at a given station only, if any of the
following two conditions hold: There are one or more passengers waiting for the train in the
boarding area of the given station. There are one or more passengers who need to get off from
the train at the given station (i.e., these passengers have declared the given station as their
destination station). Each passenger is represented by a thread. The passenger thread
shouldn’t exit until the passenger has reached the destination station.
Extra Instructions for Help:
If you have done part 1, you will realize that you can approach this question in the same way.
However, now instead of one medium (Elevator), this time you have 5 mediums (trains). The
execution plan remains the same.
Question 3
You have been hired by Uber to design the operating systems of their automated cars running
in the downtown area. Specifically, Uber has asked you to design a system that enables their
cars to safely cross intersections with traffic lights. This system includes a traffic light controller
and car controller. As depicted in the Figure below, suppose that all intersections in the given
downtown area have traffic lights controlling 4-way traffic. The traffic flow is North-bound,
South-bound, East-bond, and West-bound. Each road on the intersection has 4 lanes (2 lanes
for North-bound traffic and 2 lanes for South-bound traffic) or (2 lanes for East-bound traffic
and 2 lanes for Westbound traffic). A car arriving at the intersection may go straight, or turn left
or right. Following rules need to be followed for crossing the intersection.
1. There are four traffic lights, one for each of the North-bound, South-bound, East-bound,
and West-bound Road. Only one traffic light becomes green at any given time; the
remaining traffic light will be red.
2. A car going straight or turning left must be in the left lane.
3. A car turning right must be in the right lane.
4. A car going straight or turning right cannot cross the intersection if the corresponding
traffic light is red and must wait for the traffic light to go green. The traffic light for going
straight or turning right becomes green at the same time.
5. A car may turn left on Red light if there is no car waiting in front of it for green traffic light.
6. A traffic light remains green until 5 waiting cars from each lane cross the intersection or
turn right. In case there are less than 5 waiting cars in each lane, the traffic light
becomes red as soon as all the waiting cars cross the intersection or turn right.
7. Each car is represented by a thread. The car thread shouldn’t exit until the car has
crossed the intersection or made the turn.
Submission Instructions:
1. Please follow the print format as stated in the code files.
2. You only need to submit cpp and header (.h) files for all three questions. There will be
total 6 files.
3. Make a zip file containing your submission files and name it A3_.zip where is
your roll number e.g A3_21100115.zip