Diferencia entre revisiones de «Mecanismos de sincronización»
De Wiki de Sistemas Operativos
Línea 1: | Línea 1: | ||
Existen dos tipos de mecanismos de sincronización: | Existen dos tipos de mecanismos de sincronización: | ||
<pre> | <pre> | ||
− | - Optimista: se considera que la frecuencia de acceso a un recurso compartido es baja. | + | - Optimista: se considera que la frecuencia de acceso a un recurso compartido es baja. |
− | + | </pre> | |
− | + | <pre> | |
− | + | Ejemplo de control optimista suponiendo 2 hilos, hx y hy. | |
− | + | ||
− | + | int compartida = 1, tmp; | |
retry: | retry: | ||
tmp = compartida; /* anoto */ | tmp = compartida; /* anoto */ | ||
Línea 15: | Línea 15: | ||
<pre> | <pre> | ||
− | - Pesimista: se considera que la | + | - Pesimista: se considera que la frecuencia de acceso al recurso compartido es alta. |
− | + | </pre> | |
− | + | <pre> | |
+ | Ejemplo de control pesimista suponiendo 2 hilos, hx y hy. | ||
int compartida = 1; | int compartida = 1; |
Revisión del 15:50 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.
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.
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 */