Escolar Documentos
Profissional Documentos
Cultura Documentos
Concurrencia
Exclusin mutua y sincronizacin
Concurrencia
La concurrencia es la simultaneidad de hechos.
Un programa concurrente es aquel en el que ciertas
unidades de ejecucin internamente secuenciales
(procesos o threads), se ejecutan paralela o
simultneamente.
Incluye los siguientes aspectos:
Concurrencia
Un programa concurrente est formado por una coleccin
de procesos secuenciales autnomos que se ejecutan
(aparentemente) en paralelo.
Tres formas de ejecutar procesos concurrentes:
1. Los procesos multiplexan sus ejecuciones sobre un
nico procesador (multiprogramacin).
2. Los procesos multiplexan sus ejecuciones sobre un
sistema multiprocesador de memoria compartida
(multiproceso).
3. Los procesos multiplexan sus ejecuciones en varios
procesadores
que
no
comparten
memoria
(procesamiento distribuido).
El trmino concurrencia indica paralelismo potencial.
3 /72
Concurrencia
multiprogramacin
multiproceso
Procesamiento
distribuido
4 /72
Concurrencia
En un sistema multiprogramado (1 P), los procesos se
intercalan, para dar la apariencia de simultaneidad.
P1
P2
P3
5 /72
Un ejemplo simple
chin
chout
P1
P2
7 /72
un ejemplo simple
void echo()
{
char_in = getchar();
char_out = char_in;
putchar(char_out);
}
un ejemplo simple
Process P1
.
chin = getchar();
.
chout = chin;
putchar(chout);
.
.
Process P2
.
.
chin = getchar();
chout = chin;
.
putchar(chout);
.
chin = a
chin = b
Conclusiones:
Proteger las variables compartidas.
cmo?
Evitando que otro proceso ejecute a echo hasta que el proceso actual termine.
Evitando que el proceso actual sea interrumpido hasta que termine
9 /72
INTERACCION ENTRE
PROCESOS
10 /72
Tipos de proceso
Independientes
Cooperantes
Su estado no es compartido
Su estado es compartido
Son deterministas
Su funcionamiento no es
determinista
Son reproducibles
11 /72
(multiprogramacin).
(multiproceso).
(procesamiento distribuido).
12 /72
Interbloqueo
Inanicin
Exclusin mutua
Interbloqueo
Inanicin
Exclusin mutua
Coherencia de datos
Interbloqueo
Inanicin
13 /72
14 /72
Ejemplo
Recursos
disponibles
P1 P2 P3
P1 P2 P3
P1 P2 P3
Estado
inicial
Estado
seguro
Estado
seguro
P1 P2 P3
Estado
inseguro
P1 P2 P3
Estado
inseguro
15 /72
Problema
Confianza
Solucin
Exclusin mutua
Seccin crtica
Ejemplo
Ejecucin consistente
P1:
a=a+1
b=b+1
a=a+1
P2:
b=2*b
a = 2 *a
Ejecucin concurrente
P1:
a=a+1
P2:
b=b*2
a=a+1
P1:
b=b+1
P2:
a = 2 *a
b=b+1
b = 2 *b
a = 2 *a
b=b*2
b=b+1
a = 2 *a
17 /72
18 /72
Inanicin.
19 /72
20 /72
PROBLEMAS POTENCIALES
A RESOLVER
21 /72
22 /72
1. Exclusin mutua
Es un mecanismo empleado en el diseo de los sistemas
operativos para evitar los problemas de competencia por
recursos, se basa en definir una zona o regin crtica la
cual est marcada por las instrucciones que hacen uso del
recurso en competencia (recurso crtico).
23 /72
2. Interbloqueo (deadlock)
condiciones :
P1 requiere R1 y R2
P2 requiere R1 y R2
acciones:
1. P1 obtiene R1
2. P2 obtiene R2
3. P1 Y P2 estn bloqueados esperando cada uno al otro
R1
R1
R1
P1
P2
P1
P2
P1
P2
R2
R2
R2
24 /72
25 /72
3. Inanicin
Los procesos siempre estn bloqueados y nunca acceden
a los recursos que necesitan
Sean 3 procesos.
P1 solicita recurso.
P2 y P3 solicitan recursos
P1 suelta el recurso
Se asigna el recurso a P2
P1 solicita el recurso
P2 suelta el recurso
Se asigna el recurso a P1
26 /72
27 /72
SECCION CRTICA
28 /72
Seccin Crtica
Es la parte del programa que accede a un
recurso compartido
Solo un programa puede acceder a su
seccin crtica en un momento dado
NO se puede confiar simplemente en el SO
para hacer cumplir esta restriccin
Se suspende la
ejecucin de la seccin
crtica hasta que acabe
el anterior
Ejemplo:
solo un
proceso en
cada
momento
estar
enviando
comandos
a la
impresora
seccin
crtica
29 /72
SOLUCIONES DE SOFTWARE
31 /72
Algoritmos de Dekker
32 /72
33 /72
34 /72
35 /72