algoritmos paralelos

Páginas: 5 (1052 palabras) Publicado: 24 de agosto de 2014
1. Objetivos:


2. Fundamento teórico

3. Procedimiento y desarrollo

Algoritmo de Dekker
program DEKKER;
var pizarra1,pizarra2:boolean;
turno,i,j,h: integer;
process P1;
begin
for i:=1 to 25 do
begin
pizarra1:=true;
while pizarra2=true do
begin
if turno=2 then
begin
pizarra1:=true;(*TRATAMIENTO DE CORTESIA*)
while turno=2 donull;(*DATE UNA VUELTA*)
pizarra1:=true;
end;
end;
writeln(*seccion critica 1*);
turno:=2;
pizarra1:=false;
j:=j+1;
end;
end;
process P2;
begin
for i:=1 to 25 do
begin
pizarra2:=false;
while pizarra1=true do
begin
if turno=1 then
begin
pizarra2:=false;(*CORTESIA*)
while turno=1 do
null;(*DATE UNA VUELTA*)
pizarra2:=true;end;
end;
writeln(*SECCION CRITICA 2*);
turno :=1;
pizarra2:=false;
h:=h+1;
end;
end;
begin
j:=0;
h:=0;
turno:=2;
pizarra1:=true;
pizarra2:=false;
cobegin
P1;
P2;
coend;
writeln('LA SECCION CRITICA 1 SE REPITE ',j);
writeln('LA SECCION CRITICA 2 SE REPITE ',h);
end.


Algoritmo de Peterson
program peterson;
var turno:integer;
vari,j,h:integer;
pizarra1,pizarra2:boolean;
process P1;
begin
for i:=1 to 25 do
begin
pizarra1:=true;(*AUNUNCIA EL INTENTO DE ENTRAR*)
turno:=2;(*LE DA PRIORIDAD AL OTRO PROCESO*)
while pizarra2 and (turno = 2) do
null;
writeln('SECCION CRITICA 1');
j:=j+1;
pizarra1:=false;
end;

end;

process P2;
begin
for i:=1 to 25 do
beginpizarra2:=true;(*ANUNCIA EL INTENTO DE ENTRAR*)
turno:=1;(*LE DA PRIORIDAD AL OTRO PROCESO*)
while pizarra1 and (turno =1) do
null;
writeln('SECCION CRITICA 2');
h:=h+1;
pizarra2:=false;
end;

end;
begin
turno:=1;
j:=0;
h:=0;
pizarra1:=false;
pizarra2:=false;

cobegin
P1;
P2;
coend;
writeln('LA SECCION CRITICA 1 SE REPITE ',j);
writeln('LA SECCIONCRITICA 2 SE REPITE ',h);
end.
c) realice un programa concurrente con uso de sincronización o variable compartida (algoritmo de Dekker y Peterson), que simule la actividad de un banco, en la cual las dos operaciones son realizadas por procesos diferentes de manera concurrente. Supóngase que el proceso se repite infinitamente. El programa concurrente se debe realizar en pascal FC

EL BANCOSupongamos un banco que tiene 20 cuentas, numeradas del 1 al 20, y cada cuenta tiene, inicialmente, S/.100 de saldo. Por lo tanto el banco tiene S/. 2 000. El banco realiza dos operaciones:
i. Contabiliza los saldos de todas las cuentas (cada minuto)
ii. Traspasos de una cuenta a otra (cuentas elegidas aleatoriamente y el saldo aleatorio entre 0 y 10).
d) Del problema anterior, comente como plantearesolver el problema, que variable usara y que significa cada una de ellas; copie el código fuente y las capturas de las salidas ambos programas e interprete sus resultados.
program BANQUITO;
const NCTAS=20;
var Cuenta:array[1..NCTAS] of integer;
i: integer;
fin,v1,v2 : boolean;

process Contarcuentas;
begin
while fin=false do
begin
sleep(1);
while v1 do
begin
null;end;
v2 := true;

v2 := false;

end;

end;

process Operacion;
var c1, c2,Total ,ci,cant: Integer;
begin
while fin=false do
begin
while v2 do
begin
null;
end;
(* v1 := true; *)

c1:=RANDOM(NCTAS-1)+1;
c2:=RANDOM(NCTAS-1)+1;
Writeln('Cuentas Aleatorias ',c1,' y ',c2);
cant:=0;
if(Cuenta[c1]>10) then cant:=RANDOM(10);Cuenta[c1]:=Cuenta[c1] - cant;
Writeln('Nuevo Monto para Cuenta ',c1,' es:',Cuenta[c1]);
Cuenta[c2]:=Cuenta[c2] + cant;
Writeln('Nuevo Monto para Cuenta ',c2,' es:',Cuenta[c2]);

for ci:=1 to NCTAS do
Total:=2000-(Cuenta[c1]+cuenta[c2]);
Writeln('Total del Banco:',Total);
(* v1 := false; *);

end;
end;

begin
(*INICIAMOS LOS MONTOS DE 100 SOLES PARA CADA CUENTA*)
For...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Algoritmos paralelos(ejemplos)
  • DISEÑO DE ALGORITMO PARALELOS
  • Algoritmos paralelos
  • Multiplicación de Matrices Algoritmos Paralelos
  • Algoritmos geneticos paralelos
  • ALGORITMOS GEN TICOS PARALELOS Y 1
  • Paralelas
  • Paralelo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS