Las Condiciones de Bernstein son las condiciones aplicadas en dos sentencias S1 y S2 que se van a ejecutar en el procesador. Establece que se deben cumplir las tres condiciones que se explican a continuación para que dos declaraciones sucesivas S1 y S2 se ejecuten simultáneamente y aún produzcan el mismo resultado.
La intersección entre el conjunto de lectura y escritura, el conjunto de escritura y lectura y el conjunto de escritura y escritura de S1 y S2 debe ser nulo.
La declaración anterior se puede expresar en forma de expresiones de la siguiente manera:
1. R(S1) ∩ W(S2) = { } 2. W(S1) ∩ R(S2) = { } 3. W(S1) ∩ W(S2) = { }
El conjunto de lectura y escritura para la instrucción c = a – b;
R(c=a-b) = {a, b} W(c=a-b) = {c}
El conjunto de lectura y escritura para la instrucción w = c + 1;
R(w=c+1) = {c} W(w=c+1) = {w}
El conjunto de lectura y escritura para la instrucción x = x + 2;
R(x=x+2) = {x} W(x=x+2) = {x}
Ejemplo-1:
Let,
S1 : a = x + y S2 : b = z + 1
Compruebe si dos declaraciones S1 y S2 satisfacen las condiciones de Bernstein.
Solución:
R(S1) = {x, y} W(S1) = {a} R(S2) = {z} W(S2) = {b} 1. R(S1) ∩ W(S2) = {x, y} ∩ {b} = { } 2. W(S1) ∩ R(S2) = {a} ∩ {z} = { } 3. W(S1) ∩ W(S2) = {a} ∩ {b} = { }
Por lo tanto, S1 y S2 pueden ejecutarse simultáneamente, es decir, se cumplen las condiciones de Bernstein.
Ejemplo-2:
Let,
S1 : a = x + y S2 : b = z + 1 S3 : c = a - b
Compruebe si dos declaraciones S2 y S3 satisfacen las condiciones de Bernstein.
Solución:
R(S2) = {z} W(S2) = {b} R(S3) = {a, b} W(S3) = {c} 1. R(S2) ∩ W(S3) = {z} ∩ {c} = { } 2. W(S2) ∩ R(S3) = {b} ∩ {a, b} = {b} 3. W(S2) ∩ W(S3) = {b} ∩ {c} = { }
Por lo tanto, S2 y S3 no pueden ejecutarse simultáneamente, es decir, no se cumplen las condiciones de Bernstein.