semÁforos y monitores

19
 CAMILO ANDRES PINTO OVALLE CODIGO: 160002423

Upload: camilo-andres-pinto-ovalle

Post on 19-Jul-2015

133 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 1/19

 

CAMILO ANDRES PINTO OVALLE

CODIGO: 160002423

Page 2: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 2/19

 

Un semáforo es una estructura diseñada para sincronizardos o más threads o procesos, de modo que su ejecuciónse realice de forma ordenada y sin conflictos entre ellos.

Un semáforo nos sirve para poder permitir o restringir a losprocesos o hilos el acceso a algún recurso compartido.

Un semáforo básico es una estructura formada por una

posición de memoria y dos instrucciones, una parareservarlo y otra para liberarlo. A esto se le puede añadiruna cola de threads para recordar el orden en que sehicieron las peticiones.

Page 3: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 3/19

 

Los semáforos cuentan con operaciones básicas, unade ellas es para reservarlo y la otra para liberarlo,

wait(espera) y signal(señal) respectivamente,equivalente down y up.

Existe una tercera operación que consiste en

inicializar el semáforo.

Page 4: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 4/19

 

Decrementaen una unidad el semáforo.

Bloquea hilo/proceso si el semáforo es menor que cero,sino entonces permite a hilo/proceso continuar.

Llamada W(semaforo) o down(semaforo).

Page 5: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 5/19

 

Incrementa semáforo en uno y si hay algúnproceso/hebra esperando lo despierta.

Existe un valor máximo para incrementar el semáforo,este no se va a infinito.

Page 6: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 6/19

 

Los semáforos pueden ser de 2 tipos: Binarios o Generales(Contadores).

La operación de inicializador definirá si el semáforo serábinario o no, es decir, si se inicializa con 1, el semáforoserá binario ya que solo podrá manejar un recursocompartido, en caso de tener “N” recursos compartidos seinicializara con “N”.

Page 7: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 7/19

Existen semáforos que tienen la operación de manejar unacola del tipo FIFO (PEPS) para llevar el control de losprocesos que están solicitando los recursos, así cuando se

liberen los recursos estos puedan asignarle dicho recursoal primer proceso que lo solicito.

 

Page 8: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 8/19

Los semáforos se emplean para permitir el acceso a diferentespartes de programas (llamados secciones criticas) donde semanipulan variables o recursos que deben ser accedidos de formaespecial. Según el valor con que son inicializados se permiten a máso menos procesos utilizar el recurso de forma simultánea.

Un tipo simple de semáforo es el binario, que puede tomarsolamente los valores 0 y 1. Se inicializan en 1 y son usados cuandosólo un proceso puede acceder a un recurso a la vez. Sonesencialmente lo mismo que los mutex. Cuando el recurso está

disponible, un proceso accede y decrementa el valor del semáforocon la operación P. El valor queda entonces en 0, lo que hace que siotro proceso intenta decrementarlo tenga que esperar. Cuando elproceso que decrementó el semáforo realiza una operación V , algúnproceso que estaba esperando comienza a utilizar el recurso.

 

Page 9: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 9/19

Los semáforos pueden ser usados para diferentespropósitos, entre ellos:

Implementar cierres de exclusion mutua o locks. Barreras. Permitir a un máximo de N threads (hilos) acceder a un

recurso, inicializando el semáforo en N. Notificación. Inicializando el semáforo en 0 puede

usarse para comunicación entre threads sobre ladisponibilidad de un recurso.

 

Page 10: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 10/19

No se puede imponer el uso correcto de los “Down” y “Up” 

No existe una asociación entre el semáforo y el recurso

Entre “Down” y “Up” el usuario puede realizar cualquieroperación con el recurso.

 

Page 11: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 11/19

Un monitor encapsula el código relativo a un recursocompartido en un solo módulo de programa

Los monitores son estructuras de un lenguaje de

programación que ofrecen una funcionalidad equivalente ala de los semáforos y que son más fáciles de controlar.

Los monitores fueron propuestos por Brich Hansen ymejorados por Hoare para poder utilizar procesosautomáticos de sincronización.

 

Page 12: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 12/19

Un módulo monitor encapsula la exclusión mutua de datos y

procedimientos que pueden acceder a los datos protegidos.Los usuarios pueden hacer llamadas a estos procedimientosusando al monitor como una tabla de estado para determinarcuando proceder y cuando suspender operaciones.

El concepto de monitor fue definido por primera vezpor Charles Antony Richard Hoare en un artículo del año 1974.

La estructura de los monitores se ha implementado en varios

lenguajes de programación, incluido Pascalconcurrente, Modula-2, Modula-3 y Java, y como biblioteca deprogramas.

 

Page 13: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 13/19

Mantenimiento más simple.

Menos errores de programación.

La interfaz del monitor es un conjunto de funcionesque representan las diferentes operaciones quepueden hacerse con el recurso.

 

Page 14: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 14/19

Las características básicas de un monitor son las siguientes:

Las variables de datos locales están sólo accesibles para losprocedimientos del monitor y no para procedimientos externos.

Un proceso entra en el monitor invocando a uno de susprocedimientos.

Sólo un proceso puede estar ejecutando en el monitor en un

instante dado; cualquier otro proceso que haya invocado almonitor quedará suspendido mientras espera que el monitoresté disponible.

 

Page 15: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 15/19

Un monitor tiene cuatro componentes: inicialización, datos privados,métodos del monitor y cola de entrada.

Inicialización: contiene el código a ser ejecutado cuando el monitor escreado.

Datos privados: contiene los procedimientos privados, que sólopueden ser usados desde dentro del monitor y no son visibles desdefuera.

Métodos del monitor: son los procedimientos que pueden serllamados desde fuera del monitor.

Cola de entrada: contiene a los hilos que han llamado a algún métododel monitor pero no han podido adquirir permiso para ejecutarlos aún.

 

Page 16: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 16/19

En la definición original de Hoare, el thread que ejecuta cond_signal  lecede el monitor al thread que esperaba. El monitor toma entonces ellock y se lo entrega al thread durmiente, que reanuda la ejecución. Mástarde cuando el monitor quede libre nuevamente el thread que cedió ellock volverá a ejecutar.

Ventajas: El thread que reanuda la ejecución puede hacerlo inmediatamente sin

fijarse si la condición se cumple, porque desde que seejecutó cond_signal  hasta que llegó su turno de ejecutar ningún

proceso puede cambiarla.

El thread despertado ya estaba esperando desde antes, por lo quepodría suponerse que es más urgente ejecutarlo a seguir con elproceso despertante.

 

Page 17: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 17/19

Desventajas: Si el proceso que ejecuta cond_signal  no terminó con su

ejecución se necesitarán dos cambios de contexto para quevuelva a tomar el lock del monitor.

Al despertar a un thread que espera en una variable decondición, se debe asegurar que reanude su ejecucióninmediatamente. De otra forma, algún otro thread podríacambiar la condición. Esto implica que la planificación debe

ser muy fiable, y dificulta la implementación.

 

Page 18: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 18/19

Butler W. Lampson y David D. Redell en 1980 desarrollaron unadefinición diferente de monitores para el lenguaje Mesa que lidia con lasdesventajas de los monitores de tipo Hoare y añade algunascaracterísticas.

En los monitores de Lampson y Redell el thread que

ejecuta cond_signal  sobre una variable de condición continúa con suejecución dentro del monitor. Si hay otro thread esperando en esavariable de condición, se despierta y lo deja como listo. Podrá intentarentrar el monitor cuando éste quede libre, aunque puede suceder queotro thread logre entrar antes. Este nuevo thread puede cambiar la

condición por la cual el primer thread estaba durmiendo. Cuandoreanude la ejecución el durmiente, debería verificar que la condiciónefectivamente es la que necesita para seguir ejecutando. En el procesoque durmió, por lo tanto, es necesario cambiar la instrucción if por while ,para que al despertar compruebe nuevamente la condición, y de no ser

cierta vuelva a llamar a cond_wait . 

Page 19: SemÁforos y monitores

5/17/2018 SemÁforos y monitores - slidepdf.com

http://slidepdf.com/reader/full/semaforos-y-monitores 19/19

Los monitores del tipo Mesa son menos propensos aerrores, ya que un thread podría hacer una llamadaincorrecta a cond_signal  o a cond_broadcast  sin afectar althread en espera, que verificará la condición y seguirádurmiendo si no fuera la esperada.