Chapter 5 Project 2 – Sleeping TA Problem solved

$25.00

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

Description

5/5 - (4 votes)

A university computer science department has a teaching assistant (TA) who helps undergraduate
students with their programming assignments during regular office hours. The TA’s office is rather small
and has room for only one desk with a chair and computer. There are three chairs in the hallway outside
the office where students can sit and wait if the TA is currently helping another student. When there are
no students who need help during office hours, the TA sits at the desk and takes a nap. If a student arrives
during office hours and finds the TA sleeping, the student must awaken the TA to ask for help. If a
student arrives and finds the TA currently helping another student, the student sits on one of the chairs in
the hallway and waits. If no chairs are available, the student will come back at a later time.
Using Pthreads (section 4.4.1), begin by creating n students. Each student, as well as the TA, run as a
separate thread. Student threads alternate between programming for a period of time and seeking help
from the TA. If the TA is available, they obtain help. Otherwise, they either sit in a chair in the hallway,
or if no chairs are available, resume programming and seek help at a later time. If a student arrives and
notices that the TA is sleeping, the student notifies the TA using a semaphore. When the TA finishes
helping a student, the TA checks to see if there are students waiting for help in the hallway. If so, the TA
helps each of these students in turn. If no students are present, the TA returns to napping.
The TA and each student thread print their state and the relevant student ids whenever an action is taken.
The program will request the total number of students working on the programming assignment at the
start of the program. Also, to simulate students programming –as well as the TA providing help to a
student- the program will have the appropriate threads sleep for a random period of time.
You will receive a starter version of the code that contains a completed main function and a function to
handle the random sleep/waiting times. You will need to complete the code to handle the TA thread and
the student threads.
You are expected to submit your code for this project at the end of the class period in whatever state that
it is in. You will have until Tuesday 11/20 @ 11:59pm to submit the code with any adjustments or
changes that you want. Note that you should work with a partner while in class, but you are both
expected to submit your own version of the code to blackboard.
Compile with the following: gcc sleepTA.c –o sleepTA –lpthread -lrt