-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRoundRobinScheduler.java
40 lines (33 loc) · 1.4 KB
/
RoundRobinScheduler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package code.OSProject;
import java.util.*;
public class RoundRobinScheduler {
public static void main(String[] args) {
List<PCB> processes = new ArrayList<>();
processes.add(new PCB(1, 6));
processes.add(new PCB(2, 8));
processes.add(new PCB(3, 7));
processes.add(new PCB(4, 3));
int timeQuantum = 2;
roundRobin(processes, timeQuantum);
}
public static void roundRobin(List<PCB> processes, int timeQuantum) {
Queue<PCB> queue = new LinkedList<>(processes);
System.out.println("Gantt chart:-");
int c = 0;
while (!queue.isEmpty()) {
PCB currentProcess = queue.poll();
if (currentProcess.getBurstTime() > timeQuantum) {
System.out.println("Process "+currentProcess.getProcessID() + " executes from "
+ "time " + (c) + " to " + (c + timeQuantum));
currentProcess.setBurstTime(currentProcess.getBurstTime() - timeQuantum);
queue.offer(currentProcess);
c += timeQuantum;
} else {
System.out.println("Process " + currentProcess.getProcessID() + " executes from " +
"time " + (c) + " to " + (c + currentProcess.getBurstTime()));
c += currentProcess.getBurstTime();
}
}
System.out.println("[+] Process Finished Using Round Robin");
}
}