ariestamirra

rrrrrr

May 18th, 2014
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.52 KB | None | 0 0
  1. package com.raizal.roundRobin;
  2.  
  3. import Schedulling.CpuScheduler;
  4. import java.util.ArrayList;
  5. import Schedulling.Process;
  6.  
  7. public class RoundRobin extends CpuScheduler{
  8.    
  9.     private int quantumTime = 0;
  10.  
  11.     public int getQuantumTime() {
  12.         return quantumTime;
  13.     }
  14.  
  15.     public void setQuantumTime(int quantumTime) {
  16.         this.quantumTime = quantumTime;
  17.     }
  18.        
  19.     public RoundRobin(int quantumTime) {
  20.         this.quantumTime = quantumTime;
  21.     }    
  22.  
  23.     public RoundRobin() {
  24.     }        
  25.  
  26.     public ArrayList<Process> getQueue(){
  27.         ArrayList<Process> result = new ArrayList<Process>(getListProcess());
  28.        
  29.         for (int i = 0; i < result.size(); i++) {
  30.             for (int j = i+1; j < result.size(); j++) {
  31.                 if(result.get(i).getArrivalTime()>result.get(j).getArrivalTime()){
  32.                     Process temp = result.get(i);
  33.                     result.set(i, result.get(j));
  34.                     result.set(j, temp);
  35.                 }
  36.             }
  37.         }
  38.        
  39.         return result;
  40.     }
  41.    
  42.    
  43.     public Process getNextProcess(ArrayList<Process> processList,Process before){
  44.         if(getRemainingBurstTime()>0 || processList.size()<=0){
  45.             int index = processList.indexOf(before);
  46.             do{
  47.                 index++;
  48.                 if(index>processList.size()-1 || index<0){
  49.                     index=0;
  50.                 }
  51.             }while(processList.get(index).getCurrentBurstTime()<=0);
  52.             return processList.get(index);
  53.         }
  54.         return null;
  55.     }
  56.    
  57.     @Override
  58.     protected void execute() {
  59.         time = 0;
  60.         int currentQuantumTime = quantumTime;
  61.         ArrayList<Schedulling.Process> queue;
  62.         Process before = null;
  63.         while (getRemainingBurstTime() > 0) {
  64.            
  65.             if (getCurrent()!=null && (getCurrent().getCurrentBurstTime() <= 0 || currentQuantumTime<=0)) {                
  66.                 before = getCurrent();
  67.                 detach();
  68.                 currentQuantumTime = quantumTime;
  69.             }
  70.  
  71.             if (getCurrent() == null) {                
  72.                 attach(getNextProcess(getQueue(),before));                
  73.             }
  74.  
  75.             if (getCurrent() != null) {
  76.  
  77.                 getCurrent().doProcess();
  78.             }
  79.  
  80.             queue = getProcessQueue(getCurrent());
  81.             queueWait(queue);
  82.             time++;
  83.             currentQuantumTime--;
  84.         }
  85.         detach();
  86.     }        
  87.        
  88. }
Advertisement
Add Comment
Please, Sign In to add comment