Coordinación entre Procesos Parte I Puntos a tratar Tareas

Anuncio
Puntos a tratar
Coordinación entre Procesos
Parte I
• Tipos de interacción entre procesos
– Competencia entre procesos para adquirir recursos
– Cooperación entre procesos para compartir
– Cooperación entre procesos via comunicación
• Aproximaciones de Software al problema de Exclusión
Mutua. Protocolo del Igloo.
• Aproximaciones de Hardware al problema de Exclusión
Mutua.
M.B. Ibáñez
M.B. Ibáñez
Tareas del Sistema de Operación
Tipos de interacción entre
procesos
•
•
•
•
Saber qué procesos están activos
Asignar y retirar recursos a los procesos
Proteger los datos y los recursos
El resultado de la ejecución de un proceso
debe ser independiente de la velocidad de
ejecución de ese y otros procesos
• Los procesos desconocen la existencia de
los demás procesos
• Competencia
• Los procesos saben de la existencia de otros
procesos
• Cooperación compartiendo recursos
• Los procesos saben exactamente quiénes
son los otros procesos
• Cooperación via comunicación
M.B. Ibáñez
M.B. Ibáñez
Competencia entre Procesos para
adquirir Recursos
Problemas de Control I
• La ejecución de un proceso puede afectar el
comportamiento de los procesos que
compiten con él por un determinado recurso
• Si dos procesos quieren usar un mismo
recurso, el recurso será asignado a uno de
ellos y el otro deberá esperar
• Es posible que el proceso suspendido nunca
logre tener el recurso y nunca termine
M.B. Ibáñez
¿Cómo garantizar la Exclusion Mutua?
– Región crítica
• Solo un proceso a la vez puede estar en la región
crítica
M.B. Ibáñez
1
Problemas de Control II
Deadlock
process P {… solicita R1 … solicita R2 …}
process Q { … solicita R2 … solicita R1 …}
parbegin P;Q parend;
• S.O.:: R1 -> P
• S.O.:: R2 -> Q
• P necesita R2 pero no libera a R1
• Q necesita R1 pero no libera a R2
Problemas de Control III
Inanición
• Los procesos P1, P2, P3 requieren el
recurso R periódicamente
• R -> P1
• P2 y P3 esperan por el recurso R
• R -> P2
• (R -> P1 ; R-> P2)*
• P3 perece por inanición
M.B. Ibáñez
Problemas de Control IV
Ejemplo: Concurso
static int i
Process A
Process B
i=0
i=0
while ( i > -10 ) {
while ( i < 10 ) {
i--;
i++;
}
}
System.out.println
System.out.println
(“gana A”);
(“gana B”);
M.B. Ibáñez
Cooperación de Procesos
compartiendo recursos
• Los procesos utilizan datos compartidos
• La escritura debe ser mutuamente exclusiva
• Las regiones críticas permiten garantizar la
integridad de los datos
M.B. Ibáñez
M.B. Ibáñez
Coherencia de los datos
Cooperación entre Procesos
mediante Comunicación
{a=b}
{ a = b}
P1: a := a + 1
b := b + 1
P1:: a := a + 1
P2:: b := 2 * b
P1:: b := b + 1
P2:: a := 2 * a
P2: b := 2 * b
a := 2 * a
• La comunicación permite sincronizar,
coordinar varias actividades
• Posibles problemas:
– deadlock
– inanición
{ a != b}
M.B. Ibáñez
M.B. Ibáñez
2
Requerimientos para la
Exclusión Mutua
• Solo un proceso a la vez puede estar en la
región crítica
• Si un proceso espera por una región crítica,
no puede ser demorado de manera infinita.
Requerimientos para la
Exclusión Mutua
• Si la región crítica no está siendo utilizada,
cualquier proceso que lo requiera podrá
usarla
• No puede hacerse ninguna estimación
acerca de la velocidad de los pocesos o el
número de los mismos
• Un proceso permanece dentro de la región
crítica únicamente por tiempo limitado
M.B. Ibáñez
Protocol Igloo
M.B. Ibáñez
Primer Intento
var turn: 0..1
Process 0
…
while turn <> 0 do
{nothing};
< critical section >
turn := 1;
...
M.B. Ibáñez
Comentarios
• Esta solución garantiza la exclusión mutua
• Problemas:
– Los procesos se alternan en el uso de la región crítica
– Si un proceso falla dentro o fuera de la región crítica el
otro proceso nunca podrá usar la región crítica
– Busy waiting
M.B. Ibáñez
Process 1
…
while turn <> 1 do
{nothing};
< critical section >
turn := 0;
...
M.B. Ibáñez
Segundo intento
var flag: array [0..1] of boolean;
Process 0
…
while flag[1] do
{nothing};
flag[0] := true;
< critical section >;
flag[0] := false;
...
Process 1
…
while flag[0] do
{nothing};
flag[1] := true;
< critical section >;
flag[1] := false;
...
M.B. Ibáñez
3
Tercer intento
Comentarios
• Esta solución no garantiza la exclusión
mutua, véase la siguiente secuencia:
P0 ejecuta la instrucción while y encuentra la flag[1]
en false.
P1 ejecuta la instrucción while y encuentra la flag[0]
en false
P0 pone la flag[0] en true y entra en la región crítica
P1 pone la flag[1] en true y entra en la región crítica
var flag: array [0..1] of boolean;
Process 0
…
flag[0] := true;
while flag[1] do
{nothing};
< critical section >;
flag[0] := false;
...
Process 0
…
flag[1] := true;
while flag[0] do
{nothing};
< critical section >;
flag[1] := false;
...
M.B. Ibáñez
M.B. Ibáñez
Comentarios
Cuarto Intento
• Se garantiza la exclusión mutua
• Problemas:
– Si un proceso falla dentro de su región crítica,
el otro proceso nunca podrá usarla
– Deadlock.
Process 0
Process 1
…
flag[0] := true;
while flag[1] do {
flag[0] := fa lse;
…
flag[1] := true;
while flag[0] do {
flag[1] := fa lse;
<delay for a short time>;
flag[0] := true;
};
<critical section>;
flag[0] := fa lse;
...
<delay for a short time>;
flag[1] := true;
};
<critical section>;
flag[1] := fa lse;
...
M.B. Ibáñez
M.B. Ibáñez
Comentarios
Solución Correnta
Algoritmo de Dekker I
• Se garantiza la exclusión mutua
• Considere la siguiente secuencia de eventos:
P0 coloca la flag[0] en true
P1 coloca la flag[1] en true
P0 checks flag[1]
P1 checks flag[0]
P0 coloca la flag[0] en false
P1 coloca la flag[1] en false
P0 coloca la flag[0] en true
P1 coloca la flag[1] en true
M.B. Ibáñez
procedure P0;
begin
repeat
flag[0] := true;
while flag[1] do if turn = 1 then
begin
flag[0] := false;
while turn = 1 do {nothing};
flag[0] := true;
end
<critical section>;
turn := 1;
flag[0] := false;
<remainder>
forever
end;
procedure P1;
begin
repeat
flag[1] := true;
while flag[0] do if turn = 0 then
begin
flag[1] := false;
while turn = 0 do {nothing};
flag[1] := true;
end
<critical section>;
turn := 0;
flag[1] := false;
<remainder>
forever
end;
M.B. Ibáñez
4
Solución Correcta
Algoritmo de Dekker II
var flag
array[0..1] of boolean;
turn: 0..1;
begin
flag[0] := false;
flag[1] := false;
turn := 1;
parbegin
P0; P1;
parend
end
Exclusión Mutua:
Deshabilitación de las
interrupciones
repeat
<disable interrupts>
<critical section>
<enable interrupts>
<remainder>
forever
M.B. Ibáñez
M.B. Ibáñez
Deshabilitación de las
interrupciones: Desventajas
Aproximaciones de Hardware al
problema de Exclusión Mutua
• La eficiencia de la ejecución puede
degradarse
• El procesador está limitado en su habilidad
de alternar entre procesos
• Interrupciones
• Instrucciones de Máquina
• Multiprocesamiento
– Desabilitar interrupciones en un procesador no
garantiza la exclusión mutua
M.B. Ibáñez
M.B. Ibáñez
Deshabilitación de Interrupciones
Deshabilitación de Interrupciones
Desventajas
repeat
<deshabilite interrupciones>
<sección crítica>
<habilite interrupciones>
<resto>
forever
M.B. Ibáñez
• La eficiencia de ejecución puede bajar
dramáticamente
• El procesador está limitado a permitir
interacción entre programas
• Multiprocesamiento
– La deshabilitación de interrupciones en un procesador
no garantiza la exclusión mutua o
– Puede ocasionar pérdida de tiempo mientras el mensaje
es pasado entre los procesadores
M.B. Ibáñez
5
Exclusión Mutua:
Instrucciones de Máquina I
function testset(var i: integer): boolean {
if i = 0 then {
i := 1;
testset := true;
}
else testset := false;
}
Exclusión Mutua:
Instrucciones de Máquina II
program mexclusion;
const N = …;
var bolt: integer;
...
{
bolt := 0;
parbegin
P(1);P(2);…;P(N);
parend
}
procedure P(i:integer) {
repeat
repeat
<no-op>
until testset(bolt);
<critical-section>;
bolt := 0;
<remainder>;
forever
}
M.B. Ibáñez
M.B. Ibáñez
Instrucciones de Máquina:
Ventajas
Instrucciones de Máquina.
Desventajas
• Se aplica a cualquier número de procesos
tanto en un solo procesador como en varios
procesadores que comparten memoria
• Es simple y por tanto fácil de verificar
• Puede ser utilizado para soportar varias
regiones críticas, cada región crítica puede
ser definida por su propia variable
M.B. Ibáñez
• Se utiliza busy waiting
• Es posible la inanición
• Es posible el deadlock
–
–
–
–
–
P1 ejecuta la instrución testset y entra en su región crítica
P1 es interrumpido, P2 tiene mayor prioridad
P2 intenta usar el mismo recurso que P1
P2 entra en un lazo de busy-waiting
P1 nunca es atendido porque tiene menor prioridad que P2
M.B. Ibáñez
6
Descargar