El documento describe dos algoritmos: (1) El algoritmo de Peterson que resuelve el problema de los esquimales usando variables turno y pizarra para coordinar el acceso a un recurso compartido. (2) El algoritmo de Lamport que modela una panadería usando boletos, elecciones y procesos para simular la atención de clientes de forma concurrente y ordenada.
Eficiencia en uso en algoritmos- tiempo de ejecuciónUVM
Explorando los elementos que nos sirven para medir la eficiencia de un código - algoritmo. Conocer el tiempo que tarda en ejecutarse.
Código muestra en C++
Eficiencia en uso en algoritmos- tiempo de ejecuciónUVM
Explorando los elementos que nos sirven para medir la eficiencia de un código - algoritmo. Conocer el tiempo que tarda en ejecutarse.
Código muestra en C++
Se denomina motor de corriente alterna a aquellos motores eléctricos que funcionan con alimentación eléctrica en corriente alterna. Un motor es una máquina motriz, esto es, un aparato que convierte una forma determinada de energía en energía mecánica de rotación o par.
1. ALGORITMOS DE PETERSON Y LAMPORT
Nombre: Franz Chanini Mena 2018-119024
1.Algoritmo de Peterson: Problema de los esquimales
Desarrollar dos archivosdealgoritmo de Peterson tomando como referencia el problema de los esquimales,
trabando con dos procesos P1 y P2, donde:
- El primero contara solo con la variable turno, con valores: 1 y 2
- El segundo contara con la variable pizarra/bandera, con valores: True y False
Para los ejercicios debe de mostrar mensajes como:
- Esquimal 1 Pescando...
- ESQUIMAL 2 PESCANDO...
a.- El primero contara solo con la variable turno, con valores: 1 y 2
program peterson;
var
turno:integer;
process p1;
begin
repeat
turno:=2;
writeln('esquimal 1 pescando...');
forever
end;
process p2;
begin
repeat
turno:=1;
writeln('ESQUIMAL 2 PESCANDO...');
forever
end;
begin
turno:=2;
cobegin
p1;
p2;
coend;
end.
2. b.-El segundo contara con la variable pizarra/bandera, con valores: True y False
program peterson;
var
S1, S2:boolean;
process p1;
begin
repeat
S1:=true;
writeln('esquimal 1 pescando....');
S1:=false;
forever
end;
process p2;
begin
repeat
S2:=true;
writeln('ESQUIMAL 2 PESCANDo....');
S2:=false;
4. 2.Acerca de algoritmo de Lamport
Desarrollar un algoritmo basado en ejemplo de panadería, empleando las siguientes variables:
boleto:array[1..nprocs]of integer;// vector que lista de numeros que recibe cada cliente
eleccion:array[1..nprocs] of boolean;// vector de lista de estadoelegido encada atencion
lp:integer; // índice de las boletas
nolineas:integer; // sumatoria de los numero de lineas
program LAMPORT;
const
nprocs = 5;
var
boleto: array[1..nprocs] of integer;
eleccion: array[1..nprocs] of boolean;
lp: integer;
nolineas: integer;
process type Entrada(esteproc: integer);
var
otroproc, lp: integer;
function max: integer;
var
i, largo: integer;
begin
largo := 0;
for i := 1 to nprocs do
if boleto[i] > largo then
largo := boleto[i];
max := largo + 1
end; (* max *)
function favorecido(i, j: integer): boolean;
begin
if (boleto[i] = 0) or (boleto[i] > boleto[j]) then
favorecido := false
else
if boleto[i] < boleto[j] then
favorecido := true
else
favorecido := (i < j)
end;
begin
for lp := 1 to 20 do
begin
eleccion[esteproc] := true;
boleto[esteproc] := max;
eleccion[esteproc] := false;
for otroproc := 1 to nprocs do
begin
while eleccion[otroproc] do
null;
while favorecido(otroproc, esteproc) do
null;
end;
writeln('USUARIO ',esteproc,' CON TICKET ',lp);
writeln('USUARIO ',esteproc,' YA FUE ATENDIDO...!');
nolineas := nolineas + 1;
boleto[esteproc] := 0
end
5. end;
var
turnos: array[1..nprocs] of Entrada;
begin
nolineas := 0;
for lp := 1 to nprocs do
begin
boleto[lp] := 0;
eleccion[lp] := false;
end;
cobegin
for lp := 1 to nprocs do
turnos[lp](lp)
coend;
writeln('Total de Líneas: ',nolineas:4)
end.