Solutions to HW 1 and 2 COS 431, Spring 07 3.1 Describe the differences among short-term, medium-term, and long-term scheduling. Answer: The short-term scheduler selects from the ready processes the next process to run and gives it the CPU. The long-term scheduler selects from the pool of processes that are waiting on disk and loads the selected process(es) into memory. These processes have not yet begun their execution. The medium-term scheduler takes processes that are currently in memory and selects those to be swapped out to disk. These processes will be swapped back in at a later point. This is done to improve process mix or because of memory requirements (i.e., overcommitted and needs to free up memory). A primary difference is in the frequency of their execution. The short-term scheduler must select a new process quite often. Long-term is used much less often since it handles placing jobs in the system and may wait a while for a job to finish before it admits another one. 3.2 The kernel saves the state of the currently executing process into its Process Control Block (PCB ). The state includes the values of all registers, process ID, memory information, list of open files, and so forth. It then reloads the context of a previously suspended process and sets the instruction counter to the restored processes next instruction. 3.4 The output will be Parent: Value = 5. Once the child process has forked, it is no longer connected to the parent (i.e., the child will have all of the variables and values of the parent when the fork is complete, but they will no longer share memory), so the update to the variable ‘value’ does not effect the parent. 3.5 What are the benefits and detriments of each of the following? Consider both the systems and the programmers’ levels. a. Symmetric and asymmetric communication: The primary advantage at the programmer level is that neither process has to block its execution which can result in better performance. The disadvantage is asymmetric communication is more difficult to program since the programmer must guarantee that the message arrive at the receiver when it is needed. At the system level, asymmetric is more complicated since it requires kernel-level buffering. (Do not concern yourself with this question for the exam). d. Fixed and variable sized messages: Fixed-sized messages are easier to implement at the kernel-level but require slightly more effort on the part of the programmer. Variable sized messages are somewhat more complex for the kernel but somewhat easier for the programmer. (Do not concern yourself with this question for the exam). 3.6 /*This program solves exercise 3.6 */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int main(int argc, char *argv[]) { pid_t pid; int i, a, b, n, fib; if (argc != 2) exit(0); n = atoi(argv[1]); if (n < 0) {printf(“Error in Input\n”) ; exit(0) ; } /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed\n"); exit(-1); } else if (pid == 0) { /* I am child process */ if (n == 1) printf("0\n"); else if (n == 2) printf("0, 1\n"); else if (n > 2) {a = 0; b = 1; for (i = 3; i < n; i++) {fib = a + b; printf("%d,",fib); a = b; b = fib; } printf("%d\n",a+b); } } else { /* parent process */ wait(NULL); } } Note: I am not concerned with whether you know how to generate fionacci numers but rather that you know how to get the parameter from the command line and how to fork a child process. 5.2 Discuss how the following pairs of scheduling criteria conflict in certain settings. a. CPU utilization and response time b. Average turnaround time and maximum waiting time c. I/O device utilization and CPU utilization Answer: • CPU utilization and response time: CPU utilization is increased if the overheads associated with context switching is minimized. The context switching overheads could be lowered by performing context switches infrequently. This could however result in increasing the response time for processes. • Average turnaround time and maximum waiting time: Average turnaround time is minimized by executing the shortest tasks first. Such a scheduling policy could however starve long-running tasks and thereby increase their waiting time. • I/O device utilization and CPU utilization: CPU utilization is maximized by running long-running CPU-bound tasks without performing context switches. I/O device utilization is maximized by scheduling I/O-bound jobs as soon as they become ready to run, thereby incurring the overheads of context switches. Process Burst Time Priority P1 10 3 P2 1 1 P3 2 3 P4 1 4 P5 5 2 The processes are assumed to have arrived in the order P1, P2, P3, P4, P5, all at time 0. a. Draw four Gantt charts illustrating the execution of these processes using FCFS, SJF, a nonpreemptive priority (a smaller priority number implies a higher priority), and RR (quantum = 1) scheduling. b. What is the turnaround time of each process for each of the scheduling algorithms in part a? c. What is the waiting time of each process for each of the scheduling algorithms in part a? d. Which of the schedules in part a results in the minimal average waiting time (over all processes)? FCFS 0 1 2 3 4 5 6 7 8 9 P1 1 2 P2 P4 3 4 11 P2 SJF 0 10 5 P3 6 7 8 9 10 12 P3 11 13 14 15 P4 12 13 16 17 18 19 P5 14 15 16 17 18 19 P1 P5 Non-preemptive Priority 0 1 2 P2 3 4 5 6 7 8 9 10 P5 11 12 13 14 15 16 P1 17 P3 18 19 P4 RR Quantum = 1 0 1 2 3 4 5 6 7 8 9 10 11 12 b. Turnaround time P1 P2 P3 P4 P5 FCFS RR SJF Priority 10 11 13 14 19 19 2 7 4 14 19 1 4 2 9 16 1 18 19 6 c. Waiting time (turnaround time minus burst time) P1 P2 P3 P4 P5 FCFS RR SJF 0 10 11 13 14 9 1 5 3 9 9 0 2 1 4 Priority 6 0 16 18 1 13 14 15 16 17 18 19 d. Shortest Job First (3.2 ms). 5.5 Which of the following scheduling algorithms could result in starvation? a. First-come, first-served b. Shortest job first c. Round robin d. Priority Answer: Shortest job first and priority-based scheduling algorithms could result in starvation. 5.6 Consider a variant of the RR scheduling algorithm where the entries in the ready queue are pointers to the PCBs. a. What would be the effect of putting two pointers to the same process in the ready queue? b. What would be the major advantages and disadvantages of this scheme? c. How would you modify the basic RR algorithm to achieve the same effect without the duplicate pointers? Answer: a. In effect, that process will have increased its priority since by getting time more often it is receiving preferential treatment. b. The advantage is that more important jobs could be given more time, in other words, higher priority in treatment. The consequence, of course, is that shorter jobs will suffer. c. Allot a longer amount of time to processes deserving higher priority. In other words, have two or more quantums possible in the Round-Robin scheme. 5.7 Consider a system running ten I/O-bound tasks and one CPU-bound task. Assume that the I/Obound tasks issue an I/O operation once for every millisecond of CPU computing and that each I/O operation takes 10 milliseconds to complete. Also assume that the context switching overhead is 0.1millisecond and that all processes are long-running tasks. What is the CPU utilization for a round-robin scheduler when: a. The time quantum is 1 millisecond b. The time quantum is 10 milliseconds Answer: • The time quantum is 1 millisecond: Irrespective of which process is scheduled, the scheduler incurs a 0.1 millisecond context-switching cost for every context-switch. This results in a CPU utilization of 1/1.1 * 100 = 91%. • The time quantum is 10 milliseconds: The I/O-bound tasks incur a context switch after using up only 1 millisecond of the time quantum. The time required to cycle through all the processes is therefore 10*1.1 + 10.1 (as each I/O-bound task executes for 1millisecond and then incur the context switch task, whereas the CPU-bound task executes for 10 milliseconds before incurring a context switch). The CPU utilization is therefore 20/21.1 * 100 = 94%. 5.8 Consider a system implementing multilevel feedback queue scheduling. What strategy can a computer user employ to maximize the amount of CPU time allocated to the user’s process? Answer: The program could maximize the CPU time allocated to it by not fully utilizing its time quantums. It could use a large fraction of its assigned quantum, but relinquish the CPU before the end of the quantum, thereby increasing the priority associated with the process. 5.10 Explain the differences in the degree to which the following scheduling algorithms discriminate in favor of short processes: a. FCFS b. RR c. Multilevel feedback queues Answer: a. FCFS—discriminates against short jobs since any short jobs arriving after long jobs will have a longer waiting time. b. RR—treats all jobs equally (giving them equal bursts of CPU time) so short jobs will be able to leave the system faster since they will finish first. c. Multilevel feedback queues—work similar to the RR algorithm— they discriminate favorably toward short jobs. 5.13 The traditional UNIX scheduler enforces an inverse relationship between priority numbers and priorities: The higher the number, the lower the priority. The scheduler recalculates process priorities once per second using the following function: Priority = (Recent CPU usage / 2) + Base where base = 60 and recent CPU usage refers to a value indicating how often a process has used the CPU since priorities were last recalculated. Assume that recent CPU usage for process P1 is 40, process P2 is 18, and process P3 is 10. What will be the new priorities for these three processes when priorities are recalculated? Based on this information, does the traditional UNIX scheduler raise or lower the relative priority of a CPU-bound process? Answer: The priorities assigned to the processes are 80, 69, and 65 respectively. The scheduler lowers the relative priority of CPU-bound processes.