Esta política resulta ser la más sencilla, ya que consiste de 3 pasos:
1.- Ordenar los procesos por orden de llegada
2.- Resolver los instantes de finalización de los procesos
3.- Obtener los valores T,E,I con las fórmulas de esta política.
Ahora, debo aclarar que yo tengo mi clase de Procesos de esta manera:
class Proceso
{
public double instanteEntrada, tiempoEjecucion, t, e, i,instanteFinalizacion,tiempoEjecutado;
int prioridad;
public char[] nombre = new char[5];
public Boolean dormido = true;
public Proceso(char[] nombre, double instanteEntrada, double tiempoEjecucion,int prioridad)
{
this.nombre = nombre;
this.instanteEntrada = instanteEntrada;
this.tiempoEjecucion = tiempoEjecucion;
this.t = 0;
this.e = 0;
this.i = 0;
this.instanteFinalizacion=0;
this.prioridad = prioridad;
}
}
Como ven, al crear un proceso recibe los valores: nombre, instanteEntrada, tiempoEjecucion y prioridad.
Ahora, tomando en cuenta que el instante de entrada es un número, resulta sencillo meter los procesos a un array y ordenarlos de menor a mayor de acuerdo a su instante de Entrada.
Proceso[] procesos = new Proceso(numero_de_procesos);
y voy agregando los procesos al arreglo:
procesos[0]= proceso;
procesos[1]= proceso2;
procesos[2]= proceso3;
..... //indefinidamente;
Luego se hace un ordenamiento con el método burbuja:
for(int i=0;i<procesos.Length-1;i++) //procesos.Lenght es la longitud del array en donde estan los procesos
{
for(int j=i+1;j<procesos.Length;j++)
{
Proceso procesoTemp; //creo un objeto para guardar temporalmente los procesos
if(procesos[j].instanteEntrada<procesos[i].instanteEntrada)
{
procesoTemp = procesos[j];
procesos[j]=procesos[i];
procesos[i]=procesoTemp;
}
}
}
Así tenemos en la posición 0 el primer proceso en entrar, y en la ultima posicion el ultimo proceso en entrar.
Falta calcular el instante de finalización:
Para la posición 0: instanteFinalizacion= instanteEntrada + tiempoEjecucion.
Para las siguientes posiciones
Si el instante de finalización del proceso anterior es igual o superior al instante de inicialización del proceso actual:
instanteFinalizacion = (instanteFinalización_procesoAnterior) + tiempoEjecución
Si no es así (si el proceso anterior acabó antes de que iniciara el actual)
instanteFinalización = (instanteEntrada + tiempoEjecución)
El resto de los valores (T,E,I) se calculan a partir de estos tres valores obtenidos.
Siento no ser más específico pero estoy con el tiempo encima
vale gracias, se entiende y me parece que sera de ayuda y disculpa por molestar :):::zulma
ResponderEliminarDe nada.
ResponderEliminarAcabamos de hacer terminar la segunda y tercera política. Mañana cualquier duda ya saben ;)
no vayas a pensar k soy encajosa pro sera posible que puedas pegar las otras dos politicas que hiciste pra darme una idea de como lo hiciste esk la vdd la primera k dejast aki m ayudo mucho, claro que al inicio tuve mis errores pork lo estoy haciendo en java xfa :( y en caso de k no puedas te doy otraves 1000 gracias por el codigo anterior::::zulma
ResponderEliminar