CMSC 412 Sample
Final
1.)
(20 points) Define (or
explain) the following terms:
a)
Display (screen) protection
b)
encapsulation (in computer networks)
c)
server
d)
remote procedure call (RPC)
e)
monitor (as a synchronization abstraction)
2.)
(20 points) In project #5, the waitpid routine blocked
waiting for a process to terminate. A
useful extension to this routine would be to have waitpid return the
exit code
from the process when it terminates. If
you added this extension, what would be required to ensure that a
waitpid would
be able to get the exit status of a process even if the waitpid call
occurs after the process exits. What
would happen if waitpid was never
called or called more than once per exited process?
3.)
(25 points) The mailboxes that you implemented as part
of project #5 provided a way to send messages between processes. In the project, you only sent messages
between one sender and one receiver per mailbox. For this question,
consider
the case of multiple producer (send) and consumer (receive) processes
all
sharing a single mailbox. A message
produced by any producer may be consumed by any consumer.
a)
If all messages sent are small, the same size, and
item potent
(don’t depend on other messages) are semaphores required to synchronize
access
to the mailbox? Explain your answer.
b)
Now consider the case where messages are small and
fixed size,
but not item potent. Instead, the first
message of a group indicates how many messages are part of the same
object
being produced. Is synchronization
required for the code shown below? If
so, add the required semaphore operations and initial values for the
semaphores
used.
Produce(int
dest, int count, char **msgs)
{
int
i;
char
header[MSG_SIZE];
header[0]
= (char) count;
MQ_send(dest,
header);
for
(i=0; i < count; i++) {
MQ_send(dest, msgs[i], MSG_SIZE);
}
}
Consume(int
src, int *count, char **msgs)
{
int
i;
char
header[MSG_SIZE];
MQ_receive(src,
header, MSG_SIZE);
*count
= (int) header[0];
for
(i=0; i < *count; i++) {
MQ_send(src, msgs[i], MSG_SIZE);
}
}
4.)
(20 points) Consider scheduling the following
tasks (which all
arrive at time zero in the order P1 to P4) using:
FCFS, non-preemptive priority (lower
priority number is higher priority), RR (quantum = 1).
|
Process
|
Burst Time
|
Priority
|
|
P1
|
10
|
1
|
|
P2
|
2
|
3
|
|
P3
|
1
|
4
|
|
P4
|
5
|
2
|
a)
What is the turnaround time of each process for
each of the
three scheduling algorithms?
|
Process
|
FCFS
|
Priority
|
RR
|
|
P1
|
|
|
|
|
P2
|
|
|
|
|
P3
|
|
|
|
|
P4
|
|
|
|
b)
Define waiting time (in the context of scheduling
algorithms)?
c)
Why might a single system want to have both
non-preemptive
priority scheduling for some processes and round robin for other?
5.)
(20 Points) Network
Routing
a)
Describe one advantage for each of source routing
and
hop-by-hop routing.
b)
Describe one advantage of per-packet routing and
one advantage
of per-session routing.
6.)
(25 points) Consider writing a filesystem for a
write once
read many (WORM) drive. On this type of
drive, it is possible to write a sector only once.
Assume that you must write sectors in order starting from sector
0 and that you can identify the last sector written.
a)
Describe how you might store directory and file
information
assuming that files and directories are only created and never deleted.
b)
Describe a way to permit files to be deleted from
directories
(depending on your answer to part a this may or may not require major
changes)
c)
Assuming that price and performance were identical
to magnetic
drives, give one reason why you still might want to use a WORM drive.
7.)
(20 points) Security
a)
Why is computer security only as good as the
physical security
of the computer itself?
b)
Why would a user want to have mutual
authentication?
c)
Why does presenting a user name and a password not
provide
mutual authentication?