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"); } }
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(); } } }
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(); } }