55 lines
2.0 KiB
TeX
55 lines
2.0 KiB
TeX
% HOMEWORK #2
|
|
% re: processes
|
|
%
|
|
\documentstyle[12pt,fullpage]{article}
|
|
\pagestyle{empty}
|
|
\begin{document}
|
|
|
|
\begin{center}
|
|
{\large\bf BACI Project for an OS Course}
|
|
\end{center}
|
|
|
|
\vspace*{0.3in}
|
|
|
|
This is problem 6.16 on page 213 of the textbook, made specific
|
|
to Ben-Ari Concurrent Pascal. Write a program containing a monitor
|
|
{\bf AlarmClock}. The monitor must have an integer variable {\bf
|
|
theClock} (initialization to zero) and two procedures:
|
|
\begin{itemize}
|
|
\item PROCEDURE {\bf Tick}; \\
|
|
increments {\bf theClock} each time that it is called. It can do other
|
|
things, like SIGNALC, if needed, but no WAITCs.
|
|
\item PROCEDURE {\bf Alarm}({\bf id} : INTEGER; {\bf delta} : INTEGER); \\
|
|
blocks caller having identifier {\bf id} for at least {\bf delta}
|
|
ticks of {\bf theClock}.
|
|
\end{itemize}
|
|
You may endow the monitor with any other variables that it needs. The
|
|
monitor should be able to accommodate up to 5 simultaneous alarms.
|
|
|
|
The main program should have two procedures outside of the monitor:
|
|
\begin{itemize}
|
|
\item PROCEDURE {\bf Ticker}; \\
|
|
calls {\bf Tick} in a repeat-forever loop.
|
|
\item PROCEDURE {\bf Thread}({\bf id} : INTEGER; {\bf myDelta} : INTEGER); \\
|
|
calls {\bf Alarm} in a repeat-forever loop.
|
|
\end{itemize}
|
|
|
|
The main program cannot have any variables. The main program should
|
|
start 4 concurrent threads: {\bf Thread(100,3)},
|
|
{\bf Thread(200,7)},
|
|
{\bf Thread(300,10)}, and
|
|
{\bf Ticker}. Output should occur for each of the following events:
|
|
\begin{enumerate}
|
|
\item At each clock tick, show the values of {\bf theClock}.
|
|
\item When any thread either waits or reawakens from a wait, show the
|
|
id of the thread, the name of the condition on which it is waiting,
|
|
and the time ({\bf theClock}) at which the wait occurs.
|
|
\item When a condition is signalled, show the name of the condition
|
|
being signalled and the time at which the signal occurs.
|
|
\end{enumerate}
|
|
Hand in a listing of the program and output showing each
|
|
{\bf Thread} copy enduring at least one alarm cycle. You may find the
|
|
{\bf tee} command helpful in this regard.
|
|
|
|
\end{document}
|