TECNOLÓGICO NACIONAL DE MÉXICO INSTITUTO TECNOLÓGICO DE PINOTEPA Tópicos Avanzados Avanzados de de Programación Programación Tópicos ALAVEZ MEJÍA IDALIA ROSIBEL. NO. DE CONTROL: 20730063 PROBLEMAS MÁS COMUNES EN LAS APLICACIONES MULTIHILOS. ING. EUGENIA TERESA LOZANO AGUIRRE. LUNES 19 DE JUNIO DE 2022. Programacion Concurrente Se conoce por programación concurrente a la rama de la informática que trata de las técnicas de programación que se usan para expresar el paralelismo entre tareas y para resolver los problemas de comunicación y sincronización entre procesos. Su filosofía se basa en la división de un problema en subproblemas que se solucionan de forma individual, para crear un programa o aplicación que no se vea afectada en tiempo real. Problemas más comunes en prgramacion multihilos Interbloqueo. Inanición. Variables Compartidas. Interbloqueo Un problema de interbloqueo describe una situación en la que dos o más subprocesos se bloquean para siempre, esperando el uno al otro. El interbloqueo ocurre cuando varios subprocesos necesitan el mismo objeto pero lo obtienen en un orden diferente. Interbloqueo El interbloqueo, llamado también bloqueo mutuo o deadlock, se define como el bloqueo permanente de procesos que requieren los servicios de determinados recursos. Es decir, cuando todos los procesos aseguran algunos recursos pero quedan a la espera de otros, los cuales han sido asignados a procesos diferentes. Estos a su vez, necesitan los recursos asignados a los primeros procesos. De esta forma, cada proceso asegura algún recurso pero queda en espera de otro Solucion del interbloqueo. Las soluciones del interbloqueo se presentan a través de tres estrategias: prevención, detección y predicción del mismo: Prevención: se logra a partir del diseño del sistema operativo impidiendo que exclusión mutua, retención y espera y no apropiación puedan darse. Solucion del interbloqueo. Detección: aquí el interbloqueo puede presentarse, sin embargo el sistema operativo ejecuta periódicamente un algoritmo que crea estrategias de recuperación ante la aparición del círculo vicioso de espera. Las estrategias de recuperación pueden ser abandono, retroceso, abandono controlado o apropiación total de recursos. Predicción: se realiza mediante procesos dinámicos que establecen si la petición de un recurso podrá conducir a interbloqueo. Si bien es cierto la predicción es la estrategia más eficiente ante el problema de interbloqueo tiene restricciones en el número de procesos y recursos a gestionar, por la sobrecarga que puede producir en el sistema. Inanicion El problema de la inanición ocurre cuando a un hilo se le niega continuamente el acceso a los recursos y, como resultado, no puede avanzar. Esto suele ocurrir cuando los subprocesos codiciosos consumen recursos compartidos durante largos períodos de tiempo. Inanicion El problema de inanición, por su parte, suele tener las mismas consecuencias del interbloqueo, pero las causas son diferentes dado que la inanición se define como el bloqueo indefinido debido a la negativa permanente para la utilización de un recurso compartido. Solucion de la inanición. Una posible solución a la inanición es utilizar un algoritmo de programación con cola de prioridad que también utiliza la técnica de envejecimiento . El envejecimiento es una técnica de aumento gradual de la prioridad de los procesos que esperan en el sistema durante mucho tiempo. [4] Problema de variables compartidas. Un problema es cuando una variable es compartida por los diferentes hilos. Puede darse que quizás un hilo esté llevando a cabo un proceso con el valor de esa variable, entonces otro hilo llegue y cambie el valor de la variable, y altere de alguna manera el proceso del primer hilo. Solución al problema de variables compartidas. Una forma sencilla de corregir esto es utilizar la sincronización. La sincronización garantiza que solo un subproceso pueda acceder al recurso en un momento dado. Cuando un método acceda a una variable miembro que esté compartida deberemos proteger dicha sección crítica, usando synchronized. Se puede poner todo el método synchronized o marcar un trozo de código más pequeño. Conclusión Cuando dos o más procesos compiten por la asignación de uno o más recursos, se determinan problemas de bloqueos e interbloqueos, los cuales deben ser evitados ya que se convierten en los principales causantes de la ineficiencia del procesamiento por parte del procesador. Siempre hay una solución para cada problema. Solo necesita tomarse un momento, revisar su código y analizarlo para cualquiera que sea su objetivo final. Los hilos son una herramienta poderosa que puede hacernos la vida súper fácil como ingenieros, pero recuerde que un gran poder conlleva una gran responsabilidad. Bibliografía. Naomi Pm, K. (2021, 28 abril). Problemas mas comunes en las aplicaciones multihilos. Prezi.Com. Recuperado 17 de junio de 2022, de https://prezi.com/p/h6ufppuy8qd/problemas-mas-comunes-en-las-aplicaciones-multihilos/ Soluciones simples para problemas de subprocesos de Java. (2019, 19 junio). Encora. Recuperado 19 de junio de 2022, de https://www.encora.com/es/blog/soluciones-simplespara-problemas-de-subprocesos-de-java tok.wiki. (s. f.). Hambruna (informática) PlanificaciónyVer también. Recuperado 19 de junio de 2022, de https://hmong.es/wiki/Resource_starvation Fernandez, M. A. P. (2021, 12 marzo). Sincronización entre procesos (página 2). Monografias.com. Recuperado 19 de junio de 2022, de https://www.monografias.com/trabajos51/sincro-comunicacion/sincro-comunicacion2 Cerinza, N. G. (s. f.). FAEDIS. UMNG. Recuperado 19 de junio de 2022, de http://virtual.umng.edu.co/distancia/ecosistema/odin/odin_desktop.php?path=Li4vb3Zhcy 9pbmdlbmllcmlhX2luZm9ybWF0aWNhL3Npc3RlbWFzX29wZXJhdGl2b3MvdW5pZGFkXzM v#slide_8