Semáforo

En programación, especialmente en sistemas Unix, los semáforos son una técnica para coordinar o sincronizar actividades en las que múltiples procesos compiten por los mismos recursos del sistema operativo. Un semáforo es un valor en un lugar designado en el almacenamiento del sistema operativo (o kernel) que cada proceso puede verificar y luego cambiar. Dependiendo del valor que se encuentre, el proceso puede usar el recurso o encontrará que ya está en uso y debe esperar un tiempo antes de volver a intentarlo. Los semáforos pueden ser binarios (0 o 1) o pueden tener valores adicionales. Por lo general, un proceso que usa semáforos verifica el valor y luego, si usa el recurso, cambia el valor para reflejarlo, de modo que los usuarios posteriores del semáforo sepan que deben esperar.

Los semáforos se utilizan comúnmente para dos propósitos: compartir un espacio de memoria común y compartir el acceso a los archivos. Los semáforos son una de las técnicas para la comunicación entre procesos (IPC). El lenguaje de programación C proporciona un conjunto de interfaces o "funciones" para administrar semáforos.