Tuesday, October 29, 2013

Process Scheduling in object oriented way (JAVA)

Code:
/*main class*/

package com.process.application;
import com.process.priority.*;
import com.process.rr.*;
import com.process.sjf.*;
import com.scheduling.fcfs.*;

public class ProcessScheduling {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
      
ViewUI view = new ViewUI();
//initialization of the program
int k[]=view.getBurstTime();
int size=view.returnSize();
int[] burstTime1=new int[size];
int[] burstTime2=new int[size];
int[] burstTime3=new int[size];
int[] burstTime4=new int[size];
burstTime1=view.burstTime.clone();
burstTime2=view.burstTime.clone();
burstTime3=view.burstTime.clone();
burstTime4=view.burstTime.clone();
int priority[]=view.getPriority();
int processSize=view.returnSize();
int qt=view.getQuantumTime();
FirstComeFirstServe fcfs = new FirstComeFirstServe(burstTime1,processSize);
fcfs.display();
ShortestJobFirst sjf = new ShortestJobFirst(burstTime2,processSize);
sjf.display();
PrioritySorting ps = new PrioritySorting(burstTime3,priority,processSize);
ps.display();
RoundRobin rr= new RoundRobin(processSize);
rr.get(burstTime4,qt);
rr.round();
rr.display();
}
}



/* View controlling input and subsequent output*/

package com.process.application;

import java.util.Scanner;

public class ViewUI {

public int size;
public int[] burstTime;
public int getSize(){
Scanner sc = new Scanner(System.in);
System.out.print("Enter the number of process:");
int size=sc.nextInt();
this.size=size;
return size;
}
public int returnSize(){
return size;
}
public int [] getBurstTime(){
int size=getSize();
int burstTime[]=new int[size];
Scanner sc=new Scanner(System.in);
for(int i=0;i<size;i++){
        System.out.print("Enter burst time of P"+(i+1)+":");
        burstTime[i]=sc.nextInt();
       }
this.burstTime=burstTime;
return burstTime;
}
public int[] getPriority(){
int priority[]=new int[size];
Scanner sc=new Scanner(System.in);
for(int i=0;i<size;i++){
        System.out.print("Enter priority of P"+(i+1)+":");
        priority[i]=sc.nextInt();
       }
return priority;
}
public int getQuantumTime(){
Scanner sc = new Scanner(System.in);
System.out.print("Enter the Quantam Time for Round Robin:");
int qt=sc.nextInt();
return qt;
}
}

/*package for fcfs*/
package com.scheduling.fcfs;

public interface FCFS {
   int runningTime[]= new int[0];
   public int getTurnAroundTime();
public void display();
}



/* Firscome FirstServe Class and function*/

package com.scheduling.fcfs;

public class FirstComeFirstServe implements FCFS {

int runTime[]= new int[0];
int size=0;
// @Override
public FirstComeFirstServe(int rt[], int size){
this.runTime = rt;
this.size=size;
}
public void display(){
System.out.println("---------------------------------------");
System.out.println("*****First Come First Serve Scheduling*****");
for (int i=0;i<size;i++){
System.out.println("P"+(i+1)+" "+runTime[i]);
}
System.out.println("Average Turnaround Time:"+getTurnAroundTime());
}

// @Override
public int getTurnAroundTime() {
int sum=0;
for (int i=0;i<size;i++){
for (int j=0;j<=i;j++){
sum=sum+runTime[j];
}
}
// TODO Auto-generated method stub
return (sum/size);
}

   
}







/*SJF interface*/

package com.process.sjf;

public interface SJF {
   int runningTime[]= new int[0];
public void sort();
public float meanCalculation();
public void display();
}



/*Shrotest Job First Implementation */

package com.process.sjf;



public class ShortestJobFirst implements SJF {

int runTime[]= new int[0];
int size=0;
// @Override
public ShortestJobFirst(int rt[], int size){
this.runTime = rt;
this.size=size;
}
@Override
public void sort() {
// TODO Auto-generated method stub
for (int i=0;i<size-1;i++){
for (int j=i+1;j<size;j++){
if(runTime[i]>runTime[j]){
int k=runTime[j];
runTime[j]=runTime[i];
runTime[i]=k;
}
}
}
}

@Override
public float meanCalculation() {
int sum=0;
for (int i=0;i<size;i++){
for (int j=0;j<=i;j++){
sum=sum+runTime[j];
}
}
// TODO Auto-generated method stub
return (sum/size);
}

@Override
public void display() {
// TODO Auto-generated method stub
sort();
System.out.println("---------------------------------------");
System.out.println("*****Shortest Job First Scheduling*****");
for (int i=0;i<size;i++){
System.out.println("RunTime" + ":"+runTime[i]);
}
System.out.println("Average Turnaround time:" + meanCalculation());
}

}



/* priority interface*/
package com.process.priority;



public interface Priority {
int runningTime[]= new int[0];
int priority[] =  new int[0];
public int meanCalculation();
public void display();
public void sort();
}



/*Priority class implementation*/
package com.process.priority;

public class PrioritySorting implements Priority {

int runTime[]= new int[0];
int priority[] = new int[0];
int size=0;
// @Override
public PrioritySorting(int rt[],int priority[], int size){
this.runTime = rt;
this.priority=priority;
this.size=size;
}
public void display(){
System.out.println("---------------------------------------");
System.out.println("*****Priority Scheduling*****");
sort();
int turnAroundTime=meanCalculation();
for (int i=0;i<size;i++){
System.out.println("BurstTime:"+runTime[i]+ " "+"Priority:"+priority[i]);
}
System.out.println("Average Turnaround Time:"+turnAroundTime);
}
@Override
public void sort(){
for (int i=0;i<size-1;i++){
for (int j=1;j<size;j++){
if(priority[i]<priority[j]){
int k=priority[i];
int l=runTime[i];
priority[i]=priority[j];
runTime[i]=runTime[j];
priority[j]=k;
runTime[j]=l;
}
}
}
}
@Override
public int meanCalculation() {
int sum=0;
for (int i=0;i<size;i++){
for (int j=0;j<=i;j++){
sum=sum+runTime[j];
}
}
System.out.println("Total Time = " + sum );
return (sum/size);
}
}

/*RoundRobin Class and its implementation*/

package com.process.rr;

import java.util.Scanner;



public class RoundRobin
{
           Scanner sc=new Scanner(System.in);
           int[] bur,rem,wai,ta;
           int size,q,b=0,t=0,flag=0;
        public RoundRobin(int size)
           {
                       this.size=size;
                       bur=new int[size];
                       wai=new int[size];
                       ta=new int[size];
                       rem=new int[size];
           }
          public void get(int[] rrbur,int qq)
           {
                      
                  bur=rrbur;
                  rem=rrbur;
                  q=qq;
           }
         public void round()
           {
        System.out.println("---------------------------------------");
         System.out.println("*****Round Robin Scheduling*****");
       
                       do{
                                   flag=0;
                                   for(int i=0;i<size;i++)
                                   {
                                               if(rem[i]>=q)
                                               {
                                                           System.out.print("P"+(i+1)+"\t");
                                                           for(int j=0;j<size;j++)
                                                           {
                                                                       if(j==i){
                                                                                   rem[i]=rem[i]-q;}
                                                                       else if(rem[j]>0){
                                                                                   wai[j]+=q;}
                                                           }
                                               }
                                               else if(rem[i]>0)
                                               {
                                                           System.out.print("P"+(i+1)+"\t");
                                                           for(int j=0;j<size;j++)
                                                           {
                                                                       if(j==i)
                                                                                   rem[i]=0;
                                                                       else if(rem[j]>0)
                                                                                   wai[j]+=rem[i];
                                                           }
                                               }
                                   }
                                   for(int i=0;i<size;i++)
                                               if(rem[i]>0)
                                                           flag=1;
                       }while(flag==1);
                       for(int i=0;i<size;i++)
                                   ta[i]=wai[i]+bur[i];
           }
           public void display(){
                   System.out.println("");
                       System.out.println("\nProcess\tTurnaround");
                       for(int i=0;i<size;i++)
                       {
                                   System.out.println("P"+(i+1)+"\t"+wai[i]+"\t"+ta[i]);
                                   b+=wai[i];
                                   t+=ta[i];
                       }
                      
                       System.out.println("Average Turnaround time:"+(t/size));
           }

}