Laboratorio 3

June 25, 2024 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download


Description

Laboratorio 3: Semáforos

INTEGRANTES: Sebastián Giraldo Vallejo David Steeven Rojas Herrera Jorge Luis Granda Arrieta

PROFESOR: JHON JAIRON ARANGO TOBÓN

POLITÉCNICO COLOMBIANO JAIME ISAZA CADAVID MEDELLÍN 2020

Introducción Los semáforos son una herramienta de sincronización que ofrece una solución al problema de la sección crítica (porción de código de un programa de computador en la cual se accede a un recurso compartido que no debe ser accedido por mas de un proceso o hilo en ejecución). Un semáforo provee una simple pero útil abstracción para controlar el acceso de múltiples procesos a un recurso común en programación paralela, o entornos multiusuarios. El concepto de semáforo fue inventando por el holandés Esdger W. Dijkstra.

Objetivo general Entender los problemas de sincronización de multiprocesos. Explicación Ejercicio El problema del productor-consumidor es un ejemplo clásico de problema de sincronización de multiprocesos. El programa describe dos procesos, productor y consumidor, ambos comparten un buffer de tamaño finito. La tarea del productor es generar un producto, almacenarlo y comenzar nuevamente; mientras que el consumidor toma (simultáneamente) productos uno a uno. El problema consiste en que el productor no añada más productos que la capacidad del buffer y que el consumidor no intente tomar un producto si el buffer está vacío. La idea para la solución es la siguiente, ambos procesos (productor y consumidor) se ejecutan simultáneamente y se “despiertan” o “duermen” según el estado del buffer. Concretamente, el productor agrega productos mientras quede espacio y en el momento en que se llene el buffer se pone a “dormir”. Cuando el consumidor toma un producto notifica al productor que puede comenzar a trabajar nuevamente. En caso contrario, si el buffer se vacía, el consumidor se pone a dormir y en el momento en que el productor agrega un producto crea una señal para despertarlo. Se puede encontrar una solución usando mecanismos de comunicación de interprocesos, generalmente se usan semáforos. Una

inadecuada implementación del problema puede terminar en un deadlock, donde ambos procesos queden en espera de ser despertados. Este problema puede ser generalizado para múltiples consumidores y productores.

Ventajas e inconvenientes •

La principal ventaja de los semáforos frente a los cerrojos es que permiten sincronizar dos o más procesos de manera que no se desperdician recursos de CPU realizando comprobaciones continuadas de la condición que permite progresar al proceso.



Los inconvenientes asociados al uso de semáforos son los siguientes:



Los programadores tienden a usarlos incorrectamente, de manera que no resuelven de manera adecuada el problema de concurrencia o dan lugar a interbloqueos. No hay nada que obligue a los programadores a usarlos. Los compiladores no ofrecen ningún mecanismo de comprobación sobre el correcto uso de los semáforos. Son independientes del recurso compartido al que se asocian.

• • •

Aprendizaje Gracias a este laboratorio pudimos aplicar la teoria de semoforos vista en clase, desarrollando el problema de productores y consumidores, además de reforzar los conceptos de hilos en el lenguaje de programación Java.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF