FCFS, SJF(java 구현)

7141 단어
import java.io.BufferedReader;

import java.io.InputStreamReader;

public class FCFSANDSJF {

  private  static int i;

  private  int j;

  private  int temp; 

  private int m[];

  private int n[];

  private int process_number;//   

  private int arrival_time[];//    

  private int services_time[];//    

  private int start_time[];//    

  private int completion_time[];//    

  private int turn_around_time[];//    

  private double add1;

  private double add2;

  private double add3;

  private double add4;

  private double right_turn_around_time[];

private void FCFS(){

 System.out.println("
===FCFS ===");  System.out.println("
:");  for(i=0;i<process_number;i++){   System.out.print(arrival_time[i]+"\t");  }  System.out.println("
:");  for(i=0;i<process_number;i++){   System.out.print(services_time[i]+"\t");  }  System.out.println("
:");  for(i=0;i<process_number;i++){   n[i]=arrival_time[i];   m[i]=i;  }  for(i=0;i<process_number-1;i++){   for(j=i+1;j<process_number;j++){    if(n[i]>n[j]){     temp=n[i];     n[i]=n[j];     n[j]=temp;     temp=m[i];     m[i]=m[j];     m[j]=temp;    }   }  }  start_time[m[0]]=arrival_time[m[0]];  for(i=1;i<process_number;i++){   if(arrival_time[m[i]]<start_time[m[i-1]]+services_time[m[i-1]])    start_time[m[i]]=start_time[m[i-1]]+services_time[m[i-1]];   else    start_time[m[i]]=arrival_time[m[i]];  }  for(i=0;i<process_number;i++){    System.out.print(start_time[i]+"\t");   }  System.out.println("
:");  for(i=0;i<process_number;i++){   completion_time[i]=start_time[i]+services_time[i];  }  for(i=0;i<process_number;i++){   System.out.print(completion_time[i]+"\t");  }  System.out.println("
:");  for(i=0;i<process_number;i++){   turn_around_time[i]=completion_time[i]-arrival_time[i];  }  for(i=0;i<process_number;i++){   System.out.print(turn_around_time[i]+"\t");  }  add1=0;  for(i=0;i<process_number;i++){   add1=add1+turn_around_time[i];  }  System.out.println("
:"+add1/process_number);  System.out.println("
:");  for(i=0;i<process_number;i++){   right_turn_around_time[i]=turn_around_time[i]*1.0/services_time[i];  }  for(i=0;i<process_number;i++){   System.out.print(right_turn_around_time[i]+"\t");  }  System.out.println("
:");  add2=0;  for(i=0;i<process_number;i++){   add2=add2+right_turn_around_time[i];  }  System.out.println(add2/process_number);   } private void SJF(){  System.out.println("
===SJF: ===");  System.out.println("
:");  for(i=0;i<process_number;i++){   System.out.print(arrival_time[i]+"\t");  }  System.out.println("
:");  for(i=0;i<process_number;i++){   System.out.print(services_time[i]+"\t");  }  System.out.println("
:");  m[0]=0;  for(i=0;i<process_number-1;i++){   if(arrival_time[i]>arrival_time[i+1])    m[0]=i+1;  }  for(i=0;i<process_number;i++){   n[i]=services_time[i];   m[i+1]=i;  }  for(i=0;i<process_number-1;i++){   for(j=i+1;j<process_number;j++){    if(n[i]>n[j]){     temp=n[i];     n[i]=n[j];     n[j]=temp;     temp=m[i+1];     m[i+1]=m[j+1];     m[j+1]=temp;    }   }  }  for(i=1;i<process_number+1;i++){   if(m[0]==m[i]){    for(j=i;j<process_number;j++){     m[j]=m[j+1];    }   }  }  start_time[m[0]]=arrival_time[m[0]];  for(i=1;i<process_number;i++){   if(arrival_time[m[i]]<start_time[m[i-1]]+services_time[m[i-1]])    start_time[m[i]]=start_time[m[i-1]]+services_time[m[i-1]];   else    start_time[m[i]]=arrival_time[m[i]];  }  for(i=0;i<process_number;i++){    System.out.print(start_time[i]+"\t");  }  System.out.println("
:");  for(i=0;i<process_number;i++){   completion_time[i]=start_time[i]+services_time[i];  }  for(i=0;i<process_number;i++){   System.out.print(completion_time[i]+"\t");  }  System.out.println("
:");  for(i=0;i<process_number;i++){   turn_around_time[i]=completion_time[i]-arrival_time[i];  }  for(i=0;i<process_number;i++){   System.out.print(turn_around_time[i]+"\t");  }  add3=0;  for(i=0;i<process_number;i++){   add3=add3+turn_around_time[i];  }  System.out.println("
:"+add3/process_number);  System.out.println("
:");  for(i=0;i<process_number;i++){   right_turn_around_time[i]=turn_around_time[i]*1.0/services_time[i];  }  for(i=0;i<process_number;i++){   System.out.print(right_turn_around_time[i]+"\t");  }  System.out.println("
:");  add4=0;  for(i=0;i<process_number;i++){   add4=add4+right_turn_around_time[i];  }  System.out.println(add4/process_number); } public static void main(String[] args) throws Exception{  System.out.println(" :");  FCFSANDSJF wo=new FCFSANDSJF();  BufferedReader buf=null;  buf=new BufferedReader(new InputStreamReader(System.in));  String str1=null;  str1=buf.readLine();  wo.process_number=Integer.parseInt(str1);  wo.arrival_time=new int[wo.process_number];  wo.services_time=new int[wo.process_number];  wo.start_time=new int[wo.process_number+1];  wo.completion_time=new int[wo.process_number+1];  wo.turn_around_time=new int[wo.process_number+1];  wo.right_turn_around_time=new double[wo.process_number+1];  wo.m=new int[wo.process_number+1];  wo.n=new int[wo.process_number];  String str=null;  String str2=null;  System.out.println("
");  for(i=0;i<wo.process_number;i++){   str=buf.readLine();   wo.arrival_time[i]=Integer.parseInt(str);  }  System.out.println("
");  for(i=0;i<wo.process_number;i++){   str2=buf.readLine();   wo.services_time[i]=Integer.parseInt(str2);  }  System.out.println(" "+wo.process_number);  System.out.println("
");  for(i=0;i<wo.process_number;i++){   System.out.print(wo.arrival_time[i]+"\t");  }  System.out.println("
:");  for(i=0;i<wo.process_number;i++){   System.out.print(wo.services_time[i]+"\t");  }  System.out.println("
====== 【0】========");  System.out.println("
====== 【1】========");  System.out.println("
====== 【2】========");  String str3=null;  str3=buf.readLine();  i=Integer.parseInt(str3);  while(i!=2){   switch(i){   case 0:    wo.FCFS();    break;   case 1:    wo.SJF();    break;   default:    System.out.println("
, ");   }   System.out.println("
====== 【0】========");   System.out.println("
====== 【1】========");   System.out.println("
====== 【2】========");   str3=buf.readLine();   i=Integer.parseInt(str3);  }  System.out.println(" !"); }  }

좋은 웹페이지 즐겨찾기