3 exclusión mutua
-
Upload
jorge-garrote -
Category
Documents
-
view
219 -
download
0
Transcript of 3 exclusión mutua
-
8/18/2019 3 exclusión mutua
1/42
Exclusión mutua
-
8/18/2019 3 exclusión mutua
2/42
Problema
• Los hilos comparten un recurso (ej:textArea)
– Si inserto otra cadena antes de quetermine la primera, se solapan!
-
8/18/2019 3 exclusión mutua
3/42
-
8/18/2019 3 exclusión mutua
4/42
-
8/18/2019 3 exclusión mutua
5/42
-
8/18/2019 3 exclusión mutua
6/42
-
8/18/2019 3 exclusión mutua
7/42
-
8/18/2019 3 exclusión mutua
8/42
-
8/18/2019 3 exclusión mutua
9/42
-
8/18/2019 3 exclusión mutua
10/42
class ount extends hread "static #olatile int n $ %&
public #oid run() " int temp&
'or (int i $ %& i %& i **) " temp $ n& n $ temp * & + +
public static #oid main(Strin-. ars ) "ount p $ ne/ ount()& ount q $ ne/ ount()& p0 start ()& q0 start ()&
tr1 " p0 join ()& q0 join ()& + catch (2nterruptedException e) " + S1stem0out0println (3he #alue o' n is 3 * n
+ +
Ejemplo variablecompartida 2
-
8/18/2019 3 exclusión mutua
11/42
public class Counter implementsRunnable { static fnal int THREADS = 2; static fnal int A!"C#$%T =&'''''''; static volatile int counter = ';
int id;
public Counter(int id) { t*is+id = id; ,
-#verride public void run() { int ma. = A!"C#$%T/THREADS;
S0stem+out+print1(T*read 3d4n5id); 1or (int i ='; i 6 ma.; i77) { counter 7= &; , ,
public static void main(Strin89: ar8s) t*ros
-
8/18/2019 3 exclusión mutua
12/42
-
8/18/2019 3 exclusión mutua
13/42
ondiciones para la E4
• 5 procesos en bucle in6nito• Las S no se pueden entrela7ar• Antes 1 despu8s de la S se inserta un
protocolo• 9n proceso no se puede parar en su S• eben e#itarse los interbloqueos: si #arios
procesos quieren acceder uno debeconseuirlo
• En ausencia de competencia si aluienquiere entrar debe poder hacerlo
-
8/18/2019 3 exclusión mutua
14/42
Estructura aloritmos E4
-
8/18/2019 3 exclusión mutua
15/42
Aloritmo
• La primera posibilidad consiste en elmantenimiento de un turno:
• Los procesos, antes de su S esperana que le lleue el turno0
• espu8s de su S pasan el turno
-
8/18/2019 3 exclusión mutua
16/42
Aloritmo
-
8/18/2019 3 exclusión mutua
17/42
Aloritmo •
La #ariable compartidaturno se iniciali7a a i o a jantes de jecutar Pi
• La S de Pi se ejecuta siturn $ i
• Pi est; en espera !
• Existe una alternanciaestricta0 El ritmo deejecución depende del mas
lento0• Si un proceso 'alla dentro o
'uera (/hile) de su S elotro nunca podr; entrar asu S0 !!!!!!!
Process Pi:
repeat
while(turno!=i){};
SC
turno:=j; SR
forever
-
8/18/2019 3 exclusión mutua
18/42
?tra @epresentación del Aloritmo
(a/ait turn $ ) equi#ale a *ile (turno ?= &){,
-
8/18/2019 3 exclusión mutua
19/42
Aloritmo
• Est; libre de interbloqueos: El turnono puede asinarse a 5 procesossimult;neamente
• Puede 'allar por inanición
-
8/18/2019 3 exclusión mutua
20/42
Ejercicio Lab0
• acer un prorama en Ba#a en el que#arios hilos acceden a un recursocompartido (puede ser el contador
del ejemplo #isto anteriormente) 1e#idencie la necesidad de laexclusión mutua0
• 4ediante una #ariable lobal turnoceda el recurso compartido a loshilos (Aloritmo )0
-
8/18/2019 3 exclusión mutua
21/42
iaramas de estado
• 9sados para probar la corrección deproramas concurrentes0
• Se parte del estado inicial 1 se #anrepresentado los posibles siuientesestados
• Si un estado 1a ha sido dibujado
pre#iamente se hace una conexión
-
8/18/2019 3 exclusión mutua
22/42
An;lisis del Aloritmo
• enCamos de6nido nuestro prorama asC:
– urno es una #ariable lobal
-
8/18/2019 3 exclusión mutua
23/42
iaramas de estado
El estado inicial es p, q (primera instrucción de los procesosP 1 D, turno #ale al comen7ar)
-
8/18/2019 3 exclusión mutua
24/42
er Aloritmocompleto
• o se dan ni
(pF,qF,) 1(pF,qF,5)• PF 1 qF son laseccionescrCticas• Lueo ? ha1interbloqueo
-
8/18/2019 3 exclusión mutua
25/42
iarama simpli6cado
Duitamos los enunciados que noa'ectan a la sincroni7ación delos hilos
-
8/18/2019 3 exclusión mutua
26/42
Aloritmo : eadLoc>G
Si 5procesosquierenentrar ensu S, deellos debe
conseuirlo0
-
8/18/2019 3 exclusión mutua
27/42
Aloritmo : 2naniciónG
S$Sección o
rCtica
Si HalInJproceso
quiere entraren la S,debeconseuirloen alIn
momento
o proreso en S K
2A22M
-
8/18/2019 3 exclusión mutua
28/42
Aloritmo 5
• 9n proceso en su S ? debeimpedir que otro entre en su S
• ada proceso tiene su propio Na(DuieroEntrarEn4iS)
• ada proceso lee el Na del otroantes de entrar
-
8/18/2019 3 exclusión mutua
29/42
Aloritmo 5
Oersión abre#iada
-
8/18/2019 3 exclusión mutua
30/42
Aloritmo 5
o aseura la Exclusión 4utuaDesde @ue sale del bucle 0 se asi8na el nuevo valor es SC
-
8/18/2019 3 exclusión mutua
31/42
Dia8rama de estados Al8oritmo 2 en 1orma Tabu
-
8/18/2019 3 exclusión mutua
32/42
Aloritmo F
• Solicito 1 despu8s espero• Ejercicio: ibujar diarama de
estados
-
8/18/2019 3 exclusión mutua
33/42
Aloritmo F
Se aseura la E4, pero puede haber eadLoc>
Ambos pueden insistir en entrar en S a la #e7
Tabla de
estados
-
8/18/2019 3 exclusión mutua
34/42
Aloritmo Q
• Si otro quiere entrar a la #e7, espero 1 lueo #uel#o a lacara
-
8/18/2019 3 exclusión mutua
35/42
-
8/18/2019 3 exclusión mutua
36/42
Aloritmo de e>>er (correcto en todos los sentidos)
-
8/18/2019 3 exclusión mutua
37/42
-
8/18/2019 3 exclusión mutua
38/42
Al8oritmo > (eterson) otra implementacin
• 2nicio:
Na-%.:$Na-.:$'alse turno:$ i o j• El deseo de entrar
en la 7ona crCtica se
indica conNa-i.:$true• Na-i.:$ 'alse en la
sección de salida0• Si P% 1 P intentan
simult;neamenteentrar en su S selo impide la #ariableturno
Process Pi:
repeat
flagi:=true;
turno:=i;"o {} while
(flagjan" turno=j);
SC
flagi:=false;
SR
forever
-
8/18/2019 3 exclusión mutua
39/42
Solución a n procesos: aloritmo deLamport (panaderCa)
• Antes de ejecutar la S cada procesorecoe un nImero0 Aquel que tena elnImero mas pequeRo entra en la S0
•
Si Pi 1 Pj tienen el mismo nImero: – si ij Pi entrar; primero, si no Pj
• Pi pone su nImero a % en la Sec0 de Salida• otación:
– (a,b) (c,d) si a c o si a $ c 1 b d – max(a%,000a>) es un nImero b tal que:
• b $ ai para i$%,00>
-
8/18/2019 3 exclusión mutua
40/42
aloritmo de la panaderCa
(cont0)• Oariables lobales: – choosin: arra1-%00nK. o' boolean&
• iniciali7ado a 'alse
– number: arra1-%00nK. o' inteer&• iniciali7ados a %
• Oalide7: – Si Pi est; dentro S es que P> ha
escoido un number->.!$ %, 1(number-i.,i) (number->.,>)
-
8/18/2019 3 exclusión mutua
41/42
El aloritmo de la panaderCa (cont0)
Process Pi:
repeat
choosingi:=true;
nu#$eri:=#a%(nu#$er&''nu#$ern)*;
choosingi:=false;
for j:=& to n "o {
while (choosingj) {};
while (nu#$erj!=&an" (nu#$erj+j),(nu#$eri+i)){};
}
SC
nu#$eri:=&;
SR
forever
-
8/18/2019 3 exclusión mutua
42/42
Pr;ctica5 Lab0
• odi6car en ja#a mediante hilos elaloritmo (urno), el de Peterson (5procesos) 1 el de Lamport (Q
procesos)0 La sección crCtica puedeser un println() o la actuali7ación deun contador0 omprobar su
'uncionamiento0