Algoritmo de Planificación Round Robin

October 13, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF