Clase de algoritmos paralelos correspondiente a la semana del 27 al 31 de mayo del 2014
ALGORITMO DE DEKKER Y PETERSON
I. INTRODUCCION: CONCEPTOS PREVIOS 1. 1. LOS PROCESOS
Un proc proces eso o es una una enti entida dad d comp compue uest sta a de un código ejecutable secuencial, un conjunto de datos y una pila que se utiliza para la transerencia de par!metros, restauración de llamadas recursi"as o de inte interrrup rupcion ciones es,, etc etc# Una part parte e de la pila pila contiene el entorno del proceso $"er %igura&'#
%ig# (odelo b!sico de un )roceso *un cuando el concepto de proceso es +el mismo en todos los lenguajes de programación conc concur urre rent nte, e, e-ist e-isten en "aria "ariaci cion ones es en cuan cuanto to al mode modelo lo de conc concur urrrenci encia a que que adop adopta tan# n# .sta .stass "ariantes se dan en aspectos como/ La estructura: o Estáti Estática: ca: Cuando el nmero de procesos del programa concurrente es jo y se conoce en tiempo de compilación Cuando los proce procesos sos pueden pueden ser Dinámi mica ca:: Cuando o Diná creados en cualquier momento# .l nmero de procesos e-istentes en el programa conc concur urrrente ente sólo sólo se cono conoce ce en tiem tiempo po de ejecución# El Nivel de Paralelismo: Paralelismo: o Anidado: Cuando un proceso puede ser denido dentro de otro proceso# o Plan Plano: o: Cuando los procesos sólo pueden ser denidos en el ni"el m!s e-terno del programa# Relacio Relaciones nes entre Procesos: Procesos: e pueden crear jerarquas de procesos e interrelaciones entre ellos con el uso de los ni"eles de paralelismo anidados# o Relación Padre/Hijo: Un proceso $el padre' es el responsable de la creación de otro, el 5ijo# .l padr padre e 5a de espe espera rarr mien mientr tras as el 5ijo 5ijo est! est! siendo creado e inicializado o Relació Relación n Guardian/ Guardian/Depend Dependiente: iente: .l proceso guardi!n no puede terminar 5asta que todos los procesos dependientes 5ayan terminado3# Granul Granulari aridad dad:: e puede 5acer la di"isión de para paralel lelism ismo o de gran grano o no no y paral paraleli elism smo o de
grano grano grueso grueso## Un progr programa ama concur concurren rente te de grano grano grueso grueso contien contiene e relati relati"am "ament ente e pocos pocos procesos, cada uno con una labor signicati"a que que reali realiza zarr# 6os 6os prog progra rama mass de gran grano o no no conti ontien enen en un gran gran nme nmerro de proces ocesos os,, algunos de los cuales pueden incluir una nica acción#
1.2. ESTADOS PROCESO
Y
OPERACIONES
DE
UN
urante el tiempo de e-istencia de un proceso, 8ste se puede encontrar en uno de "arios estados posibles# .l cambio de un estado a otro depende de ciertas operaciones $"er %igura 9'/ Nuevo: .l proceso 5a sido creado por un usuario al lanzar un programa concurrente a ejecución# En Ejecución: 6as instrucciones de m!quina que conor conorman man el código código uente uente del proce proceso so est!n est!n siendo ejecutadas por el procesador# procesador# Bloue Bloueado ado:: .l proceso est! esperando a que ocur ocurra ra algn algn tipo tipo de e"ent e"ento, o, por por ejemp ejemplo, lo, la realización de una operación de entrada:salida# List Listo: o: .l proceso est! en espera de que sus instrucciones sean ejecutadas por el procesador cuando el planicador del sistema operati"o le d8 el turno para ello# !inali"ado: .l proceso 5a terminado y todos los recur recursos sos que que 5a utiliza utilizado do para para ejecuta ejecutarse rse son liberados#
de alto ni"el Concurrent )ascal, desarrollado por ?rinc5 @ansen abrió la puerta a otros lenguajes de alto ni"el que incorporaban concurrencia# concurrencia# esde entonces la programación concurrente 5a ido ganando inter8s y actualmente se utiliza muy a menu menudo do en la impl implem emen enta taci ción ón de nume numero rosos sos sistemas# Ares grandes 5itos ortalecen el 5ec5o de que la progr ogramación concurrent ente sea tan importante/ 6a aparición del concepto de A5read o 5ilo que 5ace que los programas puedan ejecutarse con mayor "elocidad comparados con aquellos que utilizan el concepto de proceso 6a apar aparic ición ión m!s m!s reci recien ente te de leng lengua uajes jes como como B** B**,, lenguaje orientado a objetos de propósito gene genera rall que que da sopo soport rte e dir directa ectame ment nte e a la progra ogram mació ación n concu oncurr rren ente te medi median antte la inclusión de primiti"as especcas# 6a apar aparic ición ión del DEA. DEA.FE FE.A .A que que es un camp campo o abonado para el desarrollo y la utilización de programas programas concurren concurrentes# tes# Cualquier Cualquier programa programa de Dntern Dnternet et en el que podamos podamos pensar tales como como un na"e na"ega gado dor, r, un c5at c5at,, etc# etc#,, est! est!n n programados usando t8cnicas de programación concurrente# 1.4. EXCLUSIÓN MUTUA
Transición Transición de estados de un estado a traves de operaciones
1.3. CONCURRENCIA
6a programación concurrente tiene sus races en los sistemas operati"os y en la programación de sist sistem emas as,, no en "ano "ano,, los prim primer eros os prog progra rama mass concurrent entes ueron los propio opioss sist istemas operat operati"o i"oss de multip multipro rogram gramaci ación ón en los que un solo procesador de gran capacidad deba compartir su tiempo entre muc5os usuarios# .n los a;os 9072 del lenguaje
Consiste en asegurar que dos procesos conc concur urre rent ntes es no acce acceda dan n a un mism mismo o recu recurso rso comn al mismo tiempo, ya que ello puede lle"ar a inco5erencia en la inormación que se procesa# Un problema problema tpico de la programació programación n concurr concurrente ente donde la e-clusión mutua se 5ace presente es el ya conoci conocido/ do/ Probl Problema ema de los jardine jardines: s: e desea controlar el nmero de "isitantes a unos jardines# 6a entrada y la salida a los jardines se pueden realizar por dos puntos que disponen de 2 puertas# e desea poder conocer en cualquier momento el nmero de "isitantes a los jardines, por lo que se dispone de un dispositi"o de c!lculo con cone-ión en cada uno de los dos puntos de entrada que le inorman cada "ez que se produce una entrada o una salida# i analizamos el problema y lo lle"amos al terreno de la programación concurrente, podemos asociar el proceso proceso P1 a un punto de entrada y el proceso P2 al otro punto de entrada# *mbos procesos se ejecuta ejecutan n concu concurr rrent entemen emente te y utiliz utilizan an una nica nica "aria "ariabl ble, e, diga digamo moss # , para para lle" lle"ar ar la cuen cuenta ta del del nmero de "isitantes# .l incremento o decremento de la "ariable se produce cada "ez que un "isitante entra o sale por una de las puertas# e esta orma, la entrada de un "isitante por una de las puertas 5ace que se ejecute la instrucción/ # :$ # % &
mientras que la salida de un "isitante 5ace que se ejecute la instrucción/
# :$ # ' &
*unque el proceso P1 y el proceso P2 se supongan ejecutados en procesadores distintos $lo cual no
necesariamente es cierto', ambos utilizan la misma posición de memoria para guardar el "alor de la "ariable compartida, es decir, de # # e puede dar la situación de que el planicador de procesos del sistema permita el entrelazado $interoliación' de las operac operacion iones es element elementales ales anterio anteriores res de cada cada uno uno de los proc proces esos, os, lo cual cual ine" ine"it itab ablem lemen ente te produ producir! cir! error errores es que son dici diciles les de detect detectar ar mediante una prueba del programa, programa, ya que el que se produzcan produzcan depende de la temporizac temporización ión de dos procesos procesos independientes# independientes# Gste ejemplo muestra muestra la clara necesidad de sincronizar $poner de acuerdo' de alguna manera la actuación de ambos procesos de orma que no se produzcan intererencias entre ellos# )ara ara e"it e"itar ar este ste tip tipo de err errores ores se pued pueden en identicar aquellas regiones de los procesos que acceden a "ariables compartidas y dotarlas de la posibilidad de ejecución como si ueran una nica instrucción# urge entonces el concepto de re(ión cr)tica# igo de un Re(ió e(ión n *r)t *r)tic ica: a: .s la zona de código proceso concurrente donde se utiliza un recurso comp compar arti tido do## 6a e-cl e-clus usió ión n mutu mutua a se cons consig igue ue impidiendo que dos o m!s procesos concurrentes ejec ejecut uten en a la "ez "ez su regi región ón crt crtic ica# a# Una Una regi región ón crt crtica ica solo solo pued puede e ser ejecu ejecuta tada da por por un nic nico o proceso eso concurrent ente sig siguien iendo una nica ica secuencia de interoliación# i algn otro proceso desea ejecutar su región crtica, deber! esperar a que aquel que actualmente ejecuta la suya termine y lo ind indiqu ique# e necesi esita por tanto alg lgn mecanismo $ protocolos protocolos software' que indique a los procesos cuando uno de ellos entra o sale de la región crtica10# .sto se consigue con dos protocolos de sotHare, uno de entrada y otro de salida $locI o sem!oro bina binario rio'' que que todo todo proc proceso eso debe debe orz orzos osam ament ente e ejecuta ejecutarr antes antes y despu8 despu8ss de ejecuta ejecutarr su región región crt crtic ica, a, y que que cons consti titu tuye yen n un meca mecani nism smo o de seguri seguridad dad $bloqueo' que que adem adem!s !s sobr sobrec ecar arga ga la ejecución# )or ejemplo/ Task body P is Begin Loop Resto_de código; Pre_Protocolo; Región Crítica; Post-Protocolo; End Loop; End P. Candado o semáforo binario prodce !a e"c!sión mta
qe
.l )reJ) )reJ)ro roto toco colo lo y )ostJ ostJ)r )roto otoco colo lo utili utiliza zan n una una "ariable comn11 a todos los procesos concurrentes la cual controla el acceso a la Fegión Crtic Crtica# a# .l )reJ) )reJ)ro rotoc tocolo olo o )roto )rotocol colo o de .ntrad .ntrada a consultar! consultar! el "alor de esa "ariable "ariable y en unción de dic5o "alor dejar! entrar o bloquear! al proceso que desea entrar en su región crtica# .l )ostJ)rotocolo o )rotocolo de alida modicar! el "alo "alorr de la "aria "ariabl ble e com comn n para para indi indica carr que que el
recurso ya esta libre# 6a "ariable comn se utiliza como como cauce cauce de comun comunica icación ción entre entre los distint distintos os proc proceso esos, s, con con el objet objeto o de acce accede derr 8sto 8stoss a sus sus regiones crticas con +cierto orden# 1.5. LA SINCRONIZACIÓN SINCRONIZACIÓN
upongamos que tenemos dos procesos concurrentes ocupados uno de ellos en llenar un buKer circular de datos y el otro en "aciarlo# )uesto que el primer proceso no puede poner m!s datos en el buKer si est! lleno, y el segundo no puede toma tomarr dato datoss del del buKe buKerr cuan cuando do est! est! "ac "aco, o, es nece necesa sari rio o sinc sincrroniz onizar ar la ejec ejecuc ució ión n de ambo amboss proces ocesos os en un unción ción del del esta estad do del buKe buKer, r, consiguiendo/ 1# Lue el proceso productor se bloquee cuando el buKer esta lleno 2# Lue el proceso consumidor se bloquee cuando el buKer esta "aco 3# que el productor desbloquee al consumidor 4# que el consumidor desbloquee al productor .-isten .-isten di"ersos di"ersos mecanismos mecanismos sotHare sotHare utilizados utilizados para conseguir la sincronización, uno de ellos es el candado $locI' o sem!oro binario, ya comentado en el apartado de la e-clusión mutua, otro de ellos son las "ariables de condición $monitores' que son "ariables comunes a los procesos concurrentes que comparten comparten recursos, recursos, donde donde dependiendo dependiendo del "alor de la "aria ariabl ble e de con condici dición ón se produ oduce una sinc sincrroniz onizac ació ión n del del tipo tipo Hait Hait=n =not oti iy, y, espe espera ra== noti notic cac ació ión, n, de mane manera ra que que los los proc proces esos os se comunican y sincronizan al acceder a sus recursos compar compartido tidoss median mediante te mensaje mensajess que indica indican n el bloq bloque ueo o o desb desblo loqu queo eo de uno uno a otr otro u otr otros procesos "a la "ariable de condición#
2#2# P!"# I$%#$%&: ALTERNANCIA
II. ALGORITMO DE DEKKER Y PETERSON 6a solución al problema de la e-clusión mutua se atribuye al matem!tico 5oland8s A# eIIer y ue presentada por ijIstra en 1>9M# e utiliza al igual que que en otr otro algo algori ritm tmo o llam llamad ado o *lgo *lgori ritm tmo o de )eter eterso son, n, una una "ari "ariab able le tur turno que que sir" sir"e e para para establecer la prioridad relati"a de los dos procesos, es decir, en caso de conNicto 8sta "ariable ser"ir! para saber, a quien se le concede el recurso y su actualización se realiza en la región crtica, lo que e"ita e"ita que pueda pueda 5aber 5aber inter interere erenci ncias as entre entre los procesos# .-plic plicar arem emos os la utili tilid dad mediante un problema/
de
este este
algo algori ritm tmo o
2.1 EL PROBLEMA DE LOS ESQUIMALES
Dnte Dntent ntar arem emos os una una mane manera ra de impl implem emen enta tarr el bloqueo a una región crtica mediante el uso de una "ariable compartida en el problema denominado +de los esquimales# Dremos renando el algoritmo de manera que cada "ersión de dic5o rena renamien miento to presen presente te el tipo tipo de probl problema emass que suele surgir en la implementación de la concurr concurrencia encia entre procesos# procesos# .l problema problema de los esqu esquim imal ales es most mostra rar! r! el uso uso de las las "ari "ariab able less compartidas para implementar la e-clusión mutua entre dos procesos# 6a ejec ejecuc ució ión n conc concur urrrente ente de los los proc proces esos os la indicaremos mediante la estructura cobegin:coend# 6a pala palabr bra a cobe cobegi gin n indi indica ca el comi comien enzo zo de la ejec ejecuc ución ión conc concur urre rent nte e de los proc proceso esoss que que se se;a se;alan lan 5ast 5asta a la palab palabra ra coen coend# d# 6a acci acción ón de bloqueo se realiza con la acti"ación de la "ariable com comn n $ind $indic icad ador or'' y la de desb desblo loqu queo eo con con su desacti"ación#
Dmaginemos 2 esquimales y un agujero para pescar como recurso compartido# .-iste un igl con un piza pizarr rrón ón## olo olo uno uno de los los esqu esquim imal ales es pued puede e acceder a la "ez al pizarrón a la "ez# Cuando uno de los esquimales quiere acceder al agujero para pesc pescar ar debe debe cons consul ulta tarr si tien tiene e perm permis iso o para para 5acerlo en el pizarrón, si en el pizarrón se indica que el permiso lo tiene el otro esquimal espera un tiempo y lo "uel"e a probar de nue"o m!s tarde# i en el pizarrón se indica que tiene permiso, ir! a pescar# Una "ez que termine con el agujero, ir! al pizarrón y ceder! el permiso al otro esquimal# e manera m!s ormal la codicación del algoritmo es/ PROGRAM PrimerIntento; #$R trno %&..'(; PR)CE*+RE P&; BE,- REPE$T WHILE turno turno ! "O ; #$ %asea $& $& $$$$$$ usa agu'ero (e %esca $$$$$$ turno ) !; otras cosas /)RE#ER E*; PR)CE*+RE P'; BE,- REPE$T WHILE turno turno * "O ; #$ %asea $& $& $$$$$$ usa agu'ero (e %esca $$$$$$ turno ) *; otras cosas /)RE#ER E*; BE,- trno 01 & C)BE,+- P&; P' C)E* E*
.l incon"eniente de este algoritmo es la alternancia obligada en el uso del recurso, si uno de los proc proceso esoss es canc cancela elado do mien mientr tras as usa usa el recurso nunca podr! ceder su uso de nue"o#
2.3. S#'($)& I$%#$%&: *ALT ALTA DE EXCLUSION
iguiendo con el paradigma anterior, 5aremos uso de dos igles con su correspondiente pizarrón# 6os pizarr pizarrone oness tienen tienen dos indica indicador dores, es, pescan pescando do o EOpesca scando, cada uno de los piza izarrones corre correspo sponde nden n a cada cada uno de los esquim esquimales ales## i quer querem emos os 5ace 5acerr uso uso del del aguj agujer ero o para para pesc pescar ar debe deberremos emos cons consul ulta tarr en el piza pizarr rrón ón del del otr otro esquimal, si indica que est! pescando saldremos y esperaremos para "ol"erlo a intentar m!s tarde# i en el pizarrón pone EOpescando iremos a nuestro piza izarrón y pondremos pesca scando# Cuando terminemos de usar el agujero de pescar iremos a nuestr nuestro o pizarr pizarrón ón y pondr pondremos emos EOpesca EOpescando ndo## e maner anera a m!s or ormal mal podr odram amos os cod codic icar el algoritmo como/ PROGRAM +egun(oIntento; #$R pi2arra&3 pi2arra'0 )pescando5; PR)CE*+RE P&; BE,- REPE$T 67-L 67-LE E pi2a pi2arr rra' a' 1 pesc pescan ando do pasea 85 pi2arra& 01 pescando; 888 sa ag9ero de pesca 888 pi2arra& 01 )pescando; otras cosas /)RE#ER E*; PR)CE*+RE P'; BE,- REPE$T 67-L 67-LE E pi2a pi2arr rra& a& 1 pesc pescan ando do pasea 85 pi2arra' 01 pescando; 888 sa ag9ero de pesca 888 pi2arra' 01 )pescando; otras cosas /)RE#ER E*;
4pescando
*); *);
*); *);
48
48
BE,- pi2arra& 01 )pescando; pi2arra' 01 )pescando; C)BE,- P&; P' C)E* E*.
.ste .ste algorit algoritmo mo puede puede generar generar alta alta de e-clu e-clusión sión mutua si los dos procesos tienen libre el recurso, a la "ez consultan el estado de los oponentes y al comprobar que est! libre los dos indican estado de uso del recurso y lo usan#
2.4. T#+# I$%#$%&: INTERBLOQUEO ,E-#/ I$0$!%/
*5ora actuaremos a la in"ersa para tratar de e"itar la alta alta de e-clu e-clusión sión mutua, mutua, cuand cuando o un proce proceso so quiera utilizar el recurso, primero indica que quiere 5acerlo y luego espera a que est8 libre# e manera m!s ormal podramos codicar el algoritmo como/ PR),R$: Tercer-ntento; #$R pi2arra&3 pi2arra'0 )pescando5;
4pescando
PR)CE*+RE P&; BE,- REPE$T pi2arra& 01 pescando; 67-L 67-LE E pi2a pi2arr rra' a' 1 pesc pescan ando do *); *); pasea 85 888 sa e! ag9ero de pesca 888 pi2arra& 01 )pescando; otras cosas /)RE#ER E*; PR)CE*+RE P'; BE,- REPE$T pi2arra' 01 pescando; 67-L 67-LE E pi2a pi2arr rra& a& 1 pesc pescan ando do *); *); pasea 85 888 sa e! ag9ero de pesca 888 pi2arra' 01 )pescando; otras cosas /)RE#ER E*;
48
48
BE,- pi2arra& 01 )pescando; pi2arra' 01 )pescando; C)BE,- P&; P' C)E* E*.
.n el caso que los dos esquimales est8n sin pescar $EOp $EOpesc escan ando do'' y los dos dos prete pretend ndan an acce accede derr al agujero al mismo instante, los dos acti"ar!n en su piza izarrón el estado de int intenc ención de pesc escar $pescando', al ir a consultar la pizarra del oponente comprobar!n que est! pescando $o en intención de 5acerlo rlo', en este caso ninguno de los dos esqui esquima males les podr podr! ! acce accede derr al recu recurso rso ni podr podr! ! cambiar su estado# @emos llegado a un estado de e-clusión mutua $los dos procesos quieren acceder al mism mismo o recur ecurso so,, per pero para para que que este este les les sea sea conced concedido ido los dos proce procesos sos deben deben realiz realizar ar una acción que depende mutuamente de la acción del oponente para poderse realizar'#
2.5. C(/%& I$%#$%&: ESPERA IN*INITA
2#9 Q(!$%& I$%#$%&: ALGORITMO DE DEKKER
)ara solucionar el problema anterior a;adiremos el trato de cortesa, si un proceso "e que su oponente quiere 5acer uso del recurso, se lo cede# e manera m!s ormal podramos codicar el algoritmo como/
e manera ormal la codicación del algoritmo es/
#$R pi2arra&3 )pescando5;
pi2arra'0
PROGRAMA Algoritmo"e"e,,er; #$R pi2arra&3 pi2arra&0 )pescando5; Trno0%&..'(;
4pescando3
4pescando3
PR)CE*+RE P&; BE,- REPE$T pi2arra& 01 pescando; 67-LE pi2arra' 1 pescando *) BE,- 48 tratamiento de cortesa 85 pi2arra& 01 )pescando; 48 date na <e!ta 85 pi2arra& 01 pescando E*; 888 sa e! ag9ero de pesca 888 pi2arra& 01 )pescando; otras cosas /)RE#ER E*; PR)CE*+RE P'; BE,- REPE$T pi2arra' 01 pescando; 67-LE pi2arra& 1 pescando *) BE,- 48 tratamiento de cortesa 85 pi2arra' 01 )pescando; 48 date na <e!ta 85 pi2arra' 01 pescando E*; 888 sa e! ag9ero de pesca 888 pi2arra' 01 )pescando; otras cosas /)RE#ER E*; BE,- pi2arra& 01 )pescando; pi2arra' 01 )pescando; C)BE,- P&; P' C)E* E*.
.ste tratamiento de cortesa puede conducir a que los los proc proceso esoss se quede queden n de mane manera ra inde inden nid ida a cedi8ndose mutuamente el paso# .sta solución no asegura que se acceda al recurso en un tiempo nito#
PR)CE*+RE P&; BE,- REPE$T pi2arra& 01 pescando 67-LE pi2arra' 1 pescando *) -/ trno 1 ' T7E BE,- 48 tratamiento de cortesa 85 pi2arra& 01 )pescando; 67-LE tr trno 1 ' *); 48 date <e!ta 85 pi2arra& 01 pescando E* 888 sa e! ag9ero de pesca 888 trno 01 '; pi2arra& 01 )pescando; otras cosas /)RE#ER E*;
na
PR)CE*+RE P'; BE,- REPE$T pi2arra' 01 pescando 67-LE pi2arra& 1 pescando *) -/ trno 1 & T7E BE,- 48 tratamiento de cortesa 85 pi2arra' 01 )pescando; 67-LE tr trno 1 & *); 48 date <e!ta 85 Pi2arra' 01 pescando E* 888 sa e! ag9ero de pesca 888 trno 01 &; pi2arra' 01 )pescando; otras cosas /)RE#ER E*;
na
BE,- pi2arra& 01 )pescando; pi2arra' 01 )pescando; trno 01 &; C)BE,- P&; P' C)E* E*.
Este algoritmo asegura la exclusión mutua y está libre de interbloqueos.
Actividad Actividad Encargada: Encargada: Plan Plante tear ar una una solu soluci ción ón al mode modelo lo del audi audito torr banq banquer uero o (Ve (Ver Mode Modelo lo en la práctica realizada en el laboratorio utilizando el algoritmo de !e""er y Peterson.