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));
}
}