SlideShare uma empresa Scribd logo
1 de 8
Semáforos
Giovanny Leal Amaya
Eduar Melo Roa
¿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.
• Un semáforo es una estructura diseñada para
sincronizar dos o más
threads o procesos, de modo que su ejecución se
realice de forma
ordenada y sin conflictos entre ellos.
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.
• 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áforos
La 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.
• 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.
• El por qué no se pueden usar directamente otras estructuras mas
clásicas, como por ejemplo usar una variable común para decidir si
se
puede o no acceder a un recurso, se debe a que estamos en un
sistema
multitarea: 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, puede
ocurrir algo mucho peor: supongamos que un proceso comprueba la
variable, y ve que el recurso está libre, por lo que procedería a
cambiar dicha variable de valor y seguir. Pues bien, si justo después
de la comprobacion pero antes de que cambie el valor se conmuta de
tarea (puede pasar, pues el sistema operativo puede hacerlo en
cualquier momento), y el nuevo proceso comprueba la variable,
como
todavía no se ha actualizado, creerá que el recurso está libre,
e intentará tomarlo, haciendo que ambos programas fallen. Lo peor
del 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
• Para evitarlo, se idearon los semáforos. Un
semáforo básico es una
estructura formada por una posición de
memoria y dos instrucciones,
una para reservarlo y otra para liberarlo. A esto
se le puede añadir
una cola de threads para recordar el orden en
que se hicieron las
peticiones.

Mais conteúdo relacionado

Mais procurados

Arquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidasArquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidasJimRocy
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencialiras loca
 
Control de flujo por hardware o software,
Control de flujo  por hardware o software,Control de flujo  por hardware o software,
Control de flujo por hardware o software,Victor Mijangos
 
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesosSO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesosFranklin Parrales Bravo
 
Modelo requisitos UML
Modelo requisitos UMLModelo requisitos UML
Modelo requisitos UMLramirezjaime
 
Sistemas operativos por estructura
Sistemas operativos por estructuraSistemas operativos por estructura
Sistemas operativos por estructuraProf. Javier Troya
 
Cuestionario procesos
Cuestionario procesos Cuestionario procesos
Cuestionario procesos Gabriel Garcia
 
Funciones de administracion de memoria
Funciones de administracion de memoriaFunciones de administracion de memoria
Funciones de administracion de memoriaMiguel Magaña
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasYESENIA CETINA
 
Diagrama de-estado-de-procesos
Diagrama de-estado-de-procesosDiagrama de-estado-de-procesos
Diagrama de-estado-de-procesosGiant_serch
 
Problemas de sincronizacion de procesos
Problemas de sincronizacion de procesosProblemas de sincronizacion de procesos
Problemas de sincronizacion de procesosAbimael hernandez
 
Organización y administración de la memoria virtual
Organización y administración de la memoria virtualOrganización y administración de la memoria virtual
Organización y administración de la memoria virtualOscar LS
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasYESENIA CETINA
 
Instalacion de cassandra
Instalacion de cassandraInstalacion de cassandra
Instalacion de cassandraLuis Alvarado
 

Mais procurados (20)

Arquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidasArquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidas
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencia
 
Algoritmo del baquero
Algoritmo del baqueroAlgoritmo del baquero
Algoritmo del baquero
 
Control de flujo por hardware o software,
Control de flujo  por hardware o software,Control de flujo  por hardware o software,
Control de flujo por hardware o software,
 
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesosSO Unidad 2: Mecanismos de comunicación y sincronización de procesos
SO Unidad 2: Mecanismos de comunicación y sincronización de procesos
 
Modelo requisitos UML
Modelo requisitos UMLModelo requisitos UML
Modelo requisitos UML
 
Sistemas operativos por estructura
Sistemas operativos por estructuraSistemas operativos por estructura
Sistemas operativos por estructura
 
control de concurrencia
control de concurrenciacontrol de concurrencia
control de concurrencia
 
Cuestionario procesos
Cuestionario procesos Cuestionario procesos
Cuestionario procesos
 
Problema de los Filosofos
Problema de los FilosofosProblema de los Filosofos
Problema de los Filosofos
 
Funciones de administracion de memoria
Funciones de administracion de memoriaFunciones de administracion de memoria
Funciones de administracion de memoria
 
OOSE
OOSEOOSE
OOSE
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Diagrama de-estado-de-procesos
Diagrama de-estado-de-procesosDiagrama de-estado-de-procesos
Diagrama de-estado-de-procesos
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Problemas de sincronizacion de procesos
Problemas de sincronizacion de procesosProblemas de sincronizacion de procesos
Problemas de sincronizacion de procesos
 
Organización y administración de la memoria virtual
Organización y administración de la memoria virtualOrganización y administración de la memoria virtual
Organización y administración de la memoria virtual
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Instalacion de cassandra
Instalacion de cassandraInstalacion de cassandra
Instalacion de cassandra
 

Semelhante a Semáforos guía

Semelhante a Semáforos guía (20)

Procesos_so
Procesos_soProcesos_so
Procesos_so
 
Funciones de un SO
Funciones de un SOFunciones de un SO
Funciones de un SO
 
Descripcion y control de procesos
Descripcion y control de procesosDescripcion y control de procesos
Descripcion y control de procesos
 
Vega_NoAnimation.pptx
Vega_NoAnimation.pptxVega_NoAnimation.pptx
Vega_NoAnimation.pptx
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Comunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de ProcesosComunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de Procesos
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Monitores
MonitoresMonitores
Monitores
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
S Incronizacion De Procesos
S Incronizacion De ProcesosS Incronizacion De Procesos
S Incronizacion De Procesos
 
2.4 Cuestionario de comunicacion entre procesos
2.4 Cuestionario de comunicacion entre procesos2.4 Cuestionario de comunicacion entre procesos
2.4 Cuestionario de comunicacion entre procesos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Presentación1
Presentación1Presentación1
Presentación1
 
Unidad 2 jacinto
Unidad 2 jacintoUnidad 2 jacinto
Unidad 2 jacinto
 
2° unidad sistemas operativos
2° unidad sistemas operativos2° unidad sistemas operativos
2° unidad sistemas operativos
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Portafolio 2
Portafolio 2Portafolio 2
Portafolio 2
 
Taller interbloqueo
Taller interbloqueo Taller interbloqueo
Taller interbloqueo
 
Elementos funcionales
Elementos funcionalesElementos funcionales
Elementos funcionales
 

Mais de John Goyeneche

Mais de John Goyeneche (6)

Configuración multiprocesamiento
Configuración multiprocesamientoConfiguración multiprocesamiento
Configuración multiprocesamiento
 
Bloqueos mutuos
Bloqueos mutuosBloqueos mutuos
Bloqueos mutuos
 
Hilos hebras
Hilos hebrasHilos hebras
Hilos hebras
 
Algoritmo del banquero
Algoritmo del banqueroAlgoritmo del banquero
Algoritmo del banquero
 
Kernel
KernelKernel
Kernel
 
Modelos risc y cisc
Modelos risc y ciscModelos risc y cisc
Modelos risc y cisc
 

Semáforos guía

  • 2. ¿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.
  • 3. • Un semáforo es una estructura diseñada para sincronizar dos o más threads o procesos, de modo que su ejecución se realice de forma ordenada y sin conflictos entre ellos.
  • 4. 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.
  • 5. • 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áforos La 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.
  • 6. • 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.
  • 7. • El por qué no se pueden usar directamente otras estructuras mas clásicas, como por ejemplo usar una variable común para decidir si se puede o no acceder a un recurso, se debe a que estamos en un sistema multitarea: 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, puede ocurrir algo mucho peor: supongamos que un proceso comprueba la variable, y ve que el recurso está libre, por lo que procedería a cambiar dicha variable de valor y seguir. Pues bien, si justo después de la comprobacion pero antes de que cambie el valor se conmuta de tarea (puede pasar, pues el sistema operativo puede hacerlo en cualquier momento), y el nuevo proceso comprueba la variable, como todavía no se ha actualizado, creerá que el recurso está libre, e intentará tomarlo, haciendo que ambos programas fallen. Lo peor del 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
  • 8. • Para evitarlo, se idearon los semáforos. Un semáforo básico es una estructura formada por una posición de memoria y dos instrucciones, una para reservarlo y otra para liberarlo. A esto se le puede añadir una cola de threads para recordar el orden en que se hicieron las peticiones.