Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE INGENIERA EN INFORMTICA Y SISTEMAS
PRACTICA N06:LECTORES-ESCRITORES
CURSO: Algoritmos y programacin paralela
CDIGO UNIVERSITARIO: 2015-119013
AO: Segundo SECCIN: Maana GRUPO: Porfirio Chata Ramrez
FECHA DE ELABORACIN: 14/10/16
FECHA DE ENTREGA DEL INFORME: 26/10/16
TACNA-PER
2016
NDICE
I.
OBJETIVOS:...............................................................................................................1
PROCEDIMIENTO Y DESARROLLO..................................................................3
i. ALGORITMO DE LA BARRERA3
CONCLUSIONES..........................................................................................10
V. REFERENCIA BIBLIOGRFICA...........................................................................10
I.
OBJETIVOS:
II.
i.
FUNDAMENTO TERICO
PROBLEMAS DEL PRODUCTOR CONSUMIDOR
ALGORITMO DE LA BARRERA
Es un mecanismo de sincronizacin que obliga a procesos concurrentes (o
distribuidos) a esperar a que todos hayan llegado a un punto determinado.
Solo podrn continuar cuando todos los procesos hayan llegado a una barrera.
El conjunto de los puntos de sincronizacin se denomina barrera.
Barreras binarias
Una barrera binaria es una extensin del ejemplo anterior, donde solo uno de
los procesos deba esperar por el otro. En cambio, una barrera hace que ambos
deban esperar a que el otro acabe una fase para avanzar a la siguiente; adems,
las barreras pueden usarse cclicamente.
El algoritmo de barreras para dos procesos es trivial, hacen falta dos
semforos binarios inicializados a cero. El valor de cada semforo indica si su
proceso correspondiente lleg a la meta. Cada proceso ejecuta signal en su
semforo para indicar que lleg al final de una fase, y luego wait en el
semforo del otro proceso.(Ricardo Galli,2015)
iii.
LECTORES ESCRITORES
ALGORITMO DE LA BARRERA
Permite que varios procesos no se ejecuten a la vez con ayuda de las operaciones
de los semforos donde tendrn que esperar al ultimo proceso para salir de la
espera limitada.
TABLA 1
Cdigo en PascalFC usando semforos para el algoritmo de la barrera.
program BARRERA;
const
N=10;
var
barrera,mutex :semaphore;
i, nprocesos,j:integer;
process type b(i:integer);
begin
wait(mutex);
nprocesos :=nprocesos+1;
if nprocesos<N then
begin
signal(mutex);
writeln('Proceso: ',nprocesos,' en espera');
wait(barrera);
end
else
begin
writeln('Llegada del ultimo proceso: ',N);
for j:=1 to n-1 do
begin
signal(barrera);
writeln('Salida del proceso: ',j);
end;
nprocesos:=0;
signal(mutex);
end;
end;
var
p:array[1..N]of b;
begin
nprocesos:=0;
initial(barrera,0);
initial(mutex,1);
cobegin
for i:=1 to N do
begin
p[i](i);
end;
coend;
end.
ii.
ello usaremos los semforos que nos permitirn usar la variable compartida de
manera correcta.
TABLA 2
Cdigo en PascalFC usando semforos para el problema del productorconsumido.
program consumidorproductor;
const
N=5;
var
vacios,mutex,llenos :semaphore;
final,elemento,frente:integer;
cola :array[0..N]of integer;
process producir;
begin
repeat
elemento:=random(49)+1;
writeln('PRODUCIR ELEMENTO: ',elemento);
wait(vacios);
wait(mutex);
cola[final]:=elemento;
final:=(final+1)mod N;
signal(mutex);
signal(llenos);
forever
end;
process consumir;
begin
repeat
wait(llenos);
wait(mutex);
elemento:=cola[frente];
frente:=(frente+1)mod N;
signal(mutex);
signal(vacios);
writeln('CONSUMIR ELEMENTO: ',elemento);
forever
end;
begin
final:=0;
frente:=0;
initial(vacios,N);
initial(llenos,0);
initial(mutex,1);
cobegin
producir;
consumir;
coend;
end.
iii.
EJERCICIO PROPUESTO 1
Aada un semforo al siguiente programa para que siempre imprima 40.
7
TABLA 3
Cdigo en PascalFC del ejercicio propuesto 1.
program ejercicio1;
var
x,i: integer;
var
s:semaphore;
process inc;
begin
wait(s);
for i:=1 to 20 do
begin
x:=x+1;
end;
signal(s);
end;
process ind;
begin
wait(s);
for i:=1 to 20 do
begin
x:=x+1;
end;
signal(s);
end;
begin
initial(s,1);
x:=0;
cobegin
inc;
ind;
coend;
writeln(x);
end.
iv.
EJERCICIO PROPUESTO 2
Se desea realizar una competencia de N jugadores la competencia iniciara
cuando se renan los N jugadores .Modele el problema con semforos.
TABLA 4
Cdigo en PascalFC del ejercicio propuesto 2.
program JUGADOR;
const
N=11;
var
barrera,mutex :semaphore;
i, njugadoes,j:integer;
process type b(i:integer);
begin
wait(mutex);
njugadoes :=njugadoes+1;
if njugadoes<N then
begin
signal(mutex);
writeln('Jugador: ',njugadoes,' en espera');
wait(barrera);
end
else
begin
writeln('Llegada del ultimo JugadoR: ',N);
for j:=1 to n-1 do
begin
signal(barrera);
writeln('Salida del Jugador: ',j);
end;
njugadoes:=0;
signal(mutex);
end;
end;
var
p:array[1..N]of b;
begin
njugadoes:=0;
initial(barrera,0);
initial(mutex,1);
cobegin
for i:=1 to N do
begin
p[i](i);
end;
coend;
end.
10
IV. CONCLUSIONES
V. REFERENCIA BIBLIOGRFICA
Galli Granada Ricardo(2015). Principios y algoritmos de concurrencia.(Primera
Edicin)JRMora.
Duran Rodriguez Luis.El gran libro del PC interno.(Primera Edicin)Espaa:
Editorial Marcombo
11