faq
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
faq [2021/03/16 15:09] – jxu | faq [2021/03/17 14:26] – jxu | ||
---|---|---|---|
Line 167: | Line 167: | ||
algorithm is a greater challenge than we have the tools to solve. | algorithm is a greater challenge than we have the tools to solve. | ||
- | **Answer to Question 19**: You need to carefully read and study all the material listed | + | **Answer to Question 19**: You also need to carefully read and study all the material listed |
- | in the Answer to Question 18 above. As shown in the Wednesday March 3 Lecture 14 video recording which explains the 2011N W21 Assignment 2 Example posted on eClass, the performance of each algorithm for any workload, that is, the Average Waiting Time, and the Average Turnaround Time can all be calculated with pen and paper step-by-step. | + | in the Answer to Question 18 above. As shown in the Wednesday March 3 Lecture 14 video recording which explains the 2011N W21 Assignment 2 Example posted on eClass, the performance of each algorithm for any workload, that is, the Average Waiting Time, and the Average Turnaround Time, can all be calculated |
- | Note that, ANYTHING THAT CAN BE CALCULATED WITH PEN AND PAPER STEP-BY-STEP, | + | Note that, ANYTHING THAT CAN BE CALCULATED |
there is no need to get anything "to work in parallel", | there is no need to get anything "to work in parallel", | ||
- | parallel programming tools such as " | + | parallel programming tools such as " |
+ | |||
+ | **Question 20**: Because my group started working on Assignment 2 rather late, now it looks almost certain that we won’t be able to finish designing, and implementing any working Java program that is able to compute the average waiting times and average turnaround times for any given workload using all of the six scheduling algorithms as specified in Assignment 2. Yet we don’t want to completely give up on Assignment 2. Can you give us some advice on what we might consider doing for the programming part of Assignment 2 to at least get something done for the programming part, taking into consideration that we only have a few days left before the deadline to work on the assignment? | ||
+ | |||
+ | **Answer to Question 20**: As a first step, you may try to write the code only for a //**very basic and simple Java program**//, | ||
+ | |||
+ | * Each process //**only executes once on the CPU**// before terminating; | ||
+ | * Each process //**never does any I/O**// on any I/O device; | ||
+ | * All processes have the //**same single CPU Computation Time**//; | ||
+ | * Only the simplest //**C1. Nonpreemptive First-Come, First-Served (FCFS) CPU Scheduling**// | ||
+ | |||
+ | Note that in this very basic and simple system: | ||
+ | - There is only one single process queue – the ready queue, which is a FCFS queue; | ||
+ | - Whenever a process arrives, it is entered at the end of the ready queue; | ||
+ | - Whenever the CPU becomes available, the Nonpremptive FCFS CPU Scheduler always removes from the ready queue the process which is at the front of the ready queue, and allows that process to start executing on the CPU; | ||
+ | - Once a process starts executing on the CPU, it is never preempted, and always executes for the full duration of its CPU Computation Time before terminating. | ||
+ | - Whenever a process terminates, the CPU becomes available again. | ||
+ | |||
+ | Write the code so that the program allows the user to enter as input parameters the following: | ||
+ | * the number of processes; | ||
+ | * the Arrival Time of each process; | ||
+ | * the CPU Computation Time for each process; | ||
+ | |||
+ | |||
+ | Then try to write code which computes the Average Waiting Times and Average Turnaround Times for any set of user input parameters above. | ||
+ | |||
+ | **Once you have got the code for the very basic and simple Java program described above working, then try to gradually add additional features, in order of difficulty**, | ||
+ | - First try to allow processes to have // | ||
+ | - Then try using //**C2. Nonpreemptive Shortest-Job-First (SJF) Scheduling**// | ||
+ | - Then try using //**C4. Nonpreemptive Priority Scheduling**// | ||
+ | - Then try using some of the // | ||
+ | - Then try to allow each process to make //**one single request to perform I/O**// for some I/O Time on one single I/O device after completing its first CPU Computation Time, while for CPU Scheduling only use one of the // | ||
+ | - Then try to allow each process to make //**one single request to perform I/O**// for some I/O Time on one single I/O device after completing its first CPU Computation Time, while for CPU Scheduling only use one of the // | ||
+ | - … | ||
+ | |||
+ | (Add additional features one-by-one in this gradualist fashion, and just try to add as many features as possible before the assignment deadline.) | ||
+ | |||
+ | When adding each additional feature, write the code so that the program allows the user to enter as input parameters the following: | ||
+ | * the number of processes; | ||
+ | * the Arrival Time of each process; | ||
+ | * the Priority of each process; | ||
+ | * the Sequence of CPU Computation Time and I/O Time Requirements for each process; | ||
+ | |||
+ | When adding each additional feature, write code which computes the Average Waiting Times and Average Turnaround Times for | ||
+ | any set of user input parameters above. |
faq.txt · Last modified: 2021/04/26 22:20 by jxu