public FormTablaProcesos(int Tiempo, Proceso Ejecucion, Cola Nuevos, Cola Listos, List <Proceso> Bloqueados, List <Proceso> Terminados)
        {
            InitializeComponent();
            this.Tiempo = Tiempo;

            while (Nuevos.Count > 0)
            {
                Nuevo.Add(Nuevos.Dequeue());
            }
            foreach (Proceso p in Nuevo)
            {
                Nuevos.Enqueue(p);
            }

            while (Listos.Count > 0)
            {
                Listo.Add(Listos.Dequeue());
            }
            foreach (Proceso p in Listo)
            {
                Listos.Enqueue(p);
            }
            RecuperarSuspendidos();

            this.Bloqueados = Bloqueados;
            this.Terminados = Terminados;
            this.ejecucion  = Ejecucion;

            cargarListas();
        }
 private void buttonContinuar_Click(object sender, EventArgs e)
 {
     if (numeric1.Value > 0)
     {
         if (numericQuantum.Value > 0)
         {
             Random rnd = new Random();
             for (int i = 1; i <= numeric1.Value; i++)
             {
                 Nuevos.Enqueue(NuevoProceso(rnd, i));
             }
             FormProcesamientoDeLotes FPL = new FormProcesamientoDeLotes(this, Nuevos, (int)numeric1.Value, rnd, (int)numericQuantum.Value);
             FPL.ShowDialog();
         }
         else
         {
             MessageBox.Show("Quantum minimo de 1");
         }
     }
     else
     {
         MessageBox.Show("debes crear minimo un proceso");
     }
 }
Exemple #3
0
        private void Teclazos(char tecla)
        {
            if (tecla == 'i' || tecla == 'I')
            {
                if (!pausa)
                {
                    buttonInt.BackColor = Color.Green;
                    timer3.Start();

                    Interrupcion();
                }
            }
            else if (tecla == 'e' || tecla == 'E')
            {
                if (!pausa)
                {
                    buttonError.BackColor = Color.Red;
                    timer3.Start();
                    Error();
                }
            }
            else if (tecla == 'n' || tecla == 'N')
            {
                if (!pausa)
                {
                    buttonNuevo.BackColor = Color.Green;
                    timer3.Start();
                    Nuevos.Enqueue(FI.NuevoProceso(rnd, ultimo + 1));
                    ultimo++;
                }
            }
            else if (tecla == 't' || tecla == 'T')
            {
                timer1.Stop();
                buttonTabla.BackColor = Color.Green;
                pausa = true;

                FormTablaProcesos FT = new FormTablaProcesos(Tiempo, Ejecucion, Nuevos, Listos, Bloqueados, Terminados);
                FT.ShowDialog();
                buttonTabla.BackColor = Color.White;
                timer1.Start();
                pausa = false;
            }
            else if (tecla == 's' || tecla == 'S')
            {
                if (!pausa)
                {
                    buttonSus.BackColor = Color.Red;
                    timer3.Start();
                    Suspender();
                }
            }
            else if (tecla == 'r' || tecla == 'R')
            {
                if (!pausa)
                {
                    buttonReg.BackColor = Color.Green;
                    timer3.Start();
                    Recuperar();
                }
            }
            else if (tecla == 'u' || tecla == 'U')
            {
                if (!pausa)
                {
                    buttonVir.BackColor = Color.Green;
                    timer3.Start();
                    EnviarAVirtual();
                }
            }
        }
Exemple #4
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
            timer1.Interval = 500;
            Expulsar();

            while (teclas.Count > 0)
            {
                Teclazos(teclas.Dequeue());
            }
            LlenarFrames();


            cargarListas();


            if (ProcesosEnMemoria() != 0 || Nuevos.Count > 0 || NumSuspendidos > 0)
            {
                if (Ejecucion == null)
                {
                    if (Listos.Count >= 1)
                    {
                        Ejecucion = Listos.Dequeue();
                        Ejecucion.Respuesta();
                        Ejecucion.estado = "Ejecucion";
                        TomarApartados();
                        ReiniciaQuantum();
                    }
                }

                if (Ejecucion != null)
                {
                    Ejecucion.TiempoRestante--;
                    Ejecucion.TiempoTranscurrido++;
                    if (Ejecucion.TiempoRestante == 0 || Ejecucion.error)
                    {
                        Terminado(Ejecucion);
                        LimpiarFrames(Ejecucion);
                        Ejecucion = null;
                    }
                }


                foreach (Proceso p in Bloqueados)
                {
                    if (p.TiempoRestanteBloqueado > 0)
                    {
                        p.TiempoRestanteBloqueado--;
                        p.TiempoEspera++;
                        //p.TiempoEspera++;
                    }
                    else
                    {
                        p.estado = "Listo";
                        Listos.Enqueue(p);
                    }
                }
                foreach (Proceso p in Listos)
                {
                    if (Bloqueados.Contains(p))
                    {
                        Bloqueados.Remove(p);
                    }
                    else
                    {
                        p.TiempoEspera++;
                    }
                }
                //
                Tiempo++;
                //Expulsar();


                cargarListas();
                timer1.Start();
            }
        }