Administración de Procesos Round Robin
La administración de procesos mediante este método se trata de ir tomando un proceso turno por turno hasta que todos y cada uno de los procesos terminen, así con todos y cada uno de los procesos que vayan llegando, entra en juego el "Quantum" que es el numero de procesos simultáneos a tomar en cuanta por Round , un ejemplo de ello es lo siguiente:
llegan 3 Procesos A, B y C, donde A=2, B=3 y C=1, entonces tomando el método de Round Robin el proceso será el siguiente:
Quantum=1
1.- Primer Round
Entran
A=2-1 B=3-1 C=1-0 ----->A=1 B=2 C=0(PROCESO TERMINADO).
2.- Segundo Round
A=1-1 B=2-1 ------> A=0(PROCESO TERMINADO) B=1.
3.- Tercer Round
B=1-1 -----------> B=0(PROCESO TERMINADO)
Así es como se terminan el total de procesos usando Round Robin
Una vez Visto la Parte Teórica Implementaremos el algoritmo en Java
Se hace Uso de Una Sencilla Interfaz Gratifica para la obtención de Datos.
Aquí e Código:
// Declaración de Variables int p[]; int co[]; int vuelta[]; int q; int nProceso; int c = 0; float tiempo_espera, tiempo_ida; //Método Round Robin el cual se manda a llamar en el Boton Run en su evento actionPerformed public void RoundRobin(){ // se Inicializan las Variables nProceso=Integer.parseInt(nProcesos.getText());// Obtención de numero y tamaño de procesos //Inicializacion de Variables int p[]=new int [nProceso]; int co[]=new int [nProceso]; int es[]=new int [nProceso]; int vuelta[]=new int [nProceso]; //Obtención de Valores para cada uno de los procesos for(int i=0;i< nProceso;i++){ co[i]=p[i]=Integer.parseInt(JOptionPane.showInputDialog("Introduzca el Tamaño de Proceso"+"["+(i+1)+"]")); } //Obteción del "Quantum" q=Integer.parseInt(Q.getText()); for (int j = 0; j <nProceso; j++) {//Este Proceso se hará hasta terminar todos los procesos while (p[j] >= 0) {//mientras los valores de los procesos no sean sero no terminará for (int i = 0; i < p.length; i++) {// se hace el recorrido de cada proceso if (p[i] >= 0) {//verificando que aun no termine Originales.append("\nP[" + (i + 1) + "] : " + p[i] + "\t"); if (p[i] > 0) {//en caso de terminar se agrega una vuelta el en arreglo vuelta[i]++; } } p[i] -= q;//aqui se le resta el cuantum al proceso mientras sea mayor a 0 } c++; } } for (int i = 0; i < p.length; i++) {//aqui se cuenta el tiempo de espera para cada uno de los proceso sumando el tiempo de los procesos anteriores es[i] = vuelta[i] + co[i]; tiempo_espera += vuelta[i]; tiempo_ida += es[i]; } Estadisticas.append("\nProceso\ttamanio\tespera\tida"); for (int i = 0; i < nProceso; i++) { Estadisticas.append("\np[" + (i + 1) + "] \t " + co[i] + "\t " + vuelta[i] + "\t" + es[i]); } PromedioEspera.setText(""+ (tiempo_espera / nProceso)); PromedioIda.setText(""+ (tiempo_ida / nProceso)); }
Espero y Sirva este aporte subiré otros métodos de Administración de Procesos mas Adelante Saludos.
Aquí el Codigo: