Mecanismos de sincronización

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar

Mecanismos de sincronización

Tipos de mecanismos de sincronización :

Optimista

Se considera que la frecuencia de acceso a un recurso compartido es baja, es decir, suponemos que la probabilidad de acceso simultanea a un recurso compartido es baja.

Ejemplo de control optimista suponiendo 2 hilos, hx y hy.
      
           int compartida = 1, tmp;
     retry:
           tmp = compartida;         /* anoto */
           tmp++;                    /* actualizo temporal */
           if(compartida+1 != tmp)
               goto retry;           /* compruebo si la variable compartida ha sido modificada mientras operaba con el temporal */

Pesimista

Se considera que la frecuencia de acceso al recurso compartido es alta. En este mecanismo disponemos de tres partes :

  • Un protocolo de entrada : en el cual se restringe el permiso de acceso para las variables compartidas.
  • Una sección crítica : donde se realizan todas las operaciones con las variables compartidas.
  • Un protocolo de salida : en el cual se restablece el permiso de acceso para las variables compartidas.

(Toda operación con una variable compartida necesita un protocolo de entrada y otro de salida)

Ejemplo de control pesimista suponiendo 2 hilos, hx y hy.
      
           int compartida = 1;
     no_permito_acceso_variable_compartida();  /* protocolo de entrada */
           compartida++;                       /* sección crítica */
     permito_acceso_a_variable_compartida();   /* protocolo de salida */

¿Cómo implementamos el protocolo de E/S en el control de concurrencia pesimista?

Interrumpiendo la conmutación, desactivando las interrupciones, seguidamente ejecutando la sección crítica y finalmente permitiendo el acceso a las variables compartidas y activando las interrupciones.

¿Cómo implementar el control de concurrencia pesimista?

  • Espera ocupada/activa : cerrojos. Se comprueba continuamente la condición que permite franquear el protocolo de entrada
  • Espera no ocupada/no activa : semáforos, monitores y mensajes. Se pasa a estado bloqueado cuando no se puede franquear el protocolo de entrada.