EL problema de Santa Claus
Enviado por p4ulb4de • 23 de Diciembre de 2020 • Ensayo • 2.015 Palabras (9 Páginas) • 736 Visitas
El PROBLEMA DE SANTA CLAUSS Charaja Torres Paul Benjamin Paralelismo, Concurrencia y Sistemas Distribuidos axebot654@gmail.com
INTRODUCCCION
Para poder dar solución a los problemas de concurrencia es necesario conocer alternativas para controlarlos, teniendo en cuenta que existen múltiples herramientas para poder controlar el acceso a la sección critica o recurso compartido como son los semáforos y monitores, todo esto para realizar una exclusión mutua y sincronizar los procesos.
Entonces para poder utilizar estas herramientas cabe recalcar que los semáforos nos ofrecen un control del acceso a la sección critica interna de los procesos y los monitores controlan el acceso mediante procesos externos.
El problema de Santa Clauss es un problema clásico de concurrencia, en el cual se hace una exclusión mutua y sincronización entre los procesos. Teniendo como objetivos solucionar la condición de sincronización con semáforos y monitores, otro objetivo es aplicar de manera practica la programación concurrente.
DESCRIPCIÓN DEL PROBLEMA
El problema de santa Claus esta en sincronizar y coordinar los procesos de Santa, los renos y los elfos.
Santa Claus duerme en el polo norte y solo puede ser despertado
- Todos los renos han vuelto de vacaciones
- Algunos duendes tienen problemas fabricando juguetes y deben pedir ayuda a santa
Para que santa pueda descansar los duendes han acordado hacerlo despertar a santa cuando 3 de ellos tengan problemas a la hora de fabricar los juguetes, en caso de que santa ya este ayudado a otro grupo de duendes, el siguiente grupo deberá esperar
En caso de que haya duendes esperando y todos los renos hayan regresado de vacaciones entonces santa Claus decidirá preparar el trineo y repartir los regalos, tener en cuenta que se da mas prioridad la entrega de regalos que la de fabricar regalos. El ultimo reno en llegar será el encargado en despertar a santa.
MARCO TEORICO
Concurrencia, se refiere a las situaciones en las que dos o más procesos puedan coincidir en el acceso a un recurso compartido o, dicho de otra forma, que requieran coordinarse en su ejecución. Para evitar dicha coincidencia, el sistema operativo ofrece mecanismos de arbitraje que permiten coordinar la ejecución de los procesos. (Dámaso, s.f.)
Sincronización, de alineación entre los datos provenientes de diversas fuentes, y su continua armonización en el tiempo. Vale decir, la coordinación de procesos que se ejecutan simultáneamente, a fin de obtener un orden de ejecución correcto y evitar errores del sistema. (Pita, s.f.)
Procesos, Cálculo secuencial con su propio flujo de control, es una instancia de un programa que está siendo ejecutado en el ordenador. (Rossainz) .
Un proceso es una unidad de ejecución gestionada por el sistema operativo. Cada proceso tiene su propio espacio de direcciones al cual no pueden acceder otros procesos. (Rodas)
Monitores son objetos destinados a ser usados sin peligro por más de un hilo de ejecución. La característica que principalmente los define es que sus métodos son ejecutados con exclusión mutua. (Villaca, 2013)
METODOLOGIA
Mecanismos de comunicación
Los mecanismos de comunicación en el problema de santa Claus se dan entre los 3 procesos, tanto cuando los duendes comunican, cuando tienen un grupo de 3 para pedir ayuda, así también el proceso renos comunica cuando están completos. El proceso Santa Claus comunica su estado despierto o descansando.
Mecanismos de sincronización
Los mecanismos de sincronización fueron implementados para que los procesos no pudiesen interrumpir a Santa Claus, caso por ejemplo si se completaron los renos, no pueden interrumpir si ya esta ayudando a los duendes, así también si los renos ya están completos y santa esta preparando el trineo, los duendes no pueden interrumpir a Santa Claus.
SemaforoSanta: Semáforo binario utilizado para despertar a Santa Claus.
RenosSemaforo: Semáforo contador utilizado para notificar a los renos que van a emprender el viaje en trineo.
DuendesSemaforo: Semáforo contador utilizado para notificar a los duendes que Santa los va a ayudar.
Lenguaje de programación, Librerías utilizadas
El lenguaje de programación que utilice es Java, este lenguaje tiene librerías que ayudan a la elaboración de programas concurrentes, como el paquete concurrent.
El cual contiene muchas clases que resuelven efectivamente muchos problemas comunes de concurrencia, sin requerir que usted siquiera sude una gota.
import java.util.concurrent.BrokenBarrierException;
Produce una excepción cuando un subproceso intenta esperar sobre una barrera que está en un estado roto o que ingresa al estado roto mientras el hilo está esperando
import java.util.concurrent.CyclicBarrier;
Una ayuda de sincronización que permite que un conjunto de subprocesos espere entre sí para llegar a un punto de barrera común. Los CyclicBarriers son útiles en programas que involucran un grupo de subprocesos de tamaño fijo que ocasionalmente deben esperar el uno al otro. La barrera se llama cíclica porque puede reutilizarse después de que se liberan los hilos en espera. La barrera se llama cíclica porque puede reutilizarse después de que se liberan los hilos en espera.
import java.util.concurrent.Semaphore;
mantiene un conjunto de permisos. Cada adquirir () bloquea si es necesario hasta que haya un permiso disponible, y luego lo toma. Cada versión () agrega un permiso, potencialmente liberando a un adquirente de bloqueo.
import java.util.concurrent.atomic.AtomicInteger;
actualiza el valor de un int automáticamente se usa en aplicaciones tales como contadores incrementados atómicamente, y no se puede usar como reemplazo de un Integer. Sin embargo, esta clase sí extiende el Número para permitir el acceso uniforme de herramientas y utilidades que se ocupan de clases basadas en números.
...