SEMFOROS EN UNIX - PowerPoint PPT Presentation

1 / 13
About This Presentation
Title:

SEMFOROS EN UNIX

Description:

Los procesos en UNIX no comparten memoria, ni siquiera los padres con sus hijos. El sistema operativo UNIX define tres clases de herramientas de comunicaci n ... – PowerPoint PPT presentation

Number of Views:47
Avg rating:3.0/5.0
Slides: 14
Provided by: cristinalp
Category:

less

Transcript and Presenter's Notes

Title: SEMFOROS EN UNIX


1
SEMÁFOROS EN UNIX
2
Comunicación entre procesos (IPC)
  • Los procesos en UNIX no comparten memoria, ni
    siquiera los padres con sus hijos.
  • El sistema operativo UNIX define tres clases de
    herramientas de comunicación entre procesos
    (IPC) los semáforos, la memoria compartida y los
    mensajes.

3
DEFINICIÓN
  • Dijkstra definió un semáforo como una variable de
    sincronización que es manipulada atómicamente a
    través de las operaciones wait(s) (una operación
    P) y signal(s) (una operación V).

4
OBJETIVO
  • Se utilizan indistintamente para sincronizar 2 o
    más procesos que necesitan compartir un recurso.
  • Están precodificados y estandarizados- su
    operación en sí misma está libre de errores.
  • Son eficientes los procesos al esperar un
    recurso no consumen ciclos del procesador.

5
Características
  • Un semáforo es un mecanismo para prevenir la
    colisión que se produce cuando dos o más procesos
    solicitan simultáneamente el uso de un recurso
    que deben compartir.
  • Implantados bajo UNIX pueden utilizarse para
    fines de comunicación, ya que es posible
    consultar el valor de un semáforo.
  • Dijkstra define un semáforo S como un objeto de
    tipo entero sobre el que se pueden realizar dos
    operaciones P y V2.
  • La operación P decrementa el valor del semáforo y
    se utiliza para adquirirlo o bloquearlo. La
    operación V incrementa el valor del semáforo y se
    utiliza para liberarlo.

6
  • Las operaciones P y V deben ser atómicas para que
    funcionen correctamente. Esto quiere decir que
    una operación P no puede ser interrumpida por
    otra operación P o V, y lo mismo ocurre para V.
    Esto garantiza que, cuando varios procesos
    compitan por la adquisición de un semáforo, solo
    uno de ellos podrá realizar la operación.

7
  • Puede ser manipulado (consultado o modificado)
    por cualquier proceso que conozca el
    identificador del semáforo (semid) en cuestión.
  • Al crearse el semáforo se deben especificar los
    permisos de acceso para el resto de usuarios.
    Como resultado de las operaciones, el proceso
    puede quedar bloqueado a la espera de que el
    semáforo tome un cierto valor, si así se desea, o
    continuar su ejecución.
  • Normalmente, un semid identifica a un array de
    semáforos que serán distinguidos mediante su
    número de semáforo (que va desde 0 hasta N-1,
    siendo N el número especificado al crear la
    estructura de semáforo con semget).

8
Exclusión mutua entre procesos
  • Los algoritmos de exclusión mutua (comúnmente
    abreviada como mutex) se usan en programación
    concurrente para evitar que fragmentos de código
    conocidos como secciones críticas accedan
    concurrentemente a recursos que no pueden ser
    compartidos.
  • La exclusión mutua utilizando semáforos se logra
    inicializando un semáforo a 1,
  • comenzando todas las secciones críticas con una
    operación wait y finalizando todas las secciones
    críticas con una operación signal.

9
Componentes de un semáforo
  • Generalización del concepto de Dijkstra
  • Se compone de los siguientes elementos
  • El valor del semáforo
  • El identificador del último proceso que hay
    esperando a que el valor del semáforo se
    incremente.
  • El número de procesos que hay esperando a que el
    semáforo tome el valor 0

10
IMPLEMENTACIÓN
  • Asociado a cada semáforo tenemos una estructura
    un contador y una cola.
  • El contador nos indica el estado del semáforo
  • gt0 el semáforo esta libre o disponible
  • lt0 el semáforo esta en uso
  • lt0 hay uno o varios threads esperando por el
    semáforo
  • La cola mantiene una referencia a todos los
    threads que están esperando
  • Si se ejecuta un wait y el semáforo esta libre,
    se puede continuar si no, se bloquea en la cola
    de threads en espera.
  • Un signal desbloquea un thread, si esta esperando

11
Interpretación práctica de las operaciones sobre
semáforos
  • Operación wait(S)
  • Pedir un recurso
  • Tomar un recurso
  • Disponer de un recurso
  • Asignar un recurso
  • Operación signal(S)
  • Dar un recurso
  • Regresar un recurso
  • Reponer un recurso
  • Liberar un recurso

Los semáforos se inicializan con el número de
recursos disponibles o a compartir
12
Tipos de semáforos
  • Hay dos tipos de semáforos dependiendo de su
    valor inicial
  • Semáforo binario. Garantiza el acceso exclusivo a
    algún recurso. El semáforo es inicializado a 1.
    También es llamado semáforo mutex.
  • Semáforos generales. Representan un recursos con
    muchas unidades disponibles (indicado por el
    número al que es inicializado el semáforo). Un
    semáforo de éste tipo deja pasar a tantos threads
    (o procesos) como recursos haya disponibles.

13
CONCLUSIONES
  • Necesarios. Para sincronizar el acceso a sus
    estructuras de datos para asegurar su
    consistencia. ?
  • Eficiencia. Evita que los procesos que esperan el
    recurso no consumen ciclos del procesador. ?
  • Seguridad. En Unix se puede realizar un conjunto
    de operaciones sobre un conjunto de semáforos, si
    no es posible completar una operación ninguna de
    las operaciones se llevará a cabo. ?
  • No Errores. Como están precodificados, garantizan
    que su operación esta libre de errores. ?
  • No colisiones. Objetivo principal de los
    semáforos. ?
Write a Comment
User Comments (0)
About PowerShow.com