Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mecanismos de sincronización y su relación con monitores., image, image,…
Mecanismos de sincronización y su relación con monitores.
Caracteristicas:
Cualquier proceso que quiera utilizar el recurso tiene que pedir permiso al monitor y, cuando ya no necesite el recurso, debe devolver el permiso, para que el monitor registre que ya no lo est´a utilizando.
La petición y devolución se implementan a través de los procedimientos de acceso exportados por el monitor
Un monitor es un m´odulo que “encapsula” alg´un recurso compartido o los procedimientos de acceso a dicho recurso, cuando ´este no puede ser arbitrariamente utilizado por los procesos del sistema.
El monitor contiene las variables que representan el estado del recurso y las operaciones de acceso al mismo como si fuera un tipo abstracto de datos.
Funcionamiento:
Dado que las operaciones de liberar al candado y unirse a la lista de espera por una variable de condición son operaciones atómicas no hay riesgo de pérdida de las señales (i.e. `wakeup').
Al hilo despertado por la señal se le desplaza de esa lista de bloqueados y se le coloca en la lista de hilos en espera por entrar al monitor.
Todos los métodos de un monitor deben ejecutarse en exclusión mutua.
Habrá únicamente un proceso accediendo a memoria compartida
Una vez que el candado sea readquirido, el hilo en cuestión continúa la ejecución del método de servicio que invocó anteriormente (i.e. la primera vez para entrar al monitor).
Para proporcionar mecanismos para sincronización de eventos (condición de sincronización) un monitor puede contener variables de condición, las cuales pueden manipularse mediante las operaciones signal y wait.
wait: Un hilo que espera a que ocurra un evento indicado por una variable de condición deja al monitor temporalmente, libera el candado y se une a la lista de hilos bloqueados correspondiente a esa variable de condición.
signal: Cada señal con respecto a una variable de condición despierta a un hilo de la lista de hilos bloqueados correspondiente a esa variable de condición (no necesariamente el que lleva más tiempo en espera), si
Implementación:
Los monitores se implanta de acuerdo a una de las diferentes disciplinas de señalización:
signal and wait:
El hilo que recibe la señal (señalado o despertado) se ejecuta dentro del monitor.
Mientras que el hilo que emitió la señal (señalador) espera a que el señalado salga del monitor y entonces pueda continuar el señalador.
signal and continue:
El hilo despertado espera a que el señalador deje el monitor y entonces continúa su ejecución dentro del monitor.
signal and exit:
Si un hilo que esté ejecutándose dentro del monitor emite una señal respecto una variable de condición entonces debe dejar el monitor inmediatamente ejecutando una instrucción return en el método de servicio que invocó.
Se despierta a un hilo de la lista de hilos bloqueados correspondiente a la variable de condición y continúa ejecutándose dentro del monitor.
Algoritmos que ejemplifiquen cada mecanismos:
Después de llamar al método wait (), el estado del hilo cambia de RUNNING a WAITING, y el hilo actual se coloca en la cola de espera del objeto.
Después de llamar al método notify () o notifyAll (), el subproceso en espera aún no regresará de wait ().
Cuando use wait (), notify () y notifyAll (), primero debe bloquear el objeto que realiza la llamada.
Después de que el subproceso que llama a notify () o notifAll () libera el bloqueo, el subproceso en espera tiene la posibilidad de regresar desde wait ().
nombre_mon.proc(argumentos)
Donde nombre mon es el nombre del monitor, proc es uno de los procedimientos exportados, y argumentos son sus parámetros de entrada reales.
El método notify () mueve un hilo de espera en la cola de espera de la cola de espera a la cola de sincronización, y el método notifyAll () mueve todos los hilos de la cola de espera a la cola de sincronización, y el estado del hilo movido cambia de WAITING. Está BLOQUEADO.
La premisa de regresar del método wait () es obtener el bloqueo del objeto que llama.
Universidad del Valle de México
Materia: Programación concurrente
Docente: José Urquidez Ramírez
Alumna: Guadalupe de la Cruz Xalocan