Pasar al contenido principal

Tema 2 - Sincronización entre Procesos

Versión para impresiónSend by email

Introducción

Cuando se crean varios procesos o hebras, en muchas ocasiones necesitamos que estos cooperen entre sí o se sincronicen, para modificar variables o acceder a archivos, por ejemplo. Normalmente estos problemas son comunes en el caso de hebras, ya que comparten región de memoria.

Para solventar estos problemas los Sistemas Operativos proporcionan algunas herramientas como los buffers o las tuberías (que se explican aquí). De este modo podemos realizar la sincronización entre las hebras.

 

Región Crítica

Las regiones críticas son segmentos de código de una hebra o proceso en el que se accede a datos compartidos. El problema de la región crítica es que se debe asegurar que cuando una hebra está en ella, ninguna otra hebra puede entrar en la región crítica.

Soluciones:

  • Exclusión Mútua: Si una hebra está en su RC, ninguna otra puede entrar en la suya.
  • Progreso: Si ninguna hebra está ejecutando en su RC y hay alguna hebra que quiere entrar en la suya, la selección de la hebra que entre no se puede aplazar indefinidamente.
  • Espera Acotada: El número de veces que otras hebras entran en sus RC antes y después de que una hebra haya solicitado la entrada en su RC está acotada

 

Tipos de Sincronización

  1. Exclusión mutua: Las operaciones de enviar y recibir datos son regiones críticas.
  2. Sincronización condicional: Uso de buffer. Tienen una capacidad limitada por lo que no se puede enviar a un tampón lleno ni recibir de uno vacío.

 

Propiedades de los Programas Concurrentes

  • Seguridad: "Algo malo no ocurre nunca", p.e. Exclusión mútua
  • Vivacidad: "Algo bueno ocurrirá alguna vez", p.e. Progreso
  • Equidad: "Todas las hebras o procesos tienen oportunidad de avanzar", p.e. Espera acotada.