Tuesday, 18 August 2015

Implementation of Priority Scheduling

Priority Based Scheduling

  • Each process is assigned a priority. Process with highest priority is to be executed first and so on.
  • Processes with same priority are executed on first come first serve basis.
  • Priority can be decided based on memory requirements, time requirements or any other resource requirement.



import java.util.Scanner;
class Priority
{
Scanner sc=new Scanner(System.in);
int MaxProcess=sc.nextInt();
int Pid[]=new int[MaxProcess];
int Burst[]=new int[MaxProcess];
int Wait[]=new int[MaxProcess];
int Trt[]=new int[MaxProcess];
int Arrival[]=new int[MaxProcess];
int Prior[]=new int[MaxProcess];
void input()
{
for(int i=0;i<MaxProcess;i++)
{
System.out.format("enter the process-id for this %d",(i+1));
Pid[i]=sc.nextInt();
System.out.format("enter the burst time for this p%d",Pid[i]);
Burst[i]=sc.nextInt();
System.out.format("enter the  priority for this p%d",Pid[i]);
Prior[i]=sc.nextInt();
System.out.format("enter the arrival time for this p%d",Pid[i]);
Arrival[i]=sc.nextInt();
}
       System.out.println("the process-id and burst time is:\n");
       System.out.println("process-id\t\tbursttime\t\tpriority\t\tarrival\n");
for(int i=0;i<MaxProcess;i++)
{
System.out.format("%d\t\t\t%d\t\t\t%d\t\t\t%d\n",Pid[i],Burst[i],Prior[i],Arrival[i]);
}
}
void turnAroundTime()
{
for(int i=0;i<MaxProcess;i++)
{
Trt[i]=Wait[i]+Burst[i];
}
}
void waitingTime()
{
int i,Total;
Wait[0]=0;
Total=Arrival[0];
for(i=1;i<MaxProcess;i++)
{
Total=Total+Burst[i-1];
Wait[i]=Total-Arrival[i];;
}
}
void displaySort()
{
System.out.println("after sorting on the basis of arrival time:");
float sum1=0,sum2=0;
System.out.println("p-id\tbursttime\tpriority\tarrival\twaittime\tturntime\n");
for(int i=0;i<MaxProcess;i++)
System.out.format("%d\t%d\t\t%d\t\t%d\t%d\t\t%d\n",Pid[i],Burst[i],Prior[i],Arrival[i],Wait[i],Trt[i]);
}
void display()
{
float sum1=0,sum2=0;
System.out.println("p-id\tbursttime\tpriority\tarrival\twaittime\tturntime\n");
for(int i=0;i<MaxProcess;i++)
System.out.format("%d\t%d\t\t%d\t\t%d\t%d\t\t%d\n",Pid[i],Burst[i],Prior[i],Arrival[i],Wait[i],Trt[i]);
for(int i=0;i<MaxProcess;i++)
{
sum1=sum1+Wait[i];
sum2=sum2+Trt[i];
}
System.out.format("waiting time is %f\n",sum1/MaxProcess);
System.out.format("totalrunaroundtime is %f\n",sum2/MaxProcess);
}

void sort()
{
for(int i=0;i<MaxProcess-1;i++)
{
  for(int j=i+1;j<MaxProcess;j++)
{
if(Prior[i]>Prior[j])
{
int temp1=Arrival[i];
Arrival[i]=Arrival[j];
Arrival[j]=temp1;

int temp2=Burst[i];
Burst[i]=Burst[j];
Burst[j]=temp2;

int temp3=Pid[i];
Pid[i]=Pid[j];
Pid[j]=temp3;
int temp4=Prior[i];
Prior[i]=Prior[j];
Prior[j]=temp4;

}
}
}
int temp=0;
int min=Arrival[0];
for(int i=1;i<MaxProcess;i++)
{
if(min>Arrival[i])
{
min=Arrival[i];
temp=i;
}
}
int f1=Arrival[temp];
int f2=Burst[temp];
int f3=Pid[temp];
int f4=Prior[temp];
for(int i=temp;i>0;i--)
{
Arrival[i]=Arrival[i-1];
Burst[i]=Burst[i-1];
Pid[i]=Pid[i-1];
}
Burst[0]=f2;
Arrival[0]=f1;
Pid[0]=f3;
Prior[0]=f4;
}
void drawGanttChart()
{

System.out.println();
for(int i=0;i<MaxProcess;i++)
{
  for(int j=0;j<Burst[i];j++)
System.out.print("|");

System.out.format(" p%d ",Pid[i]);
}
}

}
class PriorityTest
{
public static void main(String args[])
{
System.out.println("enter the total number of process:");
Priority p1=new Priority();
p1.input();
p1.sort();
p1.displaySort();
p1.waitingTime();
p1.turnAroundTime();
p1.display();
p1.drawGanttChart();
}
}

No comments:

Post a Comment