1. Describe in detail the consistency model of the distributed file system (GFS or AFS). Present the consistency model selected and how it was achieved through design. Clarity of presentation matters, so take your time to formulate your answer clearly.
2. Suppose you are provided a uniprocessor system with one gigabyte of memory and a 300 gigabyte disk. The OS on the machine has a demand paged virtual memory system with a local page replacement policy and a multi-level feedback queue (MLFQ) CPU scheduler. On the system there are two compute-intensive jobs running: Job-A and Job-B. Job-A has a working set of 50 gigabytes while Job-B has a working set of 100 megabytes. Suppose you left the system to execute for a while till it reached a steady state with both jobs running.
a. Which job will you expect to have a higher CPU scheduling priority from MLFQ scheduler?
b. Suppose you add the second CPU to system, how will this affect priorities of the jobs?
c. Suppose you switch from a local to the global page replacement policy, how does this alteration affect priorities of the jobs? Justify your answer and state any assumptions you make.
3. Consider organization of a UNIX file as represented by the inode. Suppose there are 13 direct block pointers and a singly, doubly and triply indirect pointer in each inode. Further, Suppose that system block size and the disk sector size are both 4K. If the disk block pointer is 32 bits, then:
a. Find the maximum file size supported by this system?
b. Supposing no information other than file inode is already in main memory, how many disk accesses are needed to access the byte in position 5Y3+100, where Y=1024?
4.a. Define the term “deadlock”. There are four conditions which should hold before deadlock is possible. Name them.
b. Outline the algorithm which detects whether there is a deadlock. The algorithm must be able to cope with multiple types of resources, each type having a limited number of units available.
c. When must the algorithm be invoked? The answer to this question might depend on system characteristics like the rate of resource requests, the granularity of resources, and the expected rate of deadlock. List three possible choices and discuss the criteria you will use to choose among them.
5. Assume an instruction takes 1 nanosecond to execute (on average), a page fault takes 20 microseconds of processor time, and it takes 300 microseconds of disk time to read or write a single page. Assume that on average, 1/2 of the pages are modified. What is the average number of instructions between page faults which will cause the disk to be busy doing page transfers all the time?
6. List three broad design goals of the ESX memory management system, and briefly outline how the design meets those goals.
7. Consider a system implementing multilevel feedback queue scheduling. What strategy could a computer user employ to maximize amount of CPU time allocated to the user’s process?
8. Your OS has a set of queues, each of which is protected by a lock. To enqueue or dequeue an item, a thread should hold the lock associated to the queue.
}
You require to implement an atomic transfer routine which dequeues an item from one queue and enqueues it on another. The transfer should appear to occur atomically. This is your first attempt:
void transfer(Queue *q1, Queue *q2) {
Item thing; /* the thing being transferred */
q1->lock.Acquire(); thing = q1->Dequeue(); if (thing != NULL){
q2->lock.Acquire(); q2->Enqueue(thing); q2->lock.Release();
} q1->lock.Release()
You might suppose that q1 and q2 never refer to the same queue. Also, suppose that you have a function Queue::Address which takes a queue and returns, as an unsigned integer, its address in memory.
a. Describe how using this implementation of transfer leads to deadlock;
b. Write a modified version of transfer which avoids deadlock and does the transfer atomically;
c. If the transfer does not require to be atomic, how may you modify your solution to achieve a higher degree of concurrency? Justify how your modification increases concurrency.