Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Schedulling.roundRobin;
- import Schedulling.CpuScheduler;
- import java.util.ArrayList;
- import Schedulling.Process;
- /**
- *
- * @author Mirra Ariesta Amalia Adiba
- */
- public class RoundRobin extends CpuScheduler{
- private int quantumTime = 0;
- public int getQuantumTime() {
- return quantumTime;
- }
- public void setQuantumTime(int quantumTime) {
- this.quantumTime = quantumTime;
- }
- public RoundRobin(int quantumTime) {
- this.quantumTime = quantumTime;
- }
- public RoundRobin() {
- }
- public ArrayList<Process> getQueue(){
- ArrayList<Process> result = new ArrayList<Process>(getListProcess());
- for (int i = 0; i < result.size(); i++) {
- for (int j = i+1; j < result.size(); j++) {
- if(result.get(i).getArrivalTime()>result.get(j).getArrivalTime()){
- Process temp = result.get(i);
- result.set(i, result.get(j));
- result.set(j, temp);
- }
- }
- }
- return result;
- }
- public Process getNextProcess(ArrayList<Process> processList,Process before){
- if(getRemainingBurstTime()>0 || processList.size()<=0){
- int index = processList.indexOf(before);
- do{
- index++;
- if(index>processList.size()-1 || index<0){
- index=0;
- }
- }while(processList.get(index).getCurrentBurstTime()<=0);
- return processList.get(index);
- }
- return null;
- }
- @Override
- protected void execute() {
- time = 0;
- int currentQuantumTime = quantumTime;
- ArrayList<Schedulling.Process> queue;
- Process before = null;
- while (getRemainingBurstTime() > 0) {
- if (getCurrent()!=null && (getCurrent().getCurrentBurstTime() <= 0 || currentQuantumTime<=0)) {
- before = getCurrent();
- detach();
- currentQuantumTime = quantumTime;
- }
- if (getCurrent() == null) {
- attach(getNextProcess(getQueue(),before));
- }
- if (getCurrent() != null) {
- getCurrent().doProcess();
- }
- queue = getProcessQueue(getCurrent());
- queueWait(queue);
- time++;
- currentQuantumTime--;
- }
- detach();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment