Computer System Assignment

Q.1. Consider a computer system with a single processor with a single core. There are two processes to run in the system: P1 and P2. Process P1 has a life cycle as follows: CPU burst time of 15 units, followed by I/O burst time of minimum 10 units, followed by CPU burst time of 10 units. Process P2 has the following life cycle: CPU burst time of 10 units, followed by I/O burst time of minimum 5 units, followed by CPU burst time of 15 units. Now answer the following questions:

  1. Considering a single programmed operating system, what is the minimal total time required to complete executions of the two processes? You should explain your answer with a diagram.
  2. Now considering a multiprogrammed operating system, what is the minimal total time required to complete executions of the two processes? You should explain your answer with a diagram.
  3. Throughput is defined as the number of processes (tasks) completed per unit time. Following this definition, calculate the throughputs for parts a) and b) above. How does multiprogramming affect throughput? Explain your answer.

Q.2. Suppose that a multiprogrammed system has a load of N processes with individual execution times of t1, t2, …,tN. Answer the following questions:

  1. How would it be possible that the time to complete the N processes could be as small as: maximum (t1, t2, …,tN)?
  2. How would it be possible that the total execution time, T > t1+ t2+ …+tN? In other words, what would cause the total execution time to exceed the sum of individual process execution times?

Q.3. Consider a computer running in the user mode. It switches to the monitor mode (also known as kernel mode) whenever an interrupt or trap occurs, jumping to the address determined from the interrupt vector. A malicious user took advantage of a certain serious loophole in the computer's protection mechanism, by which the user could run his/her own program in the monitor mode! This can have disastrous consequences.

  1. What could have the user possibly done to achieve this?
  2. What disastrous consequences could it cause?
  3. Suggest a remedy for the loophole.

Q.4. Consider a preemptive operating system where processes have priorities and a running process gets preempted (i.e., forced to leave the CPU) as soon as a higher priority process is ready to run. The life cycle of a process, other than the very first process, begins with a "spawn" by another process and ends with either a regular "exit" by the process or a "terminate (process_id)" command by another process of equal or higher priority.

Each process is assigned an initial priority at spawn time and this priority remains unchanged during the entire life cycle. There are system resources, both hardware and software, for which a process can block if the resource is not free. A process can also be

suspended by another process of

equal or higher priority through the call "suspend (process_id)''. A suspended process is resumed by the call "resume (process_id)''. Note that a process can be in any state (i.e., running, blocked or ready) when suspended.

Processes communicate with one another via "send'' and "receive'' message passing primitives. "Receive'' is always blocking, i.e., the calling process blocks if the message is not available. "Send'' is always non-blocking. Illustrate the complete life-cycle of a process with the help of a process state transition diagram

Q.5. When there is a context switch from one process to another, the OS kernel invokes the function ContextSwitch which saves the context of the currently executing process into its PCB and then inserts the process to an appropriate queue (i.e., ready queue or a blocked queue). It is necessary that ContextSwitch is atomic (i.e., unbreakable: either done or not-done; nothing in between). Explain the following:

  1. Why must ContextSwitch be atomic?
  2. How can it be made atomic in practice?