Vous êtes sur la page 1sur 19

ITESM - CEM Sistemas Operativos I CB00856-1

Sistemas Operativos I
Cb00856 – 1

Modulo 5.
Concurrencia y
Exclusión Mutua

Prof. Erika MATA SANCHEZ


emata@itesm.mx
http://homepage.cem.itesm.mx/emata

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

 Especifica una ejecución secuencial de una lista


de enunciados

 La ejecución del programa da como resultado la


creación de un proceso

Sistemas Operativos I 3
3

Procesos concurrentes
 Concurrencia: del verbo concurrir, asistir o
acudir al mismo lugar o tiempo

Especificados o más programas


secuenciales ejecutados
concurrentemente como procesos
paralelos

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

 Pueden funcionar en forma totalmente


independiente, unos de otros

 Pueden ser asíncronos


 requieren cierta sincronización y
cooperación

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

 Se ejecuta un proceso en cada procesador


 Los procesos comparten una memoria en
común

Proc1 Proc2 Proc3 Proc4

CPU1 CPU2 CPU3 CPU4

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

Proc1 Proc2 Proc3 Proc4

CPU1 CPU2 CPU3 CPU4

M1 M2 M3 M4

red de comunicació
comunicación
Sistemas Operativos I 9
9

Interacción entre procesos


 Para poder cooperar, procesos concurrentes
deben comunicarse y sincronizarse

 Comunicación permite ejecución de un


proceso para influenciar ejecución de otro

 Comunicación entre procesos esta basada en


el uso de variables compartidas o envío de
mensajes

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

 Procesos son ejecutados con velocidades


impredecibles

Sistemas Operativos I 11
11

La sincronización

 Para comunicarse un proceso debe realizar


una acción que el otro pueda detectar

 la acción puede ser asignar un valor a una


variable o enviar un mensaje

 esto solo trabaja si el “realizar una acción” es


anterior al “detectar una acción”

Sistemas Operativos I 12
12

Verano 2006 6
ITESM - CEM Sistemas Operativos I CB00856-1

 Entonces la sincronía puede verse como un


conjunto de restricciones para el ordenamiento
de eventos

 Programador usa un mecanismo de sincronía


para retardar ejecución de un proceso para
satisfacer una restricción

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

Ejemplo: spooler impresión

 Cuando un proceso desea imprimir un archivo


escribe el nombre de este en un directorio

 Otro proceso, demonio impresión (lpd) verifica si


existen archivos por imprimir, los imprime y
elimina sus nombres del directorio

Sistemas Operativos I 15
15

Elementos spooler impresión


:
:
4 toto.c
5 prog.c
Pa 6 tarea.txt out = 4
7
in = 7
Pb
:
:
Pa desea imprimir t1
Pb desea imprimir t2

Sistemas Operativos I 16
16

Verano 2006 8
ITESM - CEM Sistemas Operativos I CB00856-1

Pasos en impresión archivos


Proceso A Proceso B
lee valor in y almacena en next
next := 7
termina quantum
lee valor in y almacena en sig
sig := 7
actualiza valor in (in = 8)
escribe t2 en localidad 7
sale y hace otras cosas
actualiza valor in (in = 8) termina quantum
escribe t1 en localidad 7
sale y hace otras cosas
Sistemas Operativos I 17
17

Condición de competencia

 Dos o más procesos leen y/o escriben en ciertos


datos compartidos y el resultado final depende
de quien ejecuta qué y en qué momento

 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

 Conocida como mutex

 Cada proceso debe verificar que durante cierta


parte del tiempo, puede tener acceso a la
memoria compartida de archivos o realizando
labores críticas que pueden llevar a conflictos
Sistemas Operativos I 19
19

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

Condiciones solución mutex

 Dos procesos no deben encontrarse al mismo


tiempo dentro de sus secciones críticas
 No se deben hacer hipótesis sobre la velocidad o
el número de CPUs
 Ninguno de los procesos que estén en ejecución
fuera de su SC puede bloquear a otros procesos
 Ningún proceso debe esperar eternamente para
entrar a su SC

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

Detalles alternancia estricta


 La prueba de una variable, en espera de que tome
cierto valor se conoce como espera activa
 esto provoca un desperdicio del CPU

 ¿Qué pasa cuando uno de los procesos es más


lento que el otro?
 en lo que proc1 ejecuta fue_sec_crit(p1) el proceso
proc2 ejecuta sec_crit(p2), cambia valor a turno,
ejecuta fue_sec_crit(p2) y regresa al while
 se van a tener un proceso bloqueado por otro que no
esta en su sección crítica
Sistemas Operativos I 28
28

Verano 2006 14
ITESM - CEM Sistemas Operativos I CB00856-1

Esperando que el otro termine


int p1in, p2in;
void proc1()
{
while (TRUE) {
while (p2in == 1);
p1in = 1;
secció
sección_critica_P1();
p1in = 0;
out_sec_critica_P1();
}
}
Sistemas Operativos I 29
29

Comentarios

 Dos variables
 p1in: proceso 1 en sección crítica
 p2in: proceso 2 en sección crítica

 ¿Qué pasa si se ejecuta en tandem?


 se van a tener dos procesos en sección crítica

Sistemas Operativos I 30
30

Verano 2006 15
ITESM - CEM Sistemas Operativos I CB00856-1

Cediendo el lugar al otro


int p1deseaentar, p2deseaentrar;
void proc1()
{
while (TRUE) {
p1deseaentrar = 1;
while (p2deseaentrar == 1);
sección_critica_P1();
p1deseaentrar = 0;
out_sec_critica_P1();
}
}
Sistemas Operativos I 31
31

Comentarios

 El proceso indica su deseo de entrar a sección crítica


 Si el otro proceso también quiere entrar le cede el
paso
 Problema ejecución tandem:
 si cada proceso asigna un 1 a su bandera antes de
verificar, cada proceso encontrará la bandera del
otro con valor 1 los dos entrarán en un ciclo infinito

 se da un bloqueo mutuo (interbloqueo o deadlock)

Sistemas Operativos I 32
32

Verano 2006 16
ITESM - CEM Sistemas Operativos I CB00856-1

Esperando un tiempo aleatorio


int p1deseaentar, p2deseaentrar;
void proc1() {
while (TRUE) {
p1deseaentrar = 1;
while (p2deseaentrar == 1) {
p1deseaentrar = 0;
algunosciclos);
retraso(aleatorio, algunosciclos);
p1deseaentrar = 1;
}
sección_critica_P1();
p1deseaentrar = 0;
out_sec_critica_P1(); }
}
Sistemas Operativos I 33
33

Comentarios

 Se obliga a cada proceso a asignar


repetidamente el valor falso a su bandera por
periodos cortos, calculados de forma
aleatoria
 Problema: una ejecución tandem y que el
valor aleatorio será el mismo para los dos
procesos
 Situación muy poco probable pero posible

Por lo tanto  No es una solucion valida


Sistemas Operativos I 34
34

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

procedure desbloqueo (var mi_flag: boolean; su_turno: integer);


begin
turno := su_turno;
mi_flag := false
end desbloqueo;
process P1
begin
loop
bloqueo(flag1,flag2,2);
(* Uso del recurso
Sección Crítica *)
desbloqueo(flag1);
(* resto del proceso *)
end
end P1;

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

Vous aimerez peut-être aussi