Programación Concurrente.
3º Ingeniería Técnica de Sistemas y Gestión. Dpto. Lenguajes y Sistemas Inorm!ticos. "TSI Inorm!tica
Relación de problemas Tema 1. Introducci ón.
1. Considerar el siguiente siguiente fragmento de programa para 2 procesos A y B: proceso A: for seqA:= seqA:= 1 to 10 do x:=x+1; proceso B: for seqB:= 1 to 10 do x:=x+1; uponer que la !aria"le x est# iniciali$ada a 0% que am"os procesos A y B se e&ecutan e&ecutan una !e$ y que seqA y seqB seqB no son !aria"les !aria"les compartidas. 'os dos procesos pueden e&ecutarse a cualquier !elocidad. (Cu#les son los posi"les !alores resultantes para x). uponer que x de"e ser cargada en un registro para incrementarse. 2. (C*m (C*mo o se podr podra a ,ace ,acerr la copia copia del del fic, fic,er ero o -f-f- en otro otro -g-% -g-% de form forma a conc concur urre rent nte% e% utili$ando la instrucci*n concurrente CB/3C/4). 5. Con Const stru ruir ir%% utili utili$a $and ndo o las las instr instruc ucci cione oness conc concur urre rent ntes es CB/ CB/ 3C 3C/ /4 4 y for6 for63&o 3&oin% in% programas concurrentes que se correspondan con los grafos de precedencia que se muestran a continuaci*n: 90 91 91
92
98
91 98
95
90
90
95
9
a7
92
95 98
9 9
91
92
9 9
9 "7
c7
8. 4ado el siguiente fragmento fragmento de programa concurrente% concurrente% o"tener su grafo de precedencia asociado: 90; CB/ 91; 92; CB/ 95;98;9;9; C/4 9<; C/4 9;
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 2
. uponer un sistema de tiempo real que dispone de un captador de impulsos conectado a un contador de energa el>ctrica. 'a funci*n del sistema consiste en contar el n?mero de impulsos producidos en 1 ,ora @cada , consumido se cuenta como un impulso7 e imprimir este n?mero en un dispositi!o de salida. 9ara ello se ,a de escri"ir un programa concurrente con 2 procesos: un proceso acumulador @lle!a la cuenta de los impulsos reci"idos7 y un proceso escritor @escri"e en la impresora7. /n la !aria"le com?n a los 2 procesos -n- se lle!a la cuenta de los impulsos. uponiendo que el sistema se encuentra en un estado correspondiente al !alor de la !aria"le n= y en estas condiciones se presentan simult#neamente un nue!o impulso y el final del periodo de 1 ,ora% o"tener las posi"les secuencias de e&ecuci*n de los procesos y cu#les de ellas son correctas. . 'a in,i"ici*n de las interrupciones no funciona correctamente cuando ,ay secciones crticas anidadas. /scri"ir 2 rutinas: ProtocoloEntrada @conecta las interrupciones7 y ProtocoloSalida @las desconecta7 para resol!er el pro"lema. <. /n !e$ de la instrucci*n TestAndSet % algunos ordenadores pro!een de una instrucci*n at*mica que incrementa en 1 el !alor de Lock : FUNCTION {ATOMICA} TestAndInc(VAR Lock:INTEGER):INTEGER; BEGIN TestAndInc:=Lock; Lock:=Lock! EN";
/scri"ir protocolos @uno de entrada y otro de salida7 para una secci*n crtica utili$ando dic,a instrucci*n. . uponer que el siguiente algoritmo @inserci*n directa7: #ROCE"URE so$t(%n&e$%o$'se$%o$:INTEGER); VAR %'*: INTEGER; BEGIN FOR % := %n&e$%o$ TO se$%o$+! "O FOR * := %! TO se$%o$ "O IF ,-*. / ,-%. T0EN s1,(,-%.' ,-*.); EN";
quisiese ser utili$ado en un programa paralelo de la forma siguiente: COBEGIN so$t(!'n);so$t(n!'2n) COEN";3e$4e(!'n!'2n);
a7 i el tiempo de e&ecuci*n secuencial del algoritmo es t@n7=n@n3172 @≈ n227; (Cu#l sera el tiempo de e&ecuci*n del programa paralelo si la me$cla lle!a en reali$arse n operaciones) "7 Compru>"ese con una ta"la que el n?mero de operaciones del algoritmo paralelo es significati!amente menor. c7 /scri"ir un procedimiento de me$cla que permitiese paraleli$ar las 5 operaciones: COBEGIN so$t(!'n);so$t(n!'2n);3e$4e(!'n!'2n) COEN";
D. /scri"ir un programa concurrente para multiplicar matrices 5x5 con 5 procesos concurrentes. @ota: suponer que los elementos de las matrices se pueden leer simult#neamente7. 10. Con el grafo de sincroni$aci*n de la figura% escri"ir 2 protocolos:
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 5
Ese$,$#o$ (A:,ct%5%d,d) {ese$, 6e ,c,7e 8, ,ct%5%d,d A} Ac,7,$ (A:,ct%5%d,d) {9,ce const,$' ,ct%5%d,d A ,c,7,d,} A
B
C
D
E
F
G
H
I
que permitan la sincroni$aci*n perfecta de las acti!idades del grafo. 9re!er que el grafo de acti!idades puede ser e&ecutado m#s de una !e$. 11. (Gu> significa un ciclo en un grafo de sincroni$aci*n) Tema #. "$c%usión &utua.
12. (Gu> diferencia fundamental existe entre un "ucle de espera acti!a y una !aria"le interruptor que da turnos para la sincroni$aci*n de los procesos) 15. (Htili$a espera ocupada el Algoritmo de 4e66er% si el segundo proceso est# en su secci*n% Eurno= 1 y el proceso 1 est# intentando entrar en su secci*n) 18. 4emostrar que el A. de 4e66er ,ace posi"le que un proceso espere indefinidamente @-inanici*n-7 a entrar en su secci*n Crtica% con la suposici*n de que siempre que un proceso entra en la secci*n Crtica e!entualmente la a"andonar#. 1. enerali$ar el A. de 4e66er para 5 procesos. 1. (9odra pensarse que una posi"le soluci*n al pro"lema de la exclusi*n mutua% era el siguiente algoritmo que no necesita compartir una !aria"le -Eurno- entre los 2 procesos) a7 (e satisface la exclusi*n mutua) "7 (e satisfacen las propiedades de !i!acidad) Compararlo con el Algoritmo de 4e66er. maginar escenarios que demuestren las contestaciones. #$oceso % c%=; 19%8e c*= do 7e4%n c%:=!; 19%8e c*= do;c%=; end; (
1<. (o se podra construir una soluci*n m#s simple al pro"lema de la exclusi*n mutua que el Algoritmo de 4e66er utili$ando la instrucci*n at*mica EestAndet@l7) (Cu#l era dic,a soluci*n).
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 8
1. (Gu> ocurrira si el A. de 4e66er se ,u"iera programado as) #$oceso #%; BEGIN RE#EAT T$no:=%; 0ILE T$no/>% "O ; (
1D. Al siguiente algoritmo se le conoce como soluci*n de Iyman al pro"lema de la exclusi*n mutua. (/s correcta dic,a soluci*n) 9roceso i @J inicialmente: c1%c2K31% turnoK31 J7 c%=; 19%8e T$no/>% do 7e4%n 19%8e c*= do; T$no:=%; end; (
20. e tienen 2 procesos concurrentes que representan 2 m#quinas expendedoras de tic6ets @seLalan el turno en que ,a de ser atendido el cliente7% los n?meros de los tic6ets se representan por dos !aria"les n1 y n2 que !alen inicialmente 0. /l proceso con el n?mero de tic6et m#s "a&o entra en su secci*n Crtica. /n caso de tener 2 n?meros iguales se procesa primero el proceso n?mero 1. a7 4emostrar que se !erifican las propiedades de !i!acidad de la soluci*n. "7 4emostrar que los !alores ni=1 son necesarios. #ROGRAM #,n,de$%,"eL,3o$t; VAR n!'n2:INTEGER; #ROCE"URE #!; #ROCE"URE #2; BEGIN BEGIN RE#EAT RE#EAT n!:=!; n2:=!; n!:=n2!; n2:=n!!; 0ILE (n2/>) AN" 0ILE (n!/>) AN" (n2/n!) "O; (n!/=n2) "O; (Re4%on C$%t%c,) (Re4%on C$%t%c,) n!:=; n2:=; ??? ??? FOREVER FOREVER EN"; EN"; BEGIN n!:=; n2:=; COBEGIN #!;#2 COEN"; EN"?
21. /l siguiente programa es una soluci*n al pro"lema de la exclusi*n mutua para 2
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas
procesos. 4iscutir la correcci*n de esta soluci*n: si es correcta% entonces pro"arlo. i no fuese correcta% escri"ir escenarios que demuestren que la soluci*n es incorrecta. #ROGRAM %ntento; (In%c%,83ente c!'c2/+ !) VAR c!'c2:INTEGER; #ROCE"URE #!; BEGIN RE#EAT REM!; RE#EAT c!:=!+c2; UNTIL c2/>; CRIT!; C!:=!; FOREVER; EN";
#ROCE"URE #2; BEGIN RE#EAT REM2; RE#EAT c2:=!+c!; UNTIL c!/>; CRIT2; C2:=!; FOREVER; EN";
BEGIN c!:=!;c2:=!; COBEGIN #!;#2 COEN" EN"?
22. 'os ordenadores BM 505<0 tienen una instrucci*n llamada EE@EestAndet7. /xiste una !aria"le glo"al del sistema @en memoria com?n a los procesadores7 llamada c*digo de condici*n. /&ecutando EE@l7 para la !aria"le local l se o"tendra lo mismo que con las 2 sentencias siguientes: 8:=c; c:=!;
4iscutir la correcci*n de la soluci*n al pro"lema de la exclusi*n mutua del siguiente algoritmo. (Gu> ocurrira si la instrucci*n EE fuese reempla$ada por las 2 sentencias) #ROGRAM TestAnd
@ BEGIN @ c:= ; @ COBEGIN @ #!;#2 @ COEN" @ EN"?
25. 'a instrucci*n /N intercam"ia los contenidos de 2 posiciones de memoria. /N@a%"7 es equi!alente a una e&ecuci*n indi!isi"le de las 5 operaciones siguientes: te3:=,; ,:=7; 7:=te3;
a7 4iscutir la correcci*n de la soluci*n para el algoritmo de exclusi*n mutua siguiente.
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas
"7 (Gu> ocurrira si la instrucci*n primiti!a /N fuese reempla$ada por las 5 asignaciones anteriores) #ROGRAM Inte$c,37%o; VAR c:INTEGER; #ROCE"URE #!; #ROCE"URE #2; VAR 8:INTEGER; VAR 8:INTEGER; BEGIN BEGIN 8:=; 8:=; RE#EAT RE#EAT REM!; REM2; RE#EAT RE#EAT E(c'8); E(c'8); UNTIL 8=!; UNTIL 8=!; CRIT!; CRIT2; E(c'8); E(c'8); FOREVER; FOREVER; EN"; EN"; EN";
@ @ @ @ @ @
BEGIN c:=!; COBEGIN #!;#2 COEN" EN"?
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas <
28. Considerar el siguiente algoritmo de exclusi*n mutua para n procesos @algoritmo de nut, ):
#$oceso(%) c: ARRA-??n. OF (,s%5o' so8%c%t,ndo' en<C); c:= ,s%5o; T$no:= ; ? ? ? RE#EAT c-%.:= so8%c%t,ndo; *:= T$no; 0ILE */>% "O IF c-*./>,s%5o T0EN *:=T$no ELen<C) "O k:=k !; UNTIL k >= n; T$no:= %; (
/scri"ir un escenario en el que 2 procesos consiguen pasar el "ucle de la instrucci*n @<7% suponiendo que el turno lo tiene inicialmente el proceso 9@07. 2. 4emostrar que en la generali$aci*n del algoritmo de 9eterson para -n- procesos : RE#EAT FOR *:= ! TO n+! "O BEGIN 6-%.:=*; t$no-*.:=%; 0ILE (∃k/>%: 6-k.>=*) AN" (t$no-*.=%) "O; EN"; ?????
cuando un proceso pasa a la etapa siguiente% se !erifica una de estas dos condiciones: a7 precede a todos los dem#s "7 no esta"a solo en la etapa que ,a de&ado
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas
Tema 3. &onitores.
2. Aunque un monitor garanti$a la exclusi*n m?tua% los procedimientos tienen que ser re3entrantes. /xplicar porqu>. 2<. 4emostrar que incluso si la implementaci*n del sem#foro es OO% la simulaci*n del monitor con sem#foros no lo es. 2. e consideran dos recursos denominados r1 y r2. 4el recurso r1 existen 1 e&emplares y del recurso r2 existen 2 e&emplares. /scri"ir un monitor que gestione la asignaci*n de los recursos a los procesos de usuario% suponiendo que cada proceso puede pedir: • ⋅un e&emplar del recurso r1 • ⋅un e&emplar del recurso r2 • ⋅un e&emplar del recurso r1 y otro del recurso r2 'a soluci*n de"er# satisfacer estas dos condiciones: • Hn recurso no ser# asignado a un proceso que demande un e&emplar de r1 o un e&emplar de r2 ,asta que al menos un e&emplar de dic,o recurso quede li"re • e dar# prioridad a los procesos que demanden un e&emplar de am"os recursos 2D. /scri"ir una soluci*n al pro"lema de -lectores3escritores- con monitores: a7 Con prioridad a los lectores. "7 Con prioridad a los escritores: c7 Con prioridades iguales 50. Coc,es que !ienen del norte y del sur pretenden cru$ar un puente so"re un ro. *lo existe un carril so"re dic,o puente. 9or lo tanto% en un momento dado% s*lo puede ser cru$ado por uno o m#s coc,es en la misma direcci*n @pero no en direcciones opuestas7. a7 Completar el c*digo del siguiente monitor que resuel!e el pro"lema del acceso al puente suponiendo que llega un coc,e del norte @sur7 y cru$a el puente si no ,ay otro coc,e del sur @norte7 cru$ando el puente en ese momento. "7 Me&orar el monitor anterior% de forma que la direcci*n del trafico a tra!>s del puente cam"ie cada !e$ que lo ,ayan cru$ado 10 coc,es en una direcci*n% mientras 1 * m#s coc,es estu!iesen esperando cru$ar el puente en direcci*n opuesta. MEF estionaErafico PAF ................ 9FC/4M/E /ntrarCoc,e4elorte ................... 9FC/4M/E alirCoc,e4elorte .................... 9FC/4M/E /ntrarCoc,e4elur .....................
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas D
9FC/4M/E alirCoc,e4elur niciali$aci*n ....................... 51. Hna tri"u de antrop*fagos comparte una olla en la que ca"en M misioneros. Cuando alg?n sal!a&e quiere comer% se sir!e directamente de la olla% a no ser que >sta est> !aca. i la olla est# !aca% el sal!a&e despertar# al cocinero y esperar# a que >ste ,aya rellenado la olla con otros M misioneros. 9roceso sal!a&e 9roceso cocinero Fepetir Fepetir er!irseQ1Qmisionero; 4ormir; Comer; FellenarQolla; iempre; iempre; mplementar un monitor para la sincroni$aci*n requerida% teniendo en cuenta que: • la soluci*n no de"e producir inter"loqueo% • los sal!a&es podr#n comer siempre que ,aya comida en la olla% • solamente se despertar# al cocinero cuando la olla est> !aca. 52. Hna cuenta de a,orros es compartida por !arias personas @procesos7. Cada persona puede depositar o retirar fondos de la cuenta. /l saldo actual de la cuenta es la suma de todos los dep*sitos menos la suma de todos los reintegros. /l saldo nunca puede ser negati!o. a7 9rogramar un monitor para resol!er el pro"lema% todo proceso puede retirar fondos mientras la cantidad solicitada c sea menor o igual que el saldo disponi"le en la cuenta en ese momento. i un proceso intenta retirar una cantidad c mayor que el saldo% de"e quedar "loqueado ,asta que el saldo se incremente lo suficiente @como consecuencia de que otros procesos depositen fondos en la cuenta7 para que se pueda atender la petici*n. /l monitor de"e tener 2 procedimientos: depositar(c) y retirar(c). uponer que los argumentos de las 2 operaciones son siempre positi!os. "7 Modificar la respuesta del apartado anterior% de tal forma que el reintegro de fondos a los clientes sea ser!ido seg?n un orden OO. 9or e&emplo% suponer que el saldo es 200 unidades y un cliente est# esperando un reintegro de 500 unidades. i llega otro cliente de"e esperarse% incluso si quiere retirar 200 unidades. uponer que existe una funci*n denominada cantidad(cond) que de!uel!e el !alor de la cantidad @par#metro c de los procedimientos retirar y depositar 7 que espera retirar el primer proceso que se "loque* @tras e&ecutar RAE en la seLal cond 7. 55. 'os procesos 91% 92%...%9 n comparten un ?nico recurso F% pero s*lo un proceso puede utili$arlo cada !e$. Hn proceso 9 i puede comen$ar a utili$ar F si est# li"re; en caso contrario% el proceso de"e esperar a que el recurso sea li"erado por otro proceso. i ,ay !arios procesos esperando a que quede li"re F% se conceder# al proceso que tenga mayor prioridad. 'a regla de prioridad de los procesos es la siguiente: el proceso 9 i tiene prioridad i @1K=iK=n7% donde los n?meros menores implican mayor prioridad. mplementar un monitor que implemente los procedimientos para -pedir- y -li"erar- el recurso 58. /n un sistema ,ay dos tipos de procesos: A y B. Gueremos implementar un esquema de sincroni$aci*n en el que los procesos se sincroni$an por "loques de 1 proceso del tipo A y 10 procesos del tipo B. 4e acuerdo con este esquema: • i un proceso de tipo A llama a la operaci*n de sincroni$aci*n% y no ,ay @al menos7 10 procesos de tipo B "loqueados en la operaci*n de sincroni$aci*n% entonces el proceso
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 10
de tipo A se "loquea. • i un proceso de tipo B llama a la operaci*n de sincroni$aci*n% y no ,ay @al menos7 1 proceso del tipo A y D procesos del tipo B @aparte de >l mismo7 "loqueados en la operaci*n de sincroni$aci*n% entonces el proceso de tipo B se "loquea. • i un proceso de tipo A llama a la operaci*n de sincroni$aci*n y ,ay @al menos7 10 procesos "loqueados en dic,a operaci*n% entonces el proceso de tipo A no se "loquea y adem#s de"er#n des"loquearse exactamente 10 procesos de tipo B. • i un proceso de tipo B llama a la operaci*n de sincroni$aci*n y ,ay @al menos7 1 proceso de tipo A y D procesos de tipo B "loqueados en dic,a operaci*n% entonces el proceso de tipo B no se "loquea y adem#s de"er#n des"loquearse exactamente 1 proceso del tipo A y D procesos del tipo B. • o se requiere que los procesos se des"loqueen en orden OO.
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 11
Tema '. Sistemas de Paso de &ensajes
5. Considerar un con&unto de n procesos conectados en forma de anillo. Cada proceso tiene un !alor local almacenado en su !aria"le local mi_valor. 4eseamos calcular la suma de los !alores locales almacenados por los procesos de acuerdo con el algoritmo que se expone a continuaci*n. 'os procesos reali$an una serie de iteraciones para ,acer circular sus !alores locales por el anillo. /n la primera iteraci*n% cada proceso en!a su !alor local al siguiente proceso del anillo% al mismo tiempo que reci"e del proceso anterior el !alor local de >ste. A continuaci*n acumula la suma de su !alor local y el reci"ido desde el proceso anterior. /n las siguientes iteraciones% cada proceso en!a al siguiente proceso siguiente el !alor reci"ido en la anterior iteraci*n% al mismo tiempo que reci"e del proceso anterior un nue!o !alor. 4espu>s acumula la suma. Eras un total de n-1 iteraciones% cada proceso conocer# la suma de todos los !alores locales de los procesos. mplementar este algoritmo en M9. miQ!alor= 0 suma 5 =0
0
miQ!alor= 1 suma = 11
suma = 5
miQ!alor= 2 5suma = 5 E/FACS 1
miQ!alor= 2 suma = 2
suma =
2
suma = 8
suma = 1 suma = E/FACS 2
5
2
suma = 1 0
1
suma = 5
E/FACS 2
suma =
suma =
suma =
suma =
5 0
suma = 5
F/H'EA4
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 12
5. ean dos con&untos de 4 procesos cada uno: P(i1..4) y !(i1..4). 4eseamos que cada proceso P(") en!ie una secuencia de !alores enteros al proceso correspondiente !("). /n lugar de reali$ar esta comunicaci*n directamente% la ,aremos a tra!>s de un proceso multiplexor y un proceso demultiplexor. Cuando un proceso P(") quiere en!iarle un !alor a su !(") lo en!a directamente al multiplexor% el cual en!iar# dic,o !alor &unto con el ndice @ "7 del proceso emisor al proceso demultiplexor. /l proceso demultiplexor% en!iar# el !alor transmitido al proceso !(") correspondiente% de acuerdo con el !alor de ndice reci"ido. Cuando todos los procesos P terminen% el multiplexor% el demultiplexor y los procesos ! terminar#n. a7 mplementar este sistema en M9. "7 Modificar el sistema implementado para que cada proceso P(") reci"a una seLal de confirmaci*n cuando su proceso !(") reci"a el !alor en!iado.
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 15
5<. /n un sistema distri"uido% procesos clientes necesitan sincroni$arse de forma especfica para reali$ar cierta tarea% de forma que dic,a tarea s*lo podr# ser reali$ada cuando tres procesos est>n preparados para reali$arla. 9ara ello% en!an peticiones a un proceso controlador del recurso y esperan respuesta para poder reali$ar la tarea especfica. /l proceso controlador se encarga de asegurar la sincroni$aci*n adecuada. 9ara ello% reci"e y cuenta las peticiones que le llegan de los procesos% las dos primeras no son respondidas y producen la suspensi*n del proceso que en!a la petici*n @de"ido a que se "loquea esperando respuesta7 pero la tercera petici*n produce el des"loqueo de los tres procesos pendientes de respuesta. A continuaci*n% una !e$ des"loqueados los tres procesos que ,an pedido @al reci"ir respuesta7% iniciali$a la cuenta y procede cclicamente de la misma forma so"re otras peticiones. /l c*digo de los procesos clientes es el siguiente% asumiendo que se usan operaciones "loqueantes no "uferi$adas. C%iente(i) (i*+, ... , -)
R,ile @true7 T send @Upeticion%Controlador7; recei!e @Upermiso% Controlador7; Feali$aQtareaQgrupal @ 7; V /scri"ir en pseudoc*digo% dentro del espacio reser!ado a"a&o% el c*digo del proceso controlador% utili$ando una orden de espera selecti!a que permita implementar la sincroni$aci*n requerida entre los procesos. Contro%ador
R,ile @true7 T ... V
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 18
5. /n un sistema distri"uido% 5 procesos productores producen continuamente !alores enteros y los en!an a un proceso "uffer que los almacena temporalmente en un array local de 8 celdas enteras para ir en!i#ndoselos a un proceso consumidor. A su !e$% el proceso "uffer reali$a lo siguiente% sir!iendo de forma equitati!a al resto de procesos: a7 /n!a enteros al proceso consumidor siempre que su array local tenga al menos dos elementos disponi"les. "7 Acepta en!os de los productores mientras el array no est> lleno% pero no acepta que cualquier productor pueda escri"ir dos !eces consecuti!as en el "?fer. /l c*digo de los procesos productor y consumidor es el siguiente% asumiendo que se usan operaciones "loqueantes no "uferi$adas. Prodi (i*+, /, #)
TR,ile @true7 T9roduce @Udato7 send @Udato%1%Buffer7;V V
Consumidor
TR,ile @true7 Trecei!e @Udato%1%Buffer7 Consume @dato7;V V
/scri"ir en pseudoc*digo el c*digo del proceso Buffer% utili$ando una orden de espera selecti!a que permita implementar la sincroni$aci*n requerida entre los procesos. 0uer
9rogramaci*n Concurrente. .E. istemas y esti*n.
Felaci*n de 9ro"lemas 1
5D. uponer un proceso productor y 5 procesos consumidores que comparten un "uffer acotado de tamaLo B. Cada elemento depositado por el proceso productor de"e ser retirado por todos los 5 procesos consumidores para ser eliminado del "uffer. Cada consumidor retirar# los datos del "uffer en el mismo orden en el que son depositados% aunque los diferentes consumidores pueden ir retirando los elementos a ritmo diferente unos de otros. 9or e&emplo% mientras un consumidor ,a retirado los elementos 1% 2 y 5% otro consumidor puede ,a"er retirado solamente el elemento 1. 4e esta forma% el consumidor m#s r#pido podra retirar ,asta B elementos m#s que el consumidor m#s lento. /scri"ir el pseudoc*digo de un proceso que implemente el "uffer de acuerdo con el esquema de interacci*n descrito usando una construcci*n de espera selecti!a% as como el pseudoc*digo del proceso productor y de los procesos consumidores . Comen$ar identificando qu> informaci*n es necesario representar% para despu>s resol!er las cuestiones de sincroni$aci*n. Hna posi"le implementaci*n del "ufffer mantendra% para cada proceso consumidor% el puntero de salida y el n?mero de elementos que quedan en el "uffer por consumir @!er figura7.
80. Hna tri"u de 5 sal!a&es comparte una olla en la que ca"en M misioneros. Cuando alg?n sal!a&e quiere comer% se sir!e directamente de la olla% a no ser que >sta est> !aca. i la olla est# !aca% el sal!a&e despertar# al cocinero y esperar# a que >ste ,aya rellenado la olla con otros M misioneros. 9roceso sal!a&eWiX% i=0%1%2 ,ile@true7 er!irseQ1Qmisionero; Comer;
9roceso cocinero R,ile@true7 4ormir; FellenarQolla;
mplementar los procesos sal!a&es y cocinero usando paso de mensa&es% usando un proceso olla que incluye una construcci*n de espera selecti!a que sir!e peticiones de los sal!a&es y el cocinero para mantener la sincroni$aci*n requerida% teniendo en cuenta que: • • •
la soluci*n no de"e producir inter"loqueo% los sal!a&es podr#n comer siempre que ,aya comida en la olla% solamente se despertar# al cocinero cuando la olla est> !aca.