Secciones Críticas y Exclusión Mutua

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

UNIVERSIDAD FRANCISCO DE VITORIA

Computación de Alto Rendimiento

COMPUTACION DE ALTO RENDIMIMIENTO

Secciones Críticas y Exclusión Mutua

Grado en Ingeniería Informática Curso 2022/2023


Problemas asociados a la concurrencia
El problema de la sección Crítica

 Cuando un proceso accede a un dato (o recurso )


compartido decimos que éste es un recurso crítico y la
parte de programa que lo usa se llama sección crítica SC
 La ejecución de secciones críticas deben ser
mutuamente exclusivas: en cualquier instante sólo un
proceso puede ejecutar la SC.
 Todos los procesos necesitan de un “permiso” antes de
entrar en la SC.

Computación de Alto Rendimiento


Conceptos asociados al problema de la sección Crítica

 La parte de código antes de la SC se denomina sección


de entrada.
 La parte código que sigue a la SC se denomina sección
de salida .
 El problema de la SC consiste en establecer un protocolo
de utilización del recurso independiente del orden y la
velocidad de ejecución de los procesos.

Computación de Alto Rendimiento


Soluciones ?
 Asumimos que la
velocidad relativa
de ejecución de un
proceso es != 0

 Estructura general
de un proceso  Soluciones:
repeat debemos describir
sección de entrada las secciones de
entrada y de salida.
Acotando la seccion
critica tenemos que
poner los bloqueos
section crítica SC
sección de salida
sección restante SR Lo que sea local se mantiene en paralelo. Lo que es global es donde está la
seccion critica

forever

Computación de Alto Rendimiento


Requisitos para la Exclusión Mutua

Si dos procesos compiten por un recurso y en un momento dado nadie lo está usando, el primero que lo pida es al que se le asigna

Una vez que empieza la seccion critica, acaba, no puede haber nada dentro que dependa de otra cosa y
que corra el riesgo de que nunca acabe.

4
Computación de Alto Rendimiento
Tipos de solución

 Soluciones software puras Puedo hacer yo mi propia solucion de entrada/salida de


la seccion critica

 Responsabilidad de cada proceso para llevar


la coordinación con los otros.
 Soluciones hardware
 se asume la existencia de instrucciones
especiales a nivel del procesador
 Soluciones a nivel del SO (semáforos)
 Se disponen de funciones y estructuras de
datos a disposición del programador
.
La mejor de las 3. Usando los semáforos.

Computación de Alto Rendimiento


Soluciones software puras (Lenguajes que
implementan concurrencia Ej. ADA, JAVA, etc
Algoritmo de Decker, Peterson, etc.

 Consideraremos 2 procesos
 Algoritmos 1 (Decker)
 Algoritmo 2 no válido
 Algoritmo 3 válido (algoritmo de Peterson)
 Generalización a n procesos
 Algoritmo de Lamport (“panadero”)
 Notación
 Dos procesos: P0 y P1
 Mas generalmente tendremos dos procesos Pi Pj (i != j)

Computación de Alto Rendimiento


Algoritmo 1 (Decker)
 La variable compartida turno se mientras el turno no sea mio, espero. Chequeo la condicion hasta que i
sea igual a mi id. En algun momento alguien me dará el turno y yo

inicializa a i o a j antes de jecutar Pi


dsps se lo daré a j.

 La SC de Pi se ejecuta si turno = i Process Pi:


 Pi está en espera “activa” si Pj está repeat
dentro de su SC. Exclusión mutua while(turno!=i){};
ok!
SC
 Existe una alternancia estricta. El
ritmo de ejecución depende del mas turno:=j;
lento. SR
 Si un proceso falla dentro o fuera forever
(while) de su SC el otro nunca
podrá entrar a su SC. !!!!!!! Incumplimos uno de los requisitos para la exclusion mutua: cuando el
recurso está liberado, el que quiera entrar debe poder hacerlo, pero segun
esta programacion, si está libre no puedes entrar, sino que tienes que
esperar tu turno.

Este protocolo fuerza la alternancia 1 - 1. Cada vez le toca a uno.

Computación de Alto Rendimiento


Algoritmo 2 (Ej. de solución no válida)
 Une variable booleana(0,1) Este protocolo pretende solucionar lo anterior.

por Proceso: flag[0] y flag[1]


inicializadas a FALSE
Process Pi:
 Pi indica que desea entrar en
su zona crítica haciendo : repeat el proceso i tiene la

flag[i]:=true flag[i]:=true; intencion de entrar si


esto vale TRUE

 Exclusión mutua ok ? while(flag[j]){};


SC
 Si uno falla fuera de la SC el
otro no está bloqueado BIEN flag[i]:=false;
!!: SR
 Consideremos la secuencia: forever
Si los dos flag están a TRUE,

 T0: flag[0]:=true como los 2 son educados,


empiezas a decir: ve tú, no,
Levanta el flag a true cuando el otro proceso ya no tiene la suya
levantada. Si la tiene levantada tengo que esperar a que la baje
ve tú, etc, asi que ninguno de
 T1: flag[1]:=true los
para yo poder levantar la mia y entrar en la seccion critica.
2 actuaria y el sistema se
interbloquea.

 Ambos procesos están en su


SC NO SIRVE !!!!
8

Computación de Alto Rendimiento


Algoritmo 3 (Peterson) SOLUCION FINAL: mezcla de los dos

 Inicio:
flag[0]:=flag[1]:=fal
se turno:= i o j
 El deseo de entrar en Process Pi: Necsito 2 variables globales: flag (array con

la zona crítica se
tantas posiciones como procesos) y turno

repeat
indica con
flag[i]:=true;
flag[i]:=true
turno:=j;
 flag[i]:= false en la do {} while
sección de salida. (flag[j]and turno=j);
 Si P0 y P1 intentan SC
simultáneamente flag[i]:=false;
entrar en su SC se lo SR
impide la variable forever
turno
Cuando los dos tienen el flag levantado, hay un turno, y a quien le toque es el que actúa, asi no hay inanización. La variable turno
soluciona la inanizacion cuando ambos flags están arriba.
Problema: si el proceso i entra y nunca sale, el proceso j no entrará nunca. En cada pasada se comprueba si j va a seguir, por tanto, si j
sigue, se malgasta un milisegundo comprobando para nada. Problema de ineficiencia.
9

Computación de Alto Rendimiento


Algoritmo 3: prueba

 Exclusion mutua :

 Pi y Pj estarían ambos en su SC si flag[0] =


flag[1] = false y solamente si turno != j en
ambos (imposible)
 Pi no puede entrar en su SC si se mantiene en
el bucle while() con la condición: flag[j] =
true and turn = j. (imposible)
 Pj no está interesado en entrar en su SC. Este
caso es imposible porque implica flag[j] = false

10

Computación de Alto Rendimiento


Solución a n procesos: algoritmo de Lamport
(panadería)

 Antes de ejecutar la SC cada proceso recoge un


número. Aquel que tenga el número mas
pequeño entra en la SC.
 Si Pi y Pj tienen el mismo número:
 si i<j Pi entrará primero, si no Pj
 Pi pone su número a 0 en la Sec. de Salida
 Notación:
 (a,b) < (c,d) si a < c o si a = c y b < d
 max(a0,...ak) es un número b tal que:
– b >= ai para i=0,..k

11

Computación de Alto Rendimiento


algoritmo de la panadería (cont.)
 Variables globales:
 choosing: array[0..n-1] of boolean;
– inicializado a false

 number: array[0..n-1] of integer;


– inicializados a 0

 Validez:
 Si Pi está dentro SC es que Pk ha escogido un
number[k]!= 0, y (number[i],i) < (number[k],k)

12

Computación de Alto Rendimiento


El algoritmo de la panadería (cont.)

Process Pi:
repeat
choosing[i]:=true;
number[i]:=max(number[0]..number[n-1])+1;
choosing[i]:=false;
for j:=0 to n-1 do {
while (choosing[j]) {};
while (number[j]!=0
and (number[j],j)<(number[i],i)){};
}
SC
number[i]:=0;
SR
forever

13

Computación de Alto Rendimiento


Desventajas de las soluciones soft.

 Los Pi que desean entrar en la SC están en Espera


Activa, consumen CPU

 Es preferible bloquear (suspender) los procesos que


están esperando a entrar en la SC.

14

Computación de Alto Rendimiento


Soluciones hardware : desactivación de
interrupciones
 Monoprocesador: la exclusión
mutua está garantizada mas
la eficacia se deteriora:
dentro de la SC es imposible Process Pi:
entrelazar la ejecución de
varios procesos repeat deshabilito las interrupciones

 Multiprocesador: la exclusión disable interrupts


mutua no está garantizada critical section
(los mecanismos de enable interrupts
interrupción son locales) remainder section
 No es una solución aceptable forever

15

Computación de Alto Rendimiento


Soluciones hardware: instrucciones particulares

 Normal: El acceso a una misma dirección de


memoria no se puede hacer mediante varios
procesos.
 Extensiones: Disponibilidad de instrucciones
máquina que ejecutan 2 acciones (ej: test &
set) sobre la misma variable de manera atómica
(indivisible)
 La ejecución de de esta instrucción es
mutuamente exclusiva incluso si tenemos varios
procesadores
 Necesitamos algoritmos mas complejos para
satisfacer las 3 exigencias principales del
problema de la sección crítica
16

Computación de Alto Rendimiento


17
Computación de Alto Rendimiento
18
Computación de Alto Rendimiento
espera activa

19
Computación de Alto Rendimiento
20
Computación de Alto Rendimiento
21
Computación de Alto Rendimiento
22
Computación de Alto Rendimiento
23
Computación de Alto Rendimiento

También podría gustarte