Вы находитесь на странице: 1из 9

Prctica 08: Ejercicio01 Programacin concurrente donde se crea dos procedimientos, que compara el mayor de dos nmeros, y donde

se define relacin de precedencia de cuatro Instrucciones.


(*Programa secuencial que muestra el orden de ejecucin de 4 Instrucciones *) program maxmincon; process type min(var min,n1,n2:real); begin if n1<n2 then min:=n1 else min:=n2; end; process type max(var max,n1,n2:real); begin if n1>n2 then max:=n1 else max:=n2; end; var n1,n2,nmax,nmin:real; pMax:max; pMin:min; begin n1:=17; n2:=8; (*I0*) cobegin pMin(nmin,n1,n2); (*I1*) pMax(nmax,n1,n2); (*I2*) coend; writeln(nmax,nmin) (*I3*) end.

Se Pide: a) Edita, Compila y Ejecuta el Programa b) Analiza y comenta los resultados c) Modifique el programa secuencial de modo que se ingrese los dos nmeros desde el teclado. Luego compile y ejecute el programa.

Ejercicio 02: Programacin concurrente en Pascal-FC. Implementacin de programas de sincronizacin condicional con espera activa. Implementar un programa concurrente en PascalFC que tenga los siguientes requisitos: El programa consta de 2 procesos. Cada proceso escribe por pantalla varias letras y termina. El proceso 1 debe escribir la letra PA1 y la letra PA2. El proceso 2 debe escribir la letra PB1 y la letra PB2. Los procesos deben sincronizarse para que se cumplan las siguientes relaciones de precedencia:

La sincronizacin condicional se deber implementar con espera activa. Algunas de las posibles salidas de este programa son: PA1 PA2 PB1 PB2 PA1 PB1 PA2 PB2 PB1 PA1 PA2 PB2 PB1 PA1 PB2 PA2 Algunas de las posibles salidas invlidas de este programa son: PB1 PB2 PA1 PA2 Solucin:
(*Programa secuencial que muestra el orden de ejecucin de 4 Instrucciones *)

program sinccond; process type tPA(var continuar:boolean); begin write('PA1 '); continuar := true; write('PA2 '); end; process type tPB(var continuar:boolean); begin write('PB1 '); while not continuar do ; write('PB2 ');

end;

var continuar: boolean; procA:tPA; procB:tPB; begin continuar := false; cobegin procA(continuar); procB(continuar); coend; end.

EXCLUSIN MUTUA Definicin del Problema Exclusin Mutua. Necesidad de asegurar que un nico proceso acceda a un conjunto de instrucciones que acceden un recurso compartido. Este conjunto de instrucciones se denominar Seccin Crtica. En que consiste el problema? Si dos procesos P1 y P2 utilizan una varia ble compar tida X, si ambos desean realizar alguna actualizacin de sta en alguna parte de su cdigo, tendramos: Process P1 Process P2 ... ... X := X+1 Seccin Crtica X:=X+1 ... ... Si ambos ejecuta n esa instruccin a la vez, podra oc urrir el escenario:

Solucin general <Fase denegociacin> Seccin Crtica <Fase deliberacin> Caractersticas Asegurar la Exclusin Mutua Permitir que los procesos accedan al recurso cuando este libre Asegurar que procesos fuera de la seccin crtica impidan el acceso de otros Preservar que todos los procesos hagan uso del recurso en un tiempo limitado No hacer suposiciones de tiempo

Tener presente el indeterminismo Problemas asociados Falta de Exclusin Interbloqueo (deadlock). Acceden a la SC pero ninguno progresa Espera indefinida (livelock). Ninguno Accede a al SC Postergacin indefinida (starvation/liveness/fairness)

PRESENTAR PARA EL INFORME:


Aplicando al caso de estudio del auditor banquero Implementar intentos de exclusin mutua con variables compartidas siguientes: Primer intento: alternancia Segundo intento: falta de exclusin Tercer intento: interbloqueo Cuarto intento: espera indefinida

Implementar los algoritmos con variables compartidas siguientes: Dekker, Peterson, Lamport, Dijkstra

ALGORITMO DE DEKKER PROGRAM Dekker; (* Sol ucin para 2 pr ocesos al problema de la exclusin 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; <Seccin_Crtica> turn o := 2; p1quiere := false ... END; (* P1 *) BEGIN turno := 1; p1quiere:=false; p2quiere:=false; COBEGIN P1;P2 COEND; END. PROCESS P 2; BEGIN ... p2quiere := true ; WHILE p1quiere DO BEGIN p2quiere := false; WHILE turno = 1 DO null; p2quiere := true END; <Seccin_Crtica> turno := 1; p2quiere := false ... END; (* P2 *)

ALGORITMO DE PERTERSON PROGRAM Peterson; (* solucn para dosprocesos a l problemade la exc lusin 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; <seccin_crtica> 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; <seccin_crtica> band2:= false ... END;

ALGORITMO DE LAMPORT (I) (* Alg oritmo para Exclusin Mutua n procesos *) PROGRAM Lamport; BEGIN (* Continua cin de la d eclaracin del CONST nprocs = 5; proceso *) VAR ... boleto: ARRAY[1..nprocs] of INTE GER; eleccion [esteproc] := true; eleccion: ARRAY[1..nprocs] of BOOLEAN; bolet o[esteproc] := max; lp: INTEGER; eleccion [esteproc] := false; FOR otroproc := 1 TO nprocs DO PROCESS TYPE Proc(esteproc: INT EGER); BEGIN VAR otroproc: INT EGER; WHILE eleccion[otroproc] DO null; WHILE favo reci do(otroproc , FUNCTION max: INTEGER; esteproc) DO nu ll; VAR i, largo: INTEGER ; END; Idea BEGIN <seccin_crtica>; Cada proceso obtiene uno[esteproc] := 0 largo := 0; bolet FOR i := 1 TO nprocs DO ... nmero IF boleto[i] > largo THEN END; (* Proc*) Necesidad largo := boleto[i]; VAR Ordenacin de los procesos max := lar go+ 1 p: ARRAY[1..nprocs] OF Proc; END; (* max *) Criter io de E leccin FUNCTION favorecido(i, j: INTE GER): Si A < B -> Pi BOOLEAN; BEGIN Si A > B -> Pj IF (boleto[i] = 0) or (boleto[i] > boleto[j]) Si A=B; Si i <j THEN favorec ido := false ELSE IF boleto[i] < boleto[j] THEN favorecido := true ELSE favorecido := (i < j) END; (* fav orecido *)

Sean Pi e Pj con nsBEGIN A y B. ->

FOR lp := 1 TO nproc s DO BEGIN boleto[lp] := 0; [lp] := false; Pi, sino eleccion Pj. END; COBEGIN FOR lp := 1 TO nprocs DO p[lp](lp) COEND; END.

ALGORITMO DE DIJKSTRA PROGRAM Dijkstra; (* Algoritmo para la excl usin 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); <seccin_crtica>; 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.

PETERSON

PROGRAM primerointentobanco; CONST NCTAS=20; VAR Cuenta : array[1..NCTAS] of integer; i,turno: integer; band1, band2: boolean; PROCESS Auditor; VAR ci, Total:INTEGER; BEGIN REPEAT band1:= true; (* le da prioridad a lotro proceso *) turno:= 2; while band2 and (turno = 2) do null; Total:=0; FOR ci:=1 TO NCTAS DO Total:= Total + Cuenta[ci]; Writeln('Total : ', Total); turno := 2; band1 := false; writeln('auditor'); FOREVER

END;

PROCESS banquero; VAR c1, c2, cant: Integer; 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; c1 := RANDOM(NCTAS-1)+1; (* Origen *) c2 := RANDOM(NCTAS-1)+1; (* Destino *) cant:=0; IF (Cuenta[c1]>10) THEN cant := RANDOM(10); Cuenta[c1] := Cuenta[c1] - cant ; Cuenta[c2] := Cuenta[c2] + cant ; band2:= false; write('banquero'); END; BEGIN (* Principal *) For i:= 1 TO NCTAS DO cuenta[i]:=100; turno:=1; band1 := false; band2 := false; COBEGIN writeln ('PROGRAMA BANQUERO - AUDITOR');

Auditor; Banquero; COEND END.

Вам также может понравиться

  • Unidad II Tema I Ejemplo de Un DSS en Excel
    Unidad II Tema I Ejemplo de Un DSS en Excel
    Документ5 страниц
    Unidad II Tema I Ejemplo de Un DSS en Excel
    Mario Gauna Chino
    Оценок пока нет
  • Normalidad Bio Est 2016
    Normalidad Bio Est 2016
    Документ8 страниц
    Normalidad Bio Est 2016
    Mario Gauna Chino
    Оценок пока нет
  • Trabajo 3 Marco Metodológico
    Trabajo 3 Marco Metodológico
    Документ2 страницы
    Trabajo 3 Marco Metodológico
    Mario Gauna Chino
    Оценок пока нет
  • Administracion Diego
    Administracion Diego
    Документ8 страниц
    Administracion Diego
    Mario Gauna Chino
    Оценок пока нет
  • ENCUESTApara Imprimir
    ENCUESTApara Imprimir
    Документ3 страницы
    ENCUESTApara Imprimir
    Mario Gauna Chino
    Оценок пока нет
  • FACI Matematicas PDF
    FACI Matematicas PDF
    Документ6 страниц
    FACI Matematicas PDF
    Mario Gauna Chino
    Оценок пока нет
  • Redes
    Redes
    Документ2 страницы
    Redes
    Mario Gauna Chino
    Оценок пока нет
  • Paso 1
    Paso 1
    Документ2 страницы
    Paso 1
    Mario Gauna Chino
    Оценок пока нет
  • Asistencia Estudiantes
    Asistencia Estudiantes
    Документ2 страницы
    Asistencia Estudiantes
    Mario Gauna Chino
    Оценок пока нет
  • Caso de Estudio
    Caso de Estudio
    Документ3 страницы
    Caso de Estudio
    Mario Gauna Chino
    Оценок пока нет
  • Practica 2
    Practica 2
    Документ2 страницы
    Practica 2
    Mario Gauna Chino
    Оценок пока нет
  • Ejemplo de Un Artículo Con LaTeX
    Ejemplo de Un Artículo Con LaTeX
    Документ14 страниц
    Ejemplo de Un Artículo Con LaTeX
    Mario Gauna Chino
    Оценок пока нет
  • 107 Sistema Nervioso General
    107 Sistema Nervioso General
    Документ9 страниц
    107 Sistema Nervioso General
    Mario Gauna Chino
    Оценок пока нет
  • Conjunto S 2
    Conjunto S 2
    Документ2 страницы
    Conjunto S 2
    Mario Gauna Chino
    Оценок пока нет
  • Germ I Nacion
    Germ I Nacion
    Документ2 страницы
    Germ I Nacion
    Mario Gauna Chino
    Оценок пока нет
  • Administracion
    Administracion
    Документ50 страниц
    Administracion
    Yetol Narvaez
    Оценок пока нет
  • 01 Componentes Del Cuerpo Humano
    01 Componentes Del Cuerpo Humano
    Документ4 страницы
    01 Componentes Del Cuerpo Humano
    Nena Aguilar
    Оценок пока нет
  • Artículo Científico-Ucv
    Artículo Científico-Ucv
    Документ7 страниц
    Artículo Científico-Ucv
    Mario Gauna Chino
    100% (1)
  • Cargo ESpectros
    Cargo ESpectros
    Документ2 страницы
    Cargo ESpectros
    Mario Gauna Chino
    Оценок пока нет
  • TAREA
    TAREA
    Документ1 страница
    TAREA
    Mario Gauna Chino
    Оценок пока нет
  • Instrumento para Evaluar
    Instrumento para Evaluar
    Документ3 страницы
    Instrumento para Evaluar
    Mario Gauna Chino
    Оценок пока нет
  • Muest Ra
    Muest Ra
    Документ4 страницы
    Muest Ra
    Mario Gauna Chino
    Оценок пока нет
  • Ejemplo de Un Artículo Con LaTeX
    Ejemplo de Un Artículo Con LaTeX
    Документ14 страниц
    Ejemplo de Un Artículo Con LaTeX
    Mario Gauna Chino
    Оценок пока нет
  • Hola Mundo
    Hola Mundo
    Документ2 страницы
    Hola Mundo
    Mario Gauna Chino
    Оценок пока нет
  • 67 Funciones de Excel Muy Bien Explicadas
    67 Funciones de Excel Muy Bien Explicadas
    Документ78 страниц
    67 Funciones de Excel Muy Bien Explicadas
    Otniel Moises Jones Lopez
    Оценок пока нет
  • Lista de Datos
    Lista de Datos
    Документ4 страницы
    Lista de Datos
    Mario Gauna Chino
    Оценок пока нет
  • Gin Kana
    Gin Kana
    Документ3 страницы
    Gin Kana
    Mario Gauna Chino
    Оценок пока нет
  • Nuevo Archivo
    Nuevo Archivo
    Документ3 страницы
    Nuevo Archivo
    Mario Gauna Chino
    Оценок пока нет
  • Practica No. 3 Tablas Dinamicas
    Practica No. 3 Tablas Dinamicas
    Документ10 страниц
    Practica No. 3 Tablas Dinamicas
    andreskwao
    Оценок пока нет
  • Practica 2 Elaboracion de Soluciones
    Practica 2 Elaboracion de Soluciones
    Документ252 страницы
    Practica 2 Elaboracion de Soluciones
    Mario Gauna Chino
    Оценок пока нет