0% encontró este documento útil (0 votos)
120 vistas6 páginas

Informe N°8

Este documento presenta un informe sobre el uso de semáforos en Pascal FC. Explica los objetivos de aprender a usar semáforos y realizar ejercicios aplicándolos. Define semáforos y sus operaciones wait y signal. Describe ejemplos de código utilizando semáforos como "Hola" y "Adiós", transferencia bancaria y baloncesto. Finalmente, presenta un algoritmo de productor-consumidor codificado con semáforos y concluye que los semáforos reducen la carga de los procesos al dormirlos cuando
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
120 vistas6 páginas

Informe N°8

Este documento presenta un informe sobre el uso de semáforos en Pascal FC. Explica los objetivos de aprender a usar semáforos y realizar ejercicios aplicándolos. Define semáforos y sus operaciones wait y signal. Describe ejemplos de código utilizando semáforos como "Hola" y "Adiós", transferencia bancaria y baloncesto. Finalmente, presenta un algoritmo de productor-consumidor codificado con semáforos y concluye que los semáforos reducen la carga de los procesos al dormirlos cuando
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD NACIONAL JORGE BASADRE

GROHMANN






















INFORME: SEMAFOROS EN PASCAL FC
CURSO: ALGORITMOS PARALELOS
NOMBRE: GIAN CARLO GONZALO MAMANI.
DOCENTES: Ing. HUGO MANUEL BARRAZA VIZCARRA.
CODIGO: 2013 39104.
AO-SEC.: 2
do
B.
TURNO: TARDE.
HORARIO: 2am 4am.

TACNA- PERU
2014




1. Objetivos.
Aprender a usar la herramienta semforo en pascal fc.
Realizar ejercicio aplicando semforos.
2. Fundamento terico.
Un semforo es un tipo abstracto de dato, y como tal, su definicin requiere especificar
sus dos atributos bsicos:
* Conjunto de valores que puede tomar.
* Conjunto de operaciones que admite.
Un semforo tiene tambin asociada una lista de procesos, en la que se incluyen todos
los procesos que se encuentra suspendidos a la espera de acceder al mismo.

Un semforo
var p: semaphore;
Admite dos operaciones seguras:

Wait(p): Si el semforo no es nulo (abierto) decrementa en uno el valor del
semforo. Si el valor del semforo es nulo (cerrado), el thread que lo ejecuta se
suspende y se encola en la lista de procesos en espera del semforo.
Signal(p); Si hay algn proceso en la lista de procesos del semforo, activa uno
de ellos para que ejecute la sentencia que sigue al wait que lo suspendi. Si no
hay procesos en espera en la lista incrementa en 1 el valor del semforo.

3. Procedimiento y desarrollo.
El primer programa que se realiz en el laboratorio consiste en un HOLA Y
ADIOS.
Este es el cdigo:
program hola;

var
s:semaphore;

process P1;
begin
writeln('HOLA');
signal(s);
end;

process P2;
begin
wait(s);
writeln('ADIOS');
end;

begin
initial(s,0);
cobegin
P1;
P2;
coend;
end.



El segundo ejemplo que se realizo es

program exclusionmutua;

var
s:semaphore;
aux,saldo:integer;

process sacar(din:integer);
begin
wait(s);
aux:=saldo;
aux:=saldo-din;
saldo:=aux;
signal(s);
writeln('saldo sacado =',saldo);
end;

process poner(din:integer);
begin
wait(s);
aux:=saldo;
aux:=saldo+din;
saldo:=aux;
signal(s);
writeln('saldo puesto =',saldo);
end;

begin
initial(s,1);
saldo:=50;
cobegin
sacar(30);
poner(200);
coend
end.




El siguiente ejemplo es de una cancha de baloncesto en el cual hay 8 personas pero solo hay 3 balones por lo
tanto se tendr que esperar que termine uno para que otro jugador realice su turno:
program jugar;
var
i:integer;
s:semaphore;
const
n=8;

process type proceso(i:integer);
begin
wait(s);
writeln('SE JUGARA EL PARTIDO-- ', i);
signal(s);
end;

var J: array[1..n] of proceso;

begin
initial(s,3);
cobegin
for i:=1 to n do
J [i](i);
coend;
end.





4. Actividades encargadas
Codifique el algoritmo de productor-consumidor.
program produtconsu;
const N=15;

var
item,q,frente,cola:integer;
buffer:array[1..N] of integer;
vacios,llenos,mutex:semaphore;

process productor;
begin
repeat
item:=random(10);
writeln('Se esta produciendo ',item);
wait(vacios);
wait(mutex);
buffer[frente]:=item;
frente:=(frente+1) mod N;
signal(mutex);
signal(llenos);
forever
end;

process consumidor;
begin
repeat
wait(llenos);
wait(mutex);
item:=buffer[cola];
cola:=(cola+1) mod N;
signal(mutex);
signal(vacios);
writeln('Se esta consumiendo ',item);
forever
end;

begin
initial(vacios,N);
initial(llenos,0);
initial(mutex,1);
frente:=1;
cola:=1;
cobegin
productor;
consumidor;
coend;
end.



5. Conclusiones.
Se logr aprender y comprender e implementar semforos en pascal fc.
Se codifico algoritmos utilizando semforos en los ejerciciso propuestos en clase
y de la actividad, demostrando asi que con estos algoritmos reducimos el
trabajo de los procesos, ya que si el proceso no se va a utilizar se duerme y no
consume memoria.

6. Referencias bibliogrficas.
Mendez, j. t. (2003). programacion concurrente. espaa.

Uned.extraido de http://resumenesuned.wordpress.com/2009/10/13/capitulo-4-
semaforos/

También podría gustarte