You are on page 1of 5

program Dekker;

var
pizarra1, pizarra2: boolean;
turno: integer;
process P1;
begin
repeat
pizarra1:=true;
while pizarra2 do
begin
if turno=2 then
begin
pizarra1:=false;
while turno=2 do
null;
pizarra1:=true;
end;
end;
writeln('seccioncritica1');
turno:=2;
pizarra1:=false;
forever
end;
process P2;
begin
repeat
pizarra2:=true;
while pizarra1=true do
begin
if turno=1 then
begin
pizarra2:=false;
while turno=1 do
null;
pizarra2:=true;
end;
end;
writeln('seccioncritica2');
turno:=1;
pizarra2:=false;
forever
end;
begin

end.

pizarra1:=true;
pizarra2:=false;
turno:=2;
cobegin
P1;P2;
coend;

program Peterson;
var
turno: integer;
pizarra1,pizarra2: boolean;
process P1;
begin
repeat
pizarra1:=true;
turno:=2;
while pizarra2 and (turno=2) do
null;
writeln('seccioncritica1');
pizarra1:=false
forever
end;
process P2;
begin

end;

repeat
pizarra2:=true;
turno:=1;
while pizarra1 and (turno=1) do
null;
writeln('seccioncritica2');
pizarra2:=false
forever

begin
turno:=1;
pizarra1:=false;
pizarra2:=false;
cobegin
P1;P2;
coend;
end.

program Modificacion;
var
pizarra1,pizarra2: boolean;
turno,i: integer;
process P1;
begin

end;
process P2;
begin

for i:=1 to 25 do
pizarra1:=true;
while pizarra2 do
begin
if turno=2 then
begin
pizarra1:=false;
while turno=2 do
null;
pizarra1:=true;
end;
end;
writeln('seccioncritica1');
turno:=2;
pizarra1:=false;

for i:=1 to 25 do
pizarra2:=true;
while pizarra1=true do
begin
if turno=1 then
begin
pizarra2:=false;
while turno=1 do
null;
pizarra2:=true;
end;
end;
writeln('seccioncritica2');
turno:=1;
pizarra2:=false;

end;
begin

end.

pizarra1:=true;
pizarra2:=false;
turno:=2;
cobegin
P1;P2;
coend;

program Modificacion2;
var
turno,i: integer;
pizarra1,pizarra2: boolean;
process P1;
begin

end;

for i:=1 to 25 do
pizarra1:=true;
turno:=2;
while pizarra2 and (turno=2) do
null;
writeln('seccioncritica1');
pizarra1:=false

process P2;
begin

end;

for i:=1 to 25 do
pizarra2:=true;
turno:=1;
while pizarra1 and (turno=1) do
null;
writeln('seccioncritica2');
pizarra2:=false

begin
turno:=1;
pizarra1:=false;
pizarra2:=false;
cobegin
P1;P2;
coend;
end.

program Bancos;
const n=20;
var cuenta: array[1..n] of integer; (*Almacena saldos*)
i: integer;
process contarcuentas;
var i,suma: integer;
begin
repeat
suma:=0; (*acumulador*)
for i:=1 to n do
suma:=suma+cuenta[i];
writeln('Suma :',suma);
forever
end;
process traspaso;
var c1,c2,con: integer;
begin
repeat
c1:=random(n-1)+1; (*Inicio*)
c2:=random(n-1)+1; (*Salida*)
con:=0;
if(cuenta[i]>10) then con:=random(5);
cuenta[c1]:=cuenta[i]-con;
cuenta[c2]:=cuenta[i]+con;
forever
end;
begin
for i:=1 to n do cuenta[i]:=20;
cobegin
contarcuentas;traspaso;
coend
end.

You might also like