Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void SimulateRR(ArrayList<FakeProcess> processes, ArrayList<FakeDevice> devices, long timeQuantum) {
- if (timeQuantum <= 0)
- return;
- for (FakeDevice item : devices) {
- item.setCurrentProcess(null);
- }
- ArrayList<Long> remainBurstTime = new ArrayList<>(processes.size());
- for (int i = 0; i < processes.size(); i++) {
- processes.get(i).setWaitingTime(0);
- processes.get(i).setTurnaroundTime(0);
- remainBurstTime.add(processes.get(i).getBurstTime());
- }
- long totalTime = 0;
- int totalRemain = processes.size();
- while (totalRemain != 0) {
- for (int i = 0; i < processes.size(); i++) {
- if (remainBurstTime.get(i) <= timeQuantum && remainBurstTime.get(i) > 0 && processes.get(i).canCaptureDevices()) {
- processes.get(i).captureDevices();
- totalTime += remainBurstTime.get(i);
- remainBurstTime.set(i, 0L);
- {
- totalRemain--;
- processes.get(i).setWaitingTime(totalTime - processes.get(i).getBurstTime());
- processes.get(i).setTurnaroundTime(totalTime);
- processes.get(i).releaseDevices();
- }
- } else if (remainBurstTime.get(i) > 0 && processes.get(i).canCaptureDevices()) {
- processes.get(i).captureDevices();
- remainBurstTime.set(i, remainBurstTime.get(i) - timeQuantum);
- totalTime += timeQuantum;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement