Académique Documents
Professionnel Documents
Culture Documents
Sistemas Operativos I
Cb00856 – 1
Modulo 5.
Concurrencia y
Exclusión Mutua
Verano 2006
Plan de módulo
Procesos secuenciales
Procesos concurrentes
Multiprogramación, multiprocesamiento y
procesamiento distribuido
Interacción y sincronización procesos
Corutinas, fork-join y cobegin-coend
Exclusión mutua, sección crítica y condición de
competencia
Soluciones problema exclusión mutua
Sistemas Operativos I 2
2
Verano 2006 1
ITESM - CEM Sistemas Operativos I CB00856-1
Programas secuenciales
Sistemas Operativos I 3
3
Procesos concurrentes
Concurrencia: del verbo concurrir, asistir o
acudir al mismo lugar o tiempo
Sistemas Operativos I 4
4
Verano 2006 2
ITESM - CEM Sistemas Operativos I CB00856-1
Características procesos
concurrentes
Los procesos son concurrentes si existen
simultáneamente
Sistemas Operativos I 5
5
Clasificación procesos
concurrentes
Podemos hablar de
multiprogramación,
multiprocesamiento
procesamiento distribuido
Sistemas Operativos I 6
6
Verano 2006 3
ITESM - CEM Sistemas Operativos I CB00856-1
Multiprogramación
Los procesos son ejecutados,
concurrentemente, compartiendo uno o más
procesadores (c/u con su memoria)
El kernel del sistema operativo multiplexa los
procesos en los procesadores
Proc7
M1 CPU1
Proc1
Proc6
Proc2
M2 CPU2
Proc3 Proc5
Proc4
Sistemas Operativos I 7
7
Multiprocesamiento
Memoria comú
común
Sistemas Operativos I 8
8
Verano 2006 4
ITESM - CEM Sistemas Operativos I CB00856-1
Procesamiento distribuido
Los procesos están conectados a través de una
red de comunicación
Cada procesos cuenta con su memoria
M1 M2 M3 M4
red de comunicació
comunicación
Sistemas Operativos I 9
9
Sistemas Operativos I 10
10
Verano 2006 5
ITESM - CEM Sistemas Operativos I CB00856-1
La sincronización
Frecuentemente, la sincronización es
necesaria cuando los procesos se
comunican
Sistemas Operativos I 11
11
La sincronización
Sistemas Operativos I 12
12
Verano 2006 6
ITESM - CEM Sistemas Operativos I CB00856-1
Sistemas Operativos I 13
13
Comunicación y sincronización
procesos
Procesos requieren comunicación entre ellos.
Procesamiento distribuido
envío/recepción de mensajes
Multiprocesamiento:
pipes: salida proceso es entrada de otro
uso de variables compartidas o de algún
espacio en común donde puedan leer o escribir
los procesos
Sistemas Operativos I 14
14
Verano 2006 7
ITESM - CEM Sistemas Operativos I CB00856-1
Sistemas Operativos I 15
15
Sistemas Operativos I 16
16
Verano 2006 8
ITESM - CEM Sistemas Operativos I CB00856-1
Condición de competencia
Solución:
prohibir que uno o más procesos escriba en los
datos compartidos a la vez
Sistemas Operativos I 18
18
Verano 2006 9
ITESM - CEM Sistemas Operativos I CB00856-1
La exclusión mutua
Garantizar que si un proceso utiliza una variable
o algún recurso compartido, los demás no podrán
usarlos al mismo tiempo
Sección crítica
Parte del código en el cual se tiene acceso
a una variable o archivo compartido
Corolario:
si dos procesos no están al mismo tiempo en
sección crítica, podemos evitar las
condiciones de competencia
Sistemas Operativos I 20
20
Verano 2006 10
ITESM - CEM Sistemas Operativos I CB00856-1
Asignación recursos
Sean n procesos que entran en conflicto por el
acceso a un recurso único no compartible
Recurso a usar en sección crítica
Necesario usar un protocolo formado de tres
partes:
protocolo de adquisición
<uso del recurso en sección crítica>
protocolo de liberación
Sistemas Operativos I 21
21
Posibles problemas
Interbloqueo: los procesos se bloquean entre si y nadie
tiene acceso al recurso, no hay actividad en ninguno de
los procesos
si estoy solo paso
si no: dejo pasar a los demás
Hambruna (starvation)
sean tres procesos: P1 P2 y P3
si el recurso siempre se le asigna, alternativamente,
a P1 y P2 P3 no tendrá acceso a él
Sistemas Operativos I 22
22
Verano 2006 11
ITESM - CEM Sistemas Operativos I CB00856-1
Sistemas Operativos I 23
23
Posibles soluciones
Des-activación de interrupciones
Variables de cerradura
Alternancia estricta
Esperando que el otro termine
Cediendo el lugar al otro
Esperando un tiempo aleatorio
Algoritmo de Dekker
Algoritmo de Peterson
Sistemas Operativos I 24
24
Verano 2006 12
ITESM - CEM Sistemas Operativos I CB00856-1
Des-activación interrupciones
Solución más simple: cada proceso desactivará
todas sus interrupciones justo antes de entrar
en sección crítica y las activará al salir de ella
Con las interrupciones desactivadas no puede
ocurrir una interrupción de reloj
Problema: un proceso (usuario) podría
desactivarlas y nunca activarlas de nuevo
Si hay más de dos CPUs, la desactivación sólo
afecta a uno de ellos
Sistemas Operativos I 25
25
Variables de cerradura
Antes de entrar a su sección crítica, proceso
hace prueba a una variable tipo cerradura:
si esta es 0: proceso la cambia a 1 y entra a su
sección crítica
si esta es 1: espera hasta que la variable cambie
su valor a 0
Problema
proceso P1 lee un valor de 0
antes modifique el valor se le acaba el quatum
proceso P2 también va a leer un valor de 0
se van a tener dos procesos en S.C.
Sistemas Operativos I 26
26
Verano 2006 13
ITESM - CEM Sistemas Operativos I CB00856-1
Alternancia estricta
void proc1() void proc2()
{ {
while (TRUE) { while (TRUE) {
while (turno != 0); while (turno != 1);
seccion_critica(P1);
seccion_critica(P1); seccion_critica(P2);
seccion_critica(P2);
turno=1; turno=0;
fuera_sec_crit(P1);
fuera_sec_crit(P1); fuera_sec_crit(P2);
fuera_sec_crit(P2);
} }
} }
main(){
main(){
turno=1;
cobegin proc1 || proc2() coend
}
Sistemas Operativos I 27
27
Verano 2006 14
ITESM - CEM Sistemas Operativos I CB00856-1
Comentarios
Dos variables
p1in: proceso 1 en sección crítica
p2in: proceso 2 en sección crítica
Sistemas Operativos I 30
30
Verano 2006 15
ITESM - CEM Sistemas Operativos I CB00856-1
Comentarios
Sistemas Operativos I 32
32
Verano 2006 16
ITESM - CEM Sistemas Operativos I CB00856-1
Comentarios
Verano 2006 17
ITESM - CEM Sistemas Operativos I CB00856-1
Algoritmo de Dekker
(* Exclusión Mutua:Solución de Dekker*)
moduleExclusion_Mutua_D;
varflag1,flag2: boolean;
turno: integer;
procedure bloqueo(var mi_flag, su_flag: boolean; su_turno: integer);
beginm
i_flag := true;
while su_flag do (* otro proceso en la sección crítica *)
if turno = su_turno then
mi_flag := false;
while turno =su_turno do
; (* espera a que el otro acabe *)
end;
mi_flag := true;
end;
end;
Sistemas end bloqueo;
Operativos I 35
35
Algoritmo de Dekker
Sistemas Operativos I 36
36
Verano 2006 18
ITESM - CEM Sistemas Operativos I CB00856-1
Algoritmo de Dekker
process P2
begin
loop
bloqueo(flag2,flag1,1);
(* Uso del recurso
Sección Crítica *)
desbloqueo(flag2);
(* resto del proceso *)
end
end P2;
begin (* Exclusion_Mutua_P*)
flag1 := FALSE;
flag2 := FALSE;
turno := 1;
cobegin
P1;
P2;
coend
end Exclusion_Mutua_D
Sistemas Operativos I 37
37
Verano 2006 19