Exclusion mutua
Javier González Arribas
Comenzaré explicando el concepto de exclusión mutua, éste consiste en que un solo proceso excluye temporalmente atodos los demás para usar un recurso compartido de forma que garantice la integridad del sistema.
Las soluciones Hardware se dividen en dos tipos:
a) Optimistas: Consideran que lo más probable esque no haya conflictos, y si los hay sea en número reducido, por lo que permiten cualquier acceso a la variable compartida. En caso de conflicto, mantienen la integridad del sistema descartando lasactualizaciones.
b) Pesimistas: Bloquean todo aquello que pueda interferir, actualizan la variable y posteriormente desbloquean lo bloqueado al principio.
Soluciones:
1-Comparar eintercambiar (optimista)
void intercambiar (int registro, int memoria)
{
int temp;
temp = memoria;
memoria = registro;
registro = temp;
}
A la función se le pasan como parámetros el contenido deun registro y el de una posición de memoria, los intercambia y durante la ejecución de la instrucción, se bloquea el acceso a la posición de memoria de cualquier otra instrucción que haga referencia ala misma posición.
2-Instrucción Test&Set (pesimista)
booleano TS (int i)
{
if (i == 0) {
i = 1;
return cierto;
} else return falso;
}
A la función se le pasa como parámetro unargumento i. Si el valor es 0 , lo cambia por 1 y devuelve cierto. En otro caso, el valor no se modifica y se devuelve falso. Esta función no está sujeta a interrupciones.
3-Deshabilitar interrupcionesy habilitar interrupciones (pesimista).
While (cierto)
{
/*inhabilitar interrupciones */;
/* sección critica */;
/* habilitar interrupciones */;
/* resto */;
}
Para garantizar la exclusiónmutua, es suficiente con impedir que un proceso sea interrumpido.
Ventajas:
a)Es aplicable a cualquier número de procesos en sistemas con memoria compartida, tanto de monoprocesador como de...
Regístrate para leer el documento completo.