Diferencia entre revisiones de «Mecanismos de sincronización»
De Wiki de Sistemas Operativos
(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 */