Diferencia entre revisiones de «Mecanismos de sincronización»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(Página nueva: Existen dos tipos de mecanismos de sincronización: <pre> - Optimista: se considera que la frecuencia de acceso a un recurso compartido es baja. He aquí un ejemplo: Suponemos ...)
 
Línea 5: Línea 5:
 
       Suponemos 2 hilos, hx y hy.
 
       Suponemos 2 hilos, hx y hy.
  
             int compartida = 1, tmp;
+
              
 +
== int compartida = 1, tmp; ==
 
       retry:
 
       retry:
 
             tmp = compartida;        /* anoto */
 
             tmp = compartida;        /* anoto */

Revisión del 15:47 28 mar 2011

Existen dos tipos de mecanismos de sincronización:

- Optimista: se considera que la frecuencia de acceso a un recurso compartido es baja. He aquí un ejemplo:

      Suponemos 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 frecuencioa de acceso al recurso compartido es alta. He aquí un ejemplo:

      Suponemos 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 */