Java 抢占式计划程序循环无法正常工作
下面是我的代码,我正在为抢先优先级调度编写一个程序。应检查流程的到达时间,如果到达时间小于或等于前一流程的到达时间,则应与前一流程的优先级进行比较,优先级越低优先级越高。请。指出哪里出了问题Java 抢占式计划程序循环无法正常工作,java,preemptive,Java,Preemptive,下面是我的代码,我正在为抢先优先级调度编写一个程序。应检查流程的到达时间,如果到达时间小于或等于前一流程的到达时间,则应与前一流程的优先级进行比较,优先级越低优先级越高。请。指出哪里出了问题 public void checkPP(int disp,int p[],int at[],int es[],int pr[],int n ) { int rem_es[] = new int[n]; //remaining execution size int current_tim
public void checkPP(int disp,int p[],int at[],int es[],int pr[],int n )
{
int rem_es[] = new int[n]; //remaining execution size
int current_time = disp;//disp has the time taken by CPU to switch between processes i.e.start and stop a process
int is_completed[] = new int[n]; //completed execution
int completed = 0;
int st=disp;//start time
int ft[]=new int[6];//finish time
int wt[]=new int[6];//wait time
int tt[]=new int[6]; //turnaround time
int totaltt=0, totalwt=0;//total turnaround time and total wait time
float avgtt=0,avgwt=0;//average turnaround time and average wait time
System.out.println("\n");
System.out.println(" PP:" );
for (int i = 0 ; i < n ; i++)
rem_es[i] = es[i];
for(int i = 0 ; i < n ; i++)
is_completed[i] = 0;
current_time = 0; // Current time
// until all of them are not done.
while(completed !=n )
{
int idx = -1;
int mx = 100;
for (int i = 0 ; i < n; i++)
{
if(at[i] <= current_time && is_completed[i]==0 )
{
if(pr[i] < mx)
{
mx = pr[i];
idx = i;
}
if(idx != -1) {
if(rem_es[idx] == es[idx]) {
st = current_time+disp;
rem_es[idx]-=1;
current_time+=1+disp;
}
else{
rem_es[idx]-=1;
current_time+=1;
st=current_time;
}
if (rem_es[idx]==0)
{
tt[idx]=ft[idx]-at[idx];
wt[idx]=tt[idx]-es[idx];
completed++;
is_completed[idx]=1;
}
}
else
current_time++;
System.out.println(" " +"T" + st +":" + "p"+p[idx]+ "(" + pr[idx] +")" + rem_es[idx]+ current_time);
}
}
}
System.out.println("\n");
System.out.println(" Process Turnaround Time Waiting Time" );
for (int i=0; i<n; i++)
{ System.out.println(" " + "p" + p[i] + "\t\t" + tt[i] + "\t\t "+ wt[i]);
}
public void checkPP(int disp,int p[],int at[],int es[],int pr[],int n)
{
int rem_es[]=new int[n];//剩余执行大小
int current_time=disp;//disp具有CPU在进程之间切换所需的时间,即启动和停止进程
int是_completed[]=新int[n];//已完成执行
int completed=0;
int st=disp;//开始时间
int ft[]=新的int[6];//完成时间
int wt[]=新int[6];//等待时间
int tt[]=new int[6];//周转时间
int totaltt=0,totalwt=0;//总周转时间和总等待时间
float avgtt=0,avgwt=0;//平均周转时间和平均等待时间
System.out.println(“\n”);
System.out.println(“PP:”);
对于(int i=0;imy output is
T1:p1(4)
T3:p2(2)
T5:p1(4)
T6:p1(4)
T7:p3(3)
T9:p1(4) <-----instead of completing p3, its picking p1 even though priority of p1 is lesser than p3
T10:p3(3)
T11:p1(4)
T12:p4(3)
T14:p1(4)
T15:p5(1)
T17:p1(4)
T18:p5(1)
T19:p1(4)
T20:p5(1)
T21:p1(4)
T22:p5(1)
T23:p1(4)
T24:p5(1)