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?