Semaphores
Semaphores
points)
You have been hired by the CS Division to write code to help synchronize a
professor and his/her students during office hours. The professor, of course, wants
to take a nap if no students are around to ask questions; if there are students who
want to ask questions, they must synchronize with each other and with the
professor so that (i) only one person is speaking at any one time, (ii) each student
question is answered by the professor, and (iii) no student asks another question
before the professor is done answering the previous one. You are to write four
procedures: AnswerStart(), AnswerDone(), QuestionStart(), and QuestionDone().
The professor loops running the code: AnswerStart(): give answer: AnswerDone().
AnswerStart() doesn't return until a question has been asked. Each student loops
running the code: QuestionStart(): ask question: QuestionDone(). QuestionStart()
does not return until it is the student's turn to ask a question. Since professors
consider it rude for a student not to wait for an answer, QuestionDone() should not
return until the professor has finished answering the question.
For problem 2: