Subido por IDALIA ROSIBEL ALAVEZ MEJIA

PROBLEMAS MULTIPROGRAMACION Y SOLUCIONES

Anuncio
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
Descargar