Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mecanismos de sincronización:
Detiene la ejecución de un proceso hasta…
Mecanismos de sincronización:
- Detiene la ejecución de un proceso hasta que otro evento suceda, son necesarias en procesos concurrentes.
- Sus operaciones deben ser atómicas (completada de principio a fin sin interrupciones)
Exclusión Mutua,
Requisitos:
- Dentro de la sección critica solo un proceso debe tener acceso.
- Un proceso interrumpido en sección no critica, no debe interferir con otros procesos.
- Un proceso no debe solicitar acceso a una sección crítica para quedarse indefinidamente, no se permite el interbloqueo.
- Un proceso debe permanecer tiempo finito.
- Si en la sección critica no hay un proceso, cualquier proceso puede solicitar el acceso y acceder.
- No se debe suponer sobre la velocidad de los procesos.
Un proceso excluye de manera temporal a los demás procesos del uso del recurso compartido, logrando garantizar la integridad del sistema.
para usar
- Condición necesaria para que no se presente un bloqueo mutuo.
Candados
Algoritmos:
Modos de bloqueo:
Esquema: Operaciones en lenguaje de
definición de datos, mantiene la estructura.
-
Actualización: Escritura (modificación de datos), es exclusiva, una sola transacción puede adquirir este bloqueo. "Write-locks"
Compartido: cuando sea de solo lectura,
"Read-lock"
Características
El sistema Gestor de Base de Datos impone los bloqueos necesarios, limitando el acceso a recursos compartidos, evitando que dos procesos accedan al mismo tiempo a recursos compartidos.
El bloqueo se almacena en una tabla de bloqueos en modo (elemento, tipo de bloqueo y transacción)
Restricciones:
- readquisición no permitida.
- Solo el dueño desbloquea.
Métodos:
- Exclusión mutua
- Regiones Críticas
-
Implementación
Instalado el complemento en el bloque de código de la clase jclasslib Bytecode viewer, se presentan las instrucciones del código.
Instrucciones Byte:
- monitorrenter: entrar y obtener la cerradura,
entrando en el bloque de código de sincronización.
- monitorexit: libera la cerradura y sale
del bloque de sincronización.
Funcionamiento
Transacciones
Sistemas recurrentes usados por los sistemas gestores de bases de datos, que a través de modelos de procesos concurrentes permiten la ejecución de operaciones concurrentes, conservando la integridad de los datos.
Se delimita por:
- Begin transaction
- End transaction
Propiedades:
Atomicidad: Operaciones atómicas (discretas), suceden 100% o no.
Consistencia: permite asegurar datos íntegros, solidos y exactos.
Aislamiento: Operaciones independientes, definiendo como y cuando se presentaran los cambios para las demás operaciones concurrentes, se da en diferentes niveles.
Durabilidad: asegura la persistencia de los cambios efectuados en los datos.
Funcionamiento:
Al programar la ejecución del subproceso, su estado pasa a “Runnable”, de donde el subproceso puede pasar a los estados de “blocked”, “waiting”, “timed_waiting” o “terminated”, una vez que el hilo ha finalizado su ejecución, y ha pasado por los estados anteriores, se mueve a “terminated”.
Implementación:
El hilo se crea en estado “nuevo”, cuando se llama al método comenzar (.star()) el hilo se mueve a “ejecutable”.
Al llamar al método join() dentro de la instancia del subproceso,
el subproceso que ejecuta la declaración queda en espera
hasta que el subproceso se mueva al estado de “terminado”.
Algoritmos:
Estados del hilo, en donde puede estar bloqueado, con su tipo de constante
- Terminado public static final Thread.State TERMINATED
- Espera temporizada public static final Thread.State TIME_WAITING
- Esperando public static final Thread.State WAITING
- Bloqueado public static final Thread.State BLOCKED
- Ejecutable public static final Thread.State RUNNABLE
- Nuevo public static final Thread.State NEW
thread.getstate() Estado actual del hilo
java.lang.Thread.State clase que proporciona
las constantes ENUM para el estado del hilo.
Monitor
Mecanismo de alto nivel, interfaz de acceso, contiene una colección de datos y procedimientos necesarios para realizar la asignación de un recurso o grupo de recursos controlando la concurrencia.
sincronización de procesos conclusión, solo un proceso puede estar activo
ofrecen:
- Seguridad
- Robustez
- Escalabilidad
- Complementan al encapsulamiento de un Objeto
Funcionamiento:
Métodos ejecutables solo por exclusión mutua, solo un proceso accede a los recursos compartidos.
Como el monitor indica bajo permiso de acceso, la liberación no hay riesgo de pérdida de señales (con las que se puede decir despierta).
El hilo despertado se modifica de la lista de bloqueados a la lista de espera, para posteriormente continuar con la ejecución del método que invoco al principio.
-
-
El riesgo de corrección es menor que en los semáforos, dado que no solo esta centralizado el acceso a los recursos, ya que aunque el señalador puede invocarse desde fuera del monitor, el que emite el acceso es el monitor.
Semáforos:
Características:
Estructura diseñada para sincronizar dos o más hilos o procesos, centralizando su acceso a los recursos compartidos y permitiendo o restringiendo a los mismos logrando ejecución coordinada y sencilla, por ende mas fácil de implementar. Puede limitar el numero de procesos que acceden concurrentemente y los va contando, estableciendo protocolos de:
- adquisición (wait)
- liberación (signal)
Señalización:
Se presenta asi
-
• Signal() siempre tiene un efecto, puede desbloquear cualquier proceso, para continuar continuar en ejecución inmediatamente.
Algoritmos:
Implementación
Se crea partiendo de una clase con atributos privados, de tipo numero entero y con métodos públicos para liberar y pasar.
Sin espera Ocupada:
- block - invoca operación en la cola de espera, ubicando el proceso.
- wakeup - mueve un proceso de la cola de espera a la de listos.
Funcionamiento:
Al centralizar el acceso a los recursos compartidos, puede permitir o restringirlos, al ir contando los accesos o los procesos en ejecución, si el valor del semáforo es positivo al invocarlo decrementa el valor, si es negativo al invocarlo se bloquea.
Si no hay hilo en espera, el valor del semáforo se incrementa.
Son difíciles de corregir ya que las llamadas a las funciones quedan repartidas dentro del código del programa.
Modelos de comunicación:
Características:
Transferencia de información de un proceso a otro, cumplimiendo con las dependencias de temporalidad entre ellos, con un objetivo en común para el cual cooperan, pero compitiendo por el uso de los recursos compartidos.
Funcionamiento:Comunicación por mensajes, operaciones básicas desde el sistema operativo,
- Enviando mensaje a destino.
- Recibiendo mensaje de origen.
Acorde a origen y destino,
- Comunicación directa, proceso a proceso.
- Comunicación indirecta, entre buzones y puertos.
Capacidad del enlace,
- Comunicación síncrona, capacidad=0
- Comunicación asíncrona, capacidad superior a 0.
Implementación:
Los objetos tiene el método de mecanismo en espera/notificación.
- Wait(): hilo entra en espera, se puede establecer el tiempo de espera, el hilo no competirá por el objeto de bloqueo.
- Notify(): aleatoriamente se notifican a un subproceso, para que vuelva al estado de espera.
- NotifyAll(): despiértalos en espera y los ingresa a la cola de contención de bloqueo de objeto.
Algoritmos:
Recepción de mensaje: activado en la recepción. - Envío de mensaje: activado en la aceptación. - Temporizador (timeout): activado cuando el select permanecio en espera el tiempo especificado. - Finalización coordinada (terminated): activado a la conclusión del proceso. - Opción por defecto: activado si el select no acepta opción dispuesta.
-
-
-
-
-
-