viernes, 11 de marzo de 2016

Sistema de Administración de Procesos Método Round Robin en Java

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:


Round Robin

No hay comentarios.:

Publicar un comentario