hardware de sincronización
TRANSCRIPT
Kleber Francisco Coronel Sotomayor
Hardware de Sincronización
Kleber Francisco Coronel Sotomayor
Kleber Francisco Coronel Sotomayor
Hardware de Sincronización
• En general Podemos afirmar que cualquier solución al problema de la sección critica requiere una herramienta muy simple un cerrojo. Las condiciones de carrera se evitan requiriendo que las regiones críticas se protejan mediantes cerrojos.
• El soporte hardware puede facilitar cualquier tarea de programación y mejorar la eficiencia del sistema.
• El problema de la sección crítica podría resolverse de forma simple
en un entorno de un solo procesador si pudiéramos impedir que se produjeran interrupciones mientras se está modificando una variable compartida.
Kleber Francisco Coronel Sotomayor
Hardware de Sincronización
• Ninguna otra instrucción se ejecutará, por lo que no se producirán modificaciones inesperadas de la variable compartida.
• Desactivar las interrupciones en un sistema puede consumir mucho tiempo, ya que hay que pasar el mensaje a todos los procesadores.
• Muchos sistemas proveen soporte hardware para resolver el problema de la exclusión mutua.
• Una solución en máquinas con un solo procesador es deshabilitar las interrupciones.
• Las máquinas actuales proveen instrucciones atómicas especiales.
Gianela Beatríz Zambrano Balladares
TEST_AND_SET
do {
while ( TestAndSet Lock (& lock)};
// no hacer nada
// sección crítica
Lock = FALSE;
// sección restante
} while (TRUE);
Kleber Francisco Coronel Sotomayor
• La instrucción TESTANDSET para leer y modificar
atómicamente una variable. • La característica importante es que esta instrucción se ejecuta
atómicamente. • Por tanto si dos instrucciones TESTANDSET se ejecutan
simultáneamente ( cada una en una CPU diferente), se ejecutarán secuencialmente en un orden arbitrario.
• Si la máquina soporta la instrucción TESTANDSET ,entonces
podemos implementar la exclusión mutua declarando una variable booleana Lock inicializada con el valor false.
TESTANDSET
Kleber Francisco Coronel Sotomayor
Swap
Do {
Key = TRUE;
While (key == True)
Swap(& lock, &key);
// sección crítica
Lock = FALSE;
// sección restante
} while (TRUE) ;
SWAP
• La instrucción swap() es para intercambiar el valor de dos variables , diferencia de la instrucción TestandSet() opera sobre los contenidos de 2 palabras ambas se ejecutan atómicamente.
• Si la máquina soporta la instrucción Swap() , entonces podemos declarar una variable booleana Lock y se inicializa como false.
• Además, cada proceso tiene una variable local booleana Key
ExpositorKleber Francisco Coronel Sotomayor
Kleber Francisco Coronel Sotomayor [email protected]
Graciaspor la atención
Puede encender su celular
¿PREGUNTAS?