Autor: David Aparco Cárdenas Revisor: M.Sc. Alonso Tenorio TrigosoDescripción completa
Descripción completa
Descripción completa
Descripción: practica 9
practica fisicoquimicaDescripción completa
Descripción completa
MultifrecuenciaDescripción completa
Practica relacionada a electricidad y magnetismoDescripción completa
Descripción: Biología
Descripción: informe de laboratorio9
Descripción: etica y deontologia
informe de practica de laboratorio
Microscopia de opacos
ALGORITMOS PARALELOS Clase Teorica Algoritmo de Dekker y Peterson univer
Algoritmos Paralelos Practica 05 - Dekker Caso Banquero Sincronizaion Peterson-exclusion Mutua Decker recuperado de univerDescripción completa
vvv
Full description
Descripción completa
algoritmos
PRACTICA 09 DE EXCLUSIÓN MUTUA
Definición del Problema Exclusión Mutua. Necesidad de asegurar que un único proceso acceda a un conjunto de i nstrucciones que acceden un recurso compartido. Este conjunto de instruccio nes se denominará Sección Crítica.
¿ En que consiste el problema? Si dos dos procesos P1 y P2 utilizan una varia ble compar tida X, si ambos desean realizar alguna actualización de ésta en alguna parte de su código, tendríamos: Process P1 Process P2 ... ...
X := X+1
Sección Crítica
X:=X+1
... ... Si ambos ejecuta n esa instrucción a la vez, podría oc urrir el escenario:
Solución general Sección – Sección – Crítica Características • Asegurar la Exclusión Mutua • Permitir que losprocesos accedan al recurso cuando este libre • Asegurar que procesos fuera de la sección críticaimpidan el acceso de otros • Preservarque todos los procesos hagan uso del recurso e n un tiempo limitado • No hacersuposiciones de tiempo • Tenerpresente el indeterminismo
Problemas asociados • Falta de Exclusión • Interbloqueo (deadlock). Acceden a la SC pero ninguno progresa • Espera indefinida (livelock). Ninguno Accede a al SC • Postergación indefinida (starvation/liveness/fairness)
PRESENTAR PARA EL INFORME: Aplicando al caso de estudio del auditor banquero
Implementar intentos de exclusión mutua c on variables compartidas siguientes:
Primer intento: alternancia
Segundo intento: falta de exclusión
Tercer intento: interbloqueo
Cuarto intento: espera indefinida
Implementar los algoritmos con variables compartidas siguientes:
Dekker, Peterson, Lamport, Dijkstra
ALGORITMO DE DEKKER PROGRAM Dekker; (* Sol ución para 2 pr ocesos al problema de la exclusión mutua *) VAR turno: integer; p1quiere, p 2quiere : boolean; PROCESS P1; BEGIN ... p1quiere := true; WHILE p2quiere DO BEGIN p1quiere := false; WHILE turno = 2 DO null; p1quiere := true END; turn o := 2; p1quiere := false ... END; (* P1 *)
PROCESS P 2; BEGIN ... p2quiere := true ; WHILE p1quiere DO BEGIN p2quiere := false; WHILE turno = 1 DO null; p2quiere := true END; turno := 1; p2quiere := false ... END; (* P2 *)
BEGIN turno := 1; p1quiere:=false; p2quiere:=false; COBEGIN P1;P2 COEND; END.
ALGORITMO DE PERTERSON PROGRAM Peterson; (* solucón para dosprocesos a l problemade la exc lusión mutua *) VAR turn o : integer; band1, band2: boolean; PROCESS P1 ; BEGIN ... (* anuncia el intento de entrar *) band1:= true; (* le da prioridad a lotro proceso *) turno:= 2; while band2 and (turno = 2) do null; band1:= false ... END; BEGIN turno := 1; band1 := false; band2 := false; COBEGIN P1; P2 COEND; END.
PROCESS P 2; BEGIN ... (* anuncia el intento de en trar *) band2:= true ; turno:= 1; (* le da prioridad al otro proces o *) while band1 and (turno = 1) do null; band2:= false ... END;
ALGORITMO DE LAMPORT (I) PROGRAM Lamport; (* Alg oritmo para Exclusión Mutua n procesos *) CONST nprocs = 5; VAR boleto: ARRAY[1..nprocs] of INTE GER; eleccion: ARRAY[1..nprocs] of BOOLEAN; lp: INTEGER; PROCESS TYPE Proc(esteproc: INT EGER); VAR Idea otroproc: INT EGER; Cada proceso obtie neun número FUNCTION max: INTEGER; Necesidad VAR Ordenación de los procesos i, largo: INTEGER ; BEGIN Criter io de E lección largo := 0; Sean Pi e Pj con nºs A y B. FORi := 1 TO nprocs DO Si A < B à Pi IF boleto[i] > largo THEN Si A > B à Pj largo := boleto[i]; Si A=B; Si i boleto[j]) THEN favorec ido := false ELSE IF boleto[i] < boleto[j] THEN favoreci do := true ELSE favoreci do := (i < j) END; (* fav orecido *)
ALGORITMO DE LAMPORT (II) (* Continua ción de la d eclaració n del proceso *) BEGIN ... eleccion [esteproc] := true; bolet o[esteproc] := max; eleccion [esteproc] := false; FOR otroproc := 1 TO nprocs DO BEGIN WHILE eleccion[otroproc] DO null; WHILE favo reci do(otroproc , esteproc) DO nu ll; END; ; bolet o[esteproc] := 0 ... END; (* Proc*) VAR p: ARRAY[1..nprocs] OF Proc; BEGIN FOR lp := 1 TO nproc s DO BEGIN boleto[lp] := 0; eleccion [lp] := false; END; COBEGIN FOR lp := 1 TO nprocs DO p[lp](lp) COEND; END.
ALGORITMO DE DIJKSTRA PROGRAM Dijkstra; (* Algoritmo para la excl usión mutua n procesos *) CONST nprocs=3; VAR b, c: ARRAY[0..nprocs] of BOOLEAN; turno: INTEGER ; i, : INTEGER ; PROCEDURE lock (pnum: INTEGER) ; VAR ok: BOOLEAN; j: I NTEGER; BEGIN b[pnum] := false ; REPEAT WHILE turno <> pnum DO BEGIN c[pnum]:= true; IF b[ turno] THEN turno := pnum END; (* wh ile *) c[pnum] := false ; ok := true; FOR j := 0 TO nprocs DO IF j <> pnum THEN ok := ok and c[j] UNTIL ok END; (* lock *) PROCEDURE unl ock(pnum: INTEGER); BEGIN c[pnum] := tr ue; b[pnum] := tr ue; turno := 0 END; (* unlock *)
PROCESS TYPE t(n:INTEGER); BEGIN ... lock( n); ; unlock(n) ... END; (* t *) VAR p: ARRAY[0..nprocs] OF t; BEGIN FOR turno := 0 TO nprocs DO BEGIN b[turno] := true; c[turno] := true END; turno := 0; COBEGIN FOR i := 0 TO nprocs DO p[i](i) COEND; END.