CMSC 412 Final
(Spring 2003)
1.)
(25 points) Define (or
explain) the following terms:
a)
IPC
b)
Bakery Algorithm
c)
Contiguous Allocation
d)
Mutual Exclusion
e)
Encapsulation
2.)
(20 points) Variable
Geometry Disk Drives
a)
Explain how there can be a performance (speed of access)
advantage for using variable geometry disk drives vs. having a fixed number of
sectors/track for all tracks.
b)
If a variable geometry disk with 10 heads and 60 tracks has
three zones of 20 tracks each with 20, 30, and 40 sectors/track, what is the
capacity of the drive in sectors?
3.)
(15 points) Show the routing table entries for the following
situation. The default route is through
host C. Route all traffic to 128.8.128.* through host A, route all other
traffic to 128.8.*.* to host B.
Destination
|
Net Mask
|
Next Hop
|
|
|
|
|
|
|
|
|
|
|
|
|
4.)
(30 Points) Implement
a hybrid synchronization interface that uses a busy wait with atomic-swap and
semaphores to provide mutual exclusion.
The implementation should call atomic-swap at most 100,000 times and if
it has not acquired mutex, it should use a semaphore to block. Show the fields needed in the supplied
struct.
struct {
} hybridMutex;
Lock(struct hybridMutex *m)
UnLock(struct hybridMutex *m)
5.)
(20 Points)
Filesystems
a)
Sally Smart coder claims that the size field in the
GOSFSfileNode is not needed because she can tell how big a file is by looking
at the block numbers (she used a block number 0 to indicate if a block was not
used) to tell how many are valid. Why
is she wrong?
b)
ACLs in project 5 were limited to 4 entries. Explain how you could extend GOSFS to
support ACLs with up to 1024 entries without adding any fields in the
GOSFSfileNode. Describe where the info would be stored and how it would be
located.
} aclEntry;
6.)
(20 points) When using UNIX style password files, it is not a
major problem if normal users are able to read the password file. Explain in
detail why this is the case.
7.)
(20 points) If your
project 3 had used a separate page table for the kernel (rather than the low
half of the user process table), how would you have to change the
Copy_From_User function?