public void AgregarProcesoListaEjecucion(String id_proceso_espera)
        {
            String nombre_proceso = "";

            //busco el nombre del proceso que estaba en espera
            foreach (Proceso proceso in lstProcesos)
            {
                if (proceso.Id_proceso.Equals(id_proceso_espera))
                {
                    nombre_proceso = proceso.Nombre_proceso;
                    break;
                }
            }
            //agrego el proceso que estaba en espera, a la lista de procesos en ejecucion
            Proceso_Ejecucion proceso_ejecucion = new Proceso_Ejecucion(id_proceso_espera, nombre_proceso);

            lstProcesosEnEjecucion.Add(proceso_ejecucion);
        }
        private void Evento_Labels_Disco_Duro(object sender, EventArgs e)
        {
            Label  etiqueta       = (Label)sender;
            String id_proceso     = etiqueta.Name;
            String nombre_proceso = "Proceso " + etiqueta.Name.Replace("P", ""); //quito la P y la reemplazo por nada para que solo me de el numero

            if (VerificarProcesosEjecucion(id_proceso) == false)                 //verifico si el proceso esta en la lista de procesos en ejecucion
            {
                if (ObtenerTamanioProceso(id_proceso) <= ObtenerEspacioLibre())  //verificar si hay espacio libre en la memoria ram
                {
                    //envio el proceso a la memoria RAM
                    EnviarProcesoARam(id_proceso);
                    //vuelvo a cargar los marcos en la RAM, con la nueva información
                    pnlMarcos.Controls.Clear();
                    CrearMarcosRAM();
                    //creo la lista de procesos en ejecucion
                    proceso_ejecucion = new Proceso_Ejecucion(id_proceso, nombre_proceso);
                    lstProcesosEnEjecucion.Add(proceso_ejecucion);
                    //agrego los elementos de la lista de procesos de ejecucion al listbox
                    lbProcEjecucion.Items.Clear();
                    foreach (Proceso_Ejecucion proceso in lstProcesosEnEjecucion)
                    {
                        lbProcEjecucion.Items.Add(proceso);
                    }
                    //ahora mandar a cambiar el bit de validez en la tabla de paginas
                    foreach (Proceso p in lstProcesos)
                    {
                        if (p.Id_proceso.Equals(id_proceso)) //busco el bit de validez y lo cambio por 1, que signifca que pasa a ejecución
                        {
                            p.Proceso_utilizado = 1;
                            pnlTablaPaginas.Controls.Clear(); //limpio el panel de todo lo que contiene
                            CrearTablaDePaginas();            //Vuelvo a cargar el panel con la nueva información
                        }
                    }
                }
                else
                {
                    int contador_espera = 0;
                    //valido que no se agregue el elemento a la lista, para que no se repitan en la lista de procesos en espera
                    foreach (Proceso_Espera proceso_espera in lstProcesosEnEspera)
                    {
                        if (proceso_espera.Id_proceso.Equals(id_proceso))
                        {
                            agregar_elemento = false;
                            break;
                        }
                        contador_espera++;
                        if (contador_espera == lstProcesosEnEspera.Count)
                        {
                            agregar_elemento = true;
                            break;
                        }
                    }

                    if (agregar_elemento == true)    //si no existe el elemento en la lista de procesos en espera, que lo agregue
                    {
                        proceso_espera = new Proceso_Espera(id_proceso, nombre_proceso);
                        lstProcesosEnEspera.Add(proceso_espera);
                        lbProcEspera.Items.Clear();
                        foreach (Proceso_Espera proceso in lstProcesosEnEspera)
                        {
                            lbProcEspera.Items.Add(proceso);
                        }
                    }

                    MessageBox.Show("¡El proceso es demasiado grande para ejecutarse. Pulse intercambiar páginas para hacer Swap.!",
                                    "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    btnIntercambiarPaginas.Enabled = true;
                }
            }
            else
            {
                MessageBox.Show("El proceso se encuentra en ejecución. Seleccione un proceso que no se esté ejecutando.",
                                "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }