import javax.swing.*;
public class PorTurnos {
/*ESTA CLASE RECIBE UN VECTOR CON TODOS LOS DATOS QUE SE NECESITAN PARA
EMPEZAR A EJECUTAR EL ALGORITMO, EN ESTE SE NECESITA DAR UN QUANTUM DE TIEMPO
YA QUE EL ALGORITMO EJECUTA CADA PROCESO EN ESE TIEMPO Y PASA AL SIGUIENTE PROCESO
Y ASI SUCESIVAMENTE HASTA LLEGAR AL ULTIMO PROCESO Y VUELVE AL INICIO Y CUANDO
EL PROCESO YA TERMINA, SE VA SALIENDO*/
private int []TRafaga;
private int []RealTRafaga;
private int tamano=0;
private int Quantum=4;
private int []NewTRafaga =new int[30];
private int []NewTRafaga1;
private int NumeroProceso[];
private String []ProcesosNombres;
private String []NewNombres=new String[30];
private String []NewNombres1;
private double DoubleTiempoEspera1;
Vector VectorProcesos;
/*EN EL CONTRUCTOR SE RECIBE EL VECTOR CON TODOS LOS DATOS DE LOS PROCESOS*/
public PorTurnos(Vector VectorProcesos){
this.VectorProcesos=VectorProcesos;
TRafaga=new int[VectorProcesos.size()];
RealTRafaga=new int[VectorProcesos.size()];
ProcesosNombres=new String[VectorProcesos.size()];
NumeroProceso=new int[VectorProcesos.size()];
Quantum=Integer.parseInt(JOptionPane.showInputDialog(null,"Introduzca el valor del Quantum"));
for (int i=0;i
RealTRafaga[i]=((Procesos)VectorProcesos.elementAt(i)).getIntTiempoRafaga();
ProcesosNombres[i]=((Procesos)VectorProcesos.elementAt(i)).getStringNombre();
NumeroProceso[i]=((Procesos)VectorProcesos.elementAt(i)).getIntTiempoLlegada()+1;
}
}
/*EN ESTA PARTE SE CALCULA EL TIEMPO PROMEDIO DE ESPERA DEL ALGORTIMO*/
public void getTiempoEspera(){
int mayor,valor,j=1,p=0,numQuantum=1;
String proceso;
mayor=TRafaga[0];/*Calculando el mayor*/
for (int i=0;i
}
for (int i=0;i
}
}
NewTRafaga[0]=0;
valor=(mayor/Quantum);
for (int h=0;h
if(Quantum>TRafaga[i]){
NewTRafaga[j]=NewTRafaga[j-1]+TRafaga[i];
NewNombres[j-1]=ProcesosNombres[i];
TRafaga[i]=0;
j++;
}
else{
TRafaga[i]-=Quantum;
NewTRafaga[j]=NewTRafaga[j-1]+Quantum;
NewNombres[j-1]=ProcesosNombres[i];
j++;
}
}
}
}
for (int i=0;i
tamano++;
}
}
NewTRafaga1 =new int[tamano];
NewNombres1=new String[tamano];
for(int z=0;z
NewNombres1[z]=NewNombres [z];
}
else
break;
}
int numeroRepeticiones=0;
int UltimaPosicion=1;
DoubleTiempoEspera1=0;
double temporalT;
for(int i=0;i
numeroRepeticiones=0;
for(int k=0;k
if(proceso==NewNombres1[k]){
numeroRepeticiones+=1;
UltimaPosicion=k;
}
}
temporalT=(numeroRepeticiones-1)*Quantum;
DoubleTiempoEspera1+=Math.abs(NewTRafaga1[UltimaPosicion]-temporalT);//Math.abs(TiempoRafaga[1]-nuevoQuantum);
}/*Fin FOR*/
DoubleTiempoEspera1=DoubleTiempoEspera1/VectorProcesos.size();
}
/*SE DEVUELVE EL TIEMPO DE RAFAGA*/
public int[] getValores() {
return NewTRafaga1;
}
/* SE DEVULVE LA NUEVA LA LONGITUD PARA EL VECTOR QUE CONTIENE LOS NUEVOS TIEMPOS DE RAFAGA*/
public int getTamano(){
return tamano;
}
/*SE DEVUELVE EL QUANTUM DE TIEMPO*/
public int getQuantum(){
return Quantum;
}
/*SE DEVUELVE EL VECTOR CON LOS NOMBRES DE LOS PROCESOS*/
public String[] getNombre() {
return NewNombres1;
}
/*SE DEVULVE EL TIEMPO PROMEDIO DE ESPERA*/
public double getTEP(){
return DoubleTiempoEspera1;
}
/*SE DEVUELVE LOS NUMEROS DE PROCESOS*/
public int[] getNumeroProceso(){
return NumeroProceso;
}
/*DEVUELVE EL TIEMPO DE RAFAGA, EL QUE TRAE REGISTRADO DESDE QUE SE CREA EL PROCESO */
public int []gerRealTRafaga(){
return RealTRafaga;
}
/*IMPRIME EL TIEMPO PROMEDIO DE ESPERA*/
public void imprimeResultado() {
System.out.println(DoubleTiempoEspera1);
}
}
0 comentarios:
Publicar un comentario