Ir al contenido principal

Entradas

Mostrando las entradas con la etiqueta dekker

Algoritmo de Dekker #1 Alternancia Estricta

En el curso de sistemas operativos 1, se estudian las soluciones al problema de la exclusión mutua por software, uno de los temas es el algoritmo de Dekker y sus diferentes versiones, que buscan coordinar el acceso a un recurso compartido (o región critica) por un grupo de procesos, garantizando la exclusión mutua entre dichos procesos al usar el recurso. el primer intento del algoritmo de dekker es conocido como de "alternancia estricta" o "sincronizacion forzada" básicamente porque cada uno de los procesos tiene asignado un turno, y el algoritmo para coordinarlos solo hace cambiar el turno uno por uno, y luego vuelve a iniciar. esta forma de solucionar el problema garantiza la exclusión mutua pero introduce una fuerte dependencia entre los procesos, si un proceso usa el recurso a intervalos grandes, cuando su turno llega, los demás procesos deben esperar, por lo que los procesos lentos, retrasan a los procesos rápidos....

Como Sincronizar Threads en Java

Una de las características importantes de Java es la posibilidad de realizar tareas de forma concurrente, usando la abstracción Thread, con la ejecución concurrente surge el problema de acceder a recursos compartidos y causar efectos indeseados debido a dicho acceso concurrente, esto se conoce como el problema de la región critica, tenemos un objeto que debe ser usado de forma secuencial, porque su uso concurrente produce resultados indeseados, en la teoría se estudian los algoritmos de Dekker, los semáforos y algunas otras soluciones incluso a nivel de hardware como test&set. En Java el acceso a un objeto puede ser forzado de forma serial, con el uso de métodos sincronizados  en este ejemplo, se crean varios Threads accediendo todos a una variable interna protegida por un método de acceso sincronizado, lo que garantiza acceso secuencial. Descargar Codigo Fuente  en JDeveloper