Volver al temario
Tema 04 · 70 páginas

Comunicación y sincronización

Tema completo Modo estudio
TEXTO ORIGINAL · Páginas 2122 Ver PDF

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

Texto íntegro de la conversión. Las figuras y la disposición de las notas se pueden consultar en el PDF.

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

Como observación, presentamos algunas consideraciones sobre la implementación de los semáforos:

  • La operación sem_wait debe realizar una espera hasta que el contador asociado al semáforo alcance un determinado valor. Esta espera se puede implementar básicamente de dos maneras: espera activa y bloqueo. La espera activa es la opción más sencilla pero provoca un cierto desperdicio del procesador. En función de la cantidad de procesos en ejecución, este desperdicio puede ser inaceptable.

Página 22

  • Cuando varios procesos están esperando haciendo un sem_wait sobre un mismo semáforo y algún proceso invoca sem_signal, la implementación de semáforos debe elegir uno de los procesos en espera. Se pueden considerar varios criterios como el aleatorio, FIFO (first-in, first-out), prioridades, etc. La implementación debería elegir un criterio que no provoque inanición (starvation, como en la figura 16), es decir, evitar que un proceso espere indefinidamente mientras otros procesos completan el sem_wait sobre el mismo semáforo. El criterio FIFO evita la inanición y es el que suelen utilizar las soluciones basadas en bloqueos.

  • Algunos sistemas operativos ofrecen los semáforos dentro de su repertorio de llamadas al sistema. Estas implementaciones suelen estar basadas en bloqueos. Los procesos en espera pasan al estado blocked y dejan de competir por consumir tiempo de procesador hasta que el sistema operativo detecta que se ha hecho un sem_signal sobre el semáforo y los pasa al estado ready.

  • En el apartado 1 del anexo describimos el soporte que debe ofrecer el hardware para poder implementar la exclusión mutua.

Ver fragmento extraído sin normalizar
2.2.3.  Consideraciones sobre la implementación de los semáforos


Como observación, presentamos algunas consideraciones sobre la implemen-
tación de los semáforos:


•    La operación sem_wait debe realizar una espera hasta que el contador
     asociado al semáforo alcance un determinado valor. Esta espera se puede
     implementar básicamente de dos maneras: espera activa y bloqueo. La es-
     pera activa es la opción más sencilla pero provoca un cierto desperdicio
     del procesador. En función de la cantidad de procesos en ejecución, este
     desperdicio puede ser inaceptable.

## Página 22

<!-- source-page: 22 -->

GNUFDL • PID_00214803                                                                                  22                                                                                         Comunicación y sincronización

•    Cuando varios procesos están esperando haciendo un sem_wait sobre un
    mismo semáforo y algún proceso invoca sem_signal, la implementación
    de semáforos debe elegir uno de los procesos en espera. Se pueden con-
    siderar varios criterios como el aleatorio, FIFO (first-in, first-out), priorida-
    des, etc. La implementación debería elegir un criterio que no provoque
    inanición (starvation, como en la figura 16), es decir, evitar que un proceso
    espere indefinidamente mientras otros procesos completan el sem_wait
    sobre el mismo semáforo. El criterio FIFO evita la inanición y es el que
    suelen utilizar las soluciones basadas en bloqueos.


•    Algunos sistemas operativos ofrecen los semáforos dentro de su repertorio
    de llamadas al sistema. Estas implementaciones suelen estar basadas en
    bloqueos. Los procesos en espera pasan al estado blocked y dejan de com-
    petir por consumir tiempo de procesador hasta que el sistema operativo
    detecta que se ha hecho un sem_signal sobre el semáforo y los pasa al
    estado ready.


•    En el apartado 1 del anexo describimos el soporte que debe ofrecer el hard-
    ware para poder implementar la exclusión mutua.



Descargar Markdown originalEstudiar este apartado