Volver al temario
Tema 04 · 70 páginas

Comunicación y sincronización

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

Síntesis final

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

Síntesis Final: Comunicación y Sincronización

Conexión de conceptos

El tema aborda un problema central de los sistemas operativos: cómo permitir que procesos concurrentes cooperen correctamente sin producir errores ni bloqueos. Los conceptos se organizan en tres niveles interconectados.

Nivel 1: El problema de la concurrencia

Cuando procesos comparten recursos (variables, dispositivos), la ejecución concurrente produce race conditions debido a las copias temporales en registros. La solución es garantizar exclusión mutua en las secciones críticas.

Nivel 2: Mecanismos de solución

Semáforos resuelven la exclusión mutua mediante operaciones atómicas (wait/signal). Se usan para tres fines: exclusión mutua (inicialización en 1), conteo de recursos (inicialización en N) y sincronización (inicialización en 0). Su implementación requiere soporte de hardware (inhibición de interrupciones, test-and-set, swap).

Paso de mensajes combina sincronización e intercambio de información. En Unix se implementa como colas de bytes FIFO (pipes, named pipes, sockets). Las pipes son el mecanismo básico para comunicar procesos con parentesco, y los sockets permiten comunicación entre máquinas.

Señales de software trasladan las interrupciones de hardware al ámbito de proceso. Permiten notificaciones asíncronas de errores, dispositivos, temporizadores y otros procesos. La interfaz POSIX ofrece un control fino: programación de rutinas de atención, bloqueo temporal de señales y espera atómica con sigsuspend.

Nivel 3: Consecuencias no deseadas

Los deadlocks surgen cuando procesos cooperativos esperan recursos asignados a otros, formando bucles de espera. Las cuatro condiciones necesarias (exclusión mutua, retención y espera, no expropiación, espera circular) se previenen ordenando los recursos linealmente y pidiéndolos en orden creciente.

Relación entre mecanismos

Variables compartidas → Race conditions → Semáforos (exclusión mutua)
                    ↓
         Deadlocks (si el uso de semáforos no se gestiona correctamente)

Memoria no compartida → Paso de mensajes → Pipes/Sockets (comunicación)
                    ↓
         Señales (notificaciones asíncronas)

Errores frecuentes

  1. No cerrar file descriptors de escritura en pipes → deadlock padre-hijo.
  2. Usar espera activa en lugar de bloqueo → desperdicio de procesador.
  3. No considerar señales ya bloqueadas al usar sigprocmask → pérdida de señales.
  4. Usar pause en lugar de sigsuspend → carrera entre verificación y espera.
  5. Olvidar que las pipes son volátiles → pérdida de datos al hacer shutdown.
  6. No ordenar el pedido de recursos → deadlocks prevenibles.

Ideas clave integradas

  • La atomicidad es el fundamento de semáforos y señales POSIX.
  • Los semáforos son potentes pero propensos a errores de uso (deadlocks, inanición).
  • El paso de mensajes ofrece una abstracción más alta que combina comunicación y sincronización.
  • Las señales permiten reaccionar a acontecimientos asíncronos con control fino del bloqueo.
  • Los deadlocks se previenen con disciplina en el orden de adquisición de recursos.
  • El SO ofrece mecanismos; la corrección depende del diseño del programador.
Consultar el contenido original
Anterior30 / 30