Volver al temario
Tema 04 · 70 páginas

Comunicación y sincronización

Tema completo Modo estudio
GUÍA DE ESTUDIO · Páginas 2122 Ver PDF

2.2.3. Consideraciones sobre la implementación de los semáforos

Material de estudio basado en la edición de 2014. Borrador pendiente de revisión editorial independiente.

Consideraciones sobre la Implementación de los Semáforos

Resumen

Espera activa vs. bloqueo

La operación sem_wait debe esperar hasta que el contador alcance un valor determinado. Dos implementaciones posibles:

MétodoVentajaDesventaja
Espera activa (busy waiting)Sencilla de implementarDesperdicia ciclos de procesador
BloqueoBetter utilización del procesadorMayor complejidad en el SO

En general, se prefiere el bloqueo: los procesos en espera pasan al estado blocked y dejan de competir por el procesador hasta que el SO detecta un sem_signal y los pasa a ready.

Selección del proceso en espera

Cuando varios procesos ejecutan sem_wait sobre el mismo semáforo y se produce un sem_signal, la implementación debe elegir uno. Criterios posibles:

  • Aleatorio: simple pero puede causar inanición.
  • FIFO (first-in, first-out): garantiza que nadie espere indefinidamente; es el criterio habitual en implementaciones basadas en bloqueos.
  • Prioridades: según la importancia del proceso.

El criterio debe evitar la inanición (starvation), es decir, que un proceso espere indefinidamente mientras otros completan su sem_wait.

Implementación como llamada al sistema

Algunos SO ofrecen semáforos dentro de su repertorio de llamadas al sistema. Estas implementaciones suelen estar basadas en bloqueos, gestionados internamente por el SO.

Soporte de hardware

Para implementar semáforos es necesario asegurar la indivisibilidad de las operaciones sem_wait y sem_signal. El hardware proporciona mecanismos para esto (descritos en el anexo del módulo).

Ideas clave

  • La espera activa es sencilla pero ineficiente; el bloqueo es preferible.
  • FIFO evita la inanición en la selección de procesos en espera.
  • Los semáforos como llamada al sistema se implementan con bloqueo gestionado por el SO.
  • La indivisibilidad de las operaciones requiere soporte de hardware.
Consultar el contenido original