exposicion semaforos

8
Semáforos Giovanny Leal Amaya Eduar Melo Roa

Upload: john-goyeneche

Post on 16-Aug-2015

48 views

Category:

Software


7 download

TRANSCRIPT

Page 1: Exposicion semaforos

Semáforos

Giovanny Leal AmayaEduar Melo Roa

Page 2: Exposicion semaforos

¿Qué es?

Un semáforo es una variable especial que constituye una serie de opciones elementales para poder restringir o garantizar el acceso a los recursos en un sistema operativo con un entorno de multiprocesamiento (en el que se ejecutarán varios procesos concurrentemente). Fueron inventados por Edsger Dijkstra en 1965 y se usaron por primera vez en el sistema operativo THEOS.

Page 3: Exposicion semaforos

•Un semáforo es una estructura diseñada para sincronizar dos o másthreads o procesos, de modo que su ejecución se realice de formaordenada y sin conflictos entre ellos.

Page 4: Exposicion semaforos

Tipo de semáforos Semáforo Contador:Nos permiten llevar la cuenta del número de unidades de recurso compartido disponible en memoria, que va desde 0 hasta N.•Semáforo de Espera:Se emplea para forzar que un proceso pase a estado bloqueado hasta que se cumpla la condición que le permite ejecutarse. Por lo general, el contador vale 0 inicialmente, no obstante, podría tener un valor distinto de cero.

Page 5: Exposicion semaforos

•Semáforo de exclusión mutua:Inicialmente su contador vale 1 y permite que haya un único proceso simultáneamente dentro de la sección crítica.

Ventajas del uso de semáforosLa principal ventaja de los semáforos frente a los cerrojos es que permiten sincronizar dos o más procesos de manera que no se desperdician recursos de CPU realizando comprobaciones continuadas de la condición que permite progresar al proceso.

Page 6: Exposicion semaforos

•Desventajas del uso de semáforos

Mal uso por parte de los programadores.No hay nada que obligue a los

programadores a usarlos. Los compiladores no ofrecen ningún

mecanismo de comprobación sobre el correcto uso de los semáforos.

Son independientes del recurso compartido al que se asocian.

Page 7: Exposicion semaforos

• El por qué no se pueden usar directamente otras estructuras masclásicas, como por ejemplo usar una variable común para decidir si sepuede o no acceder a un recurso, se debe a que estamos en un sistemamultitarea: hacer esto implicaría realizar una espera activa(un bucle, comprobando constantemente si la variable está o no a 0,y así saber si podemos seguir ejecutando o no). Por otro lado, puedeocurrir algo mucho peor: supongamos que un proceso comprueba lavariable, y ve que el recurso está libre, por lo que procedería acambiar dicha variable de valor y seguir. Pues bien, si justo despuésde la comprobacion pero antes de que cambie el valor se conmuta detarea (puede pasar, pues el sistema operativo puede hacerlo encualquier momento), y el nuevo proceso comprueba la variable, comotodavía no se ha actualizado, creerá que el recurso está libre,e intentará tomarlo, haciendo que ambos programas fallen. Lo peordel caso es que se tratará de un error aleatorio: unas veces fallará(cuando se produzca cambio de tarea en ese punto) y otras no.

Ejemplo

Page 8: Exposicion semaforos

•Para evitarlo, se idearon los semáforos. Un semáforo básico es unaestructura formada por una posición de memoria y dos instrucciones,una para reservarlo y otra para liberarlo. A esto se le puede añadiruna cola de threads para recordar el orden en que se hicieron laspeticiones.