Algoritmo de Planificación Round Robin
October 13, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Algoritmo de Planificación Round Robin...
Description
Centro Universitario
CUCEI. Departamento
Ciencias Computacionales. Materia Materia
Seminario de solución de problemas de sistemas operativos. Profesor/a
M. en Velázquez C. Violeta del Rocío Becerra
Estados de los procesos.
ALGORITMO DE PLANIFICACION RR Actt i vi dad 10 Ac
Alumno Diego Arturo Abundis Fletes. Código 211735401 Carrera Ingeniería en Computación Computación.. Sección Sección D03 Fecha
29 – 03 - 2019 Calificación y observaciones
Seminario de solución de problemas de sistemas operativos.
Contenido Objetivo ................................................... ............................................................................. .................................................... ........................................... .................2 Desarrollo................................................ .......................................................................... .................................................... ........................................... .................2 Conclusión .................................................. ............................................................................ .................................................... ....................................... .............6 Bibliografía Bibliografí a .................................................. ............................................................................ .................................................... ....................................... .............7
Diego Arturo Abundis Fletes
Algoritmo de planificación RR
Objetivo El algoritmo que se implementará para la cola de listos es Round Robin o cíclico, con el dato de entrada del valor de quantum se manejara la cola de listos. Se pretende enseñar una manera fácil de administrar los procesos bajo un algoritmo que a lo visto no tiene prioridades ya que a todos los procesos se les asigna el valor del quantum igual. En esta práctica se contempla el diagrama de Cinco Estados, el cual contempla el esquema que sigue un proceso bajo el planificados de eventos a continuación se muestran cada uno de ellos: A. Nuevo: Procesos Procesos que se acaban de crear, pero aún no han sido ad admitidos mitidos por el sistema operativo en el grupo de procesos ejecutables. B. Listos: Procesos que están preparados para ejecutarse, en cuanto sea su turno. C. Ejecución: Proceso que está actualmente en ejecución. D. Bloqueado: Proceso que no puede ejecutar hasta que se produzca cierto suceso, como la terminación de una operación de E/S. E. Terminado: Un proceso que ha sido excluido por el sistema operativo del grupo de procesos alguna razón. activos, bien porque se detuvo o porque fue abandonado por
Desarrollo Form private private void void procesoTerm procesoTerminado() inado() { switch switch (proceso.es (proceso.estado) tado) { case Constantes.ESTADO_E: ESTADO_E: case Constantes. default default: : if if (proceso.tiempoTranscurrido (proceso.tiempoTranscurrido == proceso.tiempoMaxEsp || proceso.estado proceso.est ado == Constantes.ESTADO_E) Constantes.ESTADO_E) { if (proceso.estado (proceso.estado != Constantes.ESTADO_E) if proceso.estado = Constantes.ESTADO_T; adminProceso.encolarPr adminProceso .encolarProcesoTermin ocesoTerminado(proces ado(proceso); o); adminProceso.encolarP adminProce so.encolarProcesoListo rocesoListo(); (); listaProcesoTerminado = new new string[COLUMNAS_PROC_TERMINADOS]; string [COLUMNAS_PROC_TERMINADOS]; listaProcesoTerminado listaProce soTerminado[0] [0] = Convert.ToString(proc Convert.ToString(proceso.id); eso.id); listaProcesoTerminado[1] = Convert.ToString(proceso.digitoA + " " + " + " + + proceso.dig proceso.digitoB); itoB); tipoOperacion(proceso.operacion) + " " listaProcesoTerminado[2] listaProcesoTerminado [2] = (proceso.estado (proceso.estado == Constantes.E Constantes.ESTADO_E) STADO_E) ? Convert.ToString(Constantes.ESTADO_E) : Convert.ToString(proce Convert.To String(proceso.resulta so.resultado); do); listaProcesoTerminado[3] = Convert.ToString(proceso.getTiempoLlegada()); listaProcesoTerminado[4] = Convert.ToString(proceso.getTiempoFinalizacion());
2
Seminario de solución de problemas de sistemas operativos. listaProcesoTerminado[5] = Convert.ToString(pro Convert.T oString(proceso.getTiem ceso.getTiempoServicio( poServicio()); )); listaProcesoTerminado[6] = Convert.ToString(proceso.getTiempoEspera()); listaProcesoTerminado[7] = Convert.ToString(pro Convert.T oString(proceso.getTiem ceso.getTiempoRetorno() poRetorno()); ); listaProcesoTerminado[8] = Convert.ToString(proce Convert.T oString(proceso.getTiem so.getTiempoRespuesta poRespuesta()); ()); itemProcesoTerminado = new new ListViewItem(listaPro ListViewItem(listaProcesoTermin cesoTerminado); ado); if if (InvokeRequired) { if (proceso.estado == Constantes.ESTADO_E) if (proceso.estado new Action(() Action(() => Invoke(new Invoke( listTerminados.Items.Add(itemProcesoTerminado).ForeColor = Color.DarkMagenta )); else else new Action(() Action(() => Invoke(new Invoke( listTerminados.Items.Add(itemProcesoTerminado))); } } else else { adminProceso.desencola adminProceso .desencolarProcesoLis rProcesoListo(); to(); adminProceso.encolarPr adminProceso .encolarProcesoListo( ocesoListo(proceso); proceso); } break; ; break } }
Para poder realizar la simulación de la cola de procesos con el algoritmo Round Robin se tuvo que modificar el método procesoTerminado (), el cual se le agrego una estructura de control IF – ELSE para revisar si el tiempo transcurrido es igual al tiempo máximo estimado quiere decir el proceso ha terminado y por tanto se manda a la cola de procesosTerminados, de lo contrario nos indica que el proceso aún no ha terminado y se debe de volver a encolar a procesosListos. Proceso public public void void procesarCalculo() { int contadorTM contadorTME, E, tmTranscurrido, tmTranscurrido, tmRestante, tmQuantum; int try try { terminoQuantum = false false; ; contadorTME contadorTM E = tiempoMaxEsp; tiempoMaxEsp; tmTranscurrido = tiempoMaxEsp - tiempoRestante; tmRestante = tiempoRestante; tmQuantum = quantum; while while (tmTranscurrido (tmTranscurrido < contadorTME && !terminoQuantum) !terminoQuantum) { lock ( this) ) lock (this { while while (procesoPausado) (procesoPausado) waitHandle.WaitOne(); } Thread.Sleep(Constantes.SEGUNDO); Thread.Sleep(Constante s.SEGUNDO);
Diego Arturo Abundis Fletes
Algoritmo de planificación RR if if (!procesoPausado (!procesoPausado && tmQuantum > 0) { impresor.imprimirProcesoEjecucion(++tmTranscurrido, --tmRestante, --tmQuantum); tiempoTranscurrido tiempoTran scurrido = tmTranscurrido; tmTranscurrido; tiempoRestante tiempoRestan te = tmRestante; } else else { terminoQuantum = true true; ; } } resultado = realizarCalculo(operaci realizarCalculo(operacion, on, digitoA, digitoB); } catch catch (ThreadInte (ThreadInterruptedExce rruptedException) ption) { } }
Como se nos indica en la actividad se debe de mostrar el valor actual del quantum por lo que se opto por guardar en todos los procesos el valor del quantum, de esta manera con una clase Interface llamada Impresor se se manda a imprimir estos datos: a) Tiempo Transcurrido b) Tiempo Restante c) Tiempo del quantum Para poder generar la tabla de BCP se implementó un algoritmo algoritm o el cual decide cuantos tiempos se deben imprimir respecto a su cola de objetos proceso con esto se reduce el número de líneas de código reutilizando al máximo la llamada a funciones, a continuación, una tabla para mayor ilustre: Estado / Tiempo Tiempo Llegada Finalización Retorno Espera Servicio Rest. CPU Respuesta TME
Nuevo Nue vo
Listo
Ejecución Eje cución
Bloqueado
Terminado Te rminado
✓
✓
✓
✓
✓
-
-
-
-
✓
✓
✓
✓
-
✓ ✓
✓ ✓
✓ ✓
✓ ✓
-
✓
✓
-
✓
✓
✓
✓
✓
✓
✓
Con esto en la tabla de forma visual los campos que no apliquen se dejaran vacíos para entender que no es requerido imprimirse.
4
Seminario de solución de problemas de sistemas operativos. Por ultimo y como se menciono al principio la mejora de rendimiento, se implemento un objeto de exclusión llamado EventHandle el cual manda una señal esperando ser recibida por quien posea el objeto, pausando esta hasta que no se vuelva a enviar la señal de desbloqueo, debido a que el planificador puede decidir quitar el hilo por una fracción de tiempo, la exclusión mutua especifica que este objeto debe permanecer en un while con una condición como criterio de paro.
Diego Arturo Abundis Fletes
Algoritmo de planificación RR
Conclusión El lenguaje utilizado fue C# debido a dos razones, la primera es la simplicidad con la que se manipulan las interfaces, la segunda aprender hilos en C# y su manejo en interfaz de usuario. Se aprendió una manera simple pero eficaz de planificar los procesos con este algoritmo el cual se puede decir le da unas mejorar al ya implementado Planificador FCFS, así pues, también tamb ién se pudo observar el funcionamiento y rendimiento que puede tener el planificador con cientos de procesos corriendo en una estructura con hilos. Se aprendió la forma en la que se manejan procesos mediante el planificador, en este se simularon procesos, así como asignar y calcular los tiempos de un proceso y la traza que sigue durante su ejecución.
6
Seminario de solución de problemas de sistemas operativos.
Bibliografía Albahar, J. (27 de Abril de 2011). Albahari. Obtenido de Threading in C#: http://www.albahari.com/threading/part2.aspx X., B. (23 de Abril de 2017). Ben Bowens. Obtenido de Common Multithreading Mistakes in C#: http://benbowen.blog/post/cmmics_iv/
Diego Arturo Abundis Fletes
View more...
Comments