EjerciciosResueltos semaforos

5
Escuela Técnica Superior de Ingeniería Informática Departamento de Ciencias de la Computación Salvador Sánchez - Problemas de Programación avanzada Página 1 de 4 Ejercicios resueltos de programación concurrente con semáforos 1. Resolver mediante un programa en pseudo-Pascal que utilice un semáforo binario el problema del productor-consumidor en una cola. program Ejercicio1; procedure Productor(var c:cola); var x: integer; begin repeat (*... producir el dato x ... *) wait(s); Meter(c,x); (* sección crítica *) signal(s); until false; end; procedure Consumidor(var c:cola); var y: integer; begin repeat wait(s); Sacar(c,y); (* sección crítica *) signal(s); (*... consumir el dato y ... *) until false; end; begin (* Programa principal *) Inicializar(c); init(s,1); cobegin Productor(c); Consumidor(c); coend; end.

Transcript of EjerciciosResueltos semaforos

Page 1: EjerciciosResueltos semaforos

Escuela Técnica Superior de Ingeniería Informática Departamento de Ciencias de la Computación

Salvador Sánchez - Problemas de Programación avanzada Página 1 de 4

Ejercicios resueltos de programación concurrente con semáforos

1. Resolver mediante un programa en pseudo-Pascal que utilice un semáforo binario el problema del productor-consumidor en una cola.

program Ejercicio1;

procedure Productor(var c:cola); var x: integer; begin repeat (*... producir el dato x ... *) wait(s); Meter(c,x); (* sección crítica *) signal(s);

until false; end;

procedure Consumidor(var c:cola); var y: integer; begin repeat wait(s); Sacar(c,y); (* sección crítica *) signal(s); (*... consumir el dato y ... *) until false; end;

begin (* Programa principal *) Inicializar(c); init(s,1); cobegin Productor(c); Consumidor(c); coend; end.

Page 2: EjerciciosResueltos semaforos

Escuela Técnica Superior de Ingeniería Informática Departamento de Ciencias de la Computación

Salvador Sánchez - Problemas de Programación avanzada Página 2 de 4

2. Implementar el siguiente diagrama de precedencia mediante un programa en pseudo-Pascal que utilice semáforos:

program Ejercicio2; var s: semaphore;

procedure p1; begin c; wait(s); f; end;

procedure p2; begin b; d; signal(s); e; end;

begin (* Programa principal *) init (s,0); a; cobegin p1; p2; coend; g; h; end.

Page 3: EjerciciosResueltos semaforos

Escuela Técnica Superior de Ingeniería Informática Departamento de Ciencias de la Computación

Salvador Sánchez - Problemas de Programación avanzada Página 3 de 4

3. Implementar el siguiente diagrama de precedencia mediante un programa en

pseudo-Pascal que utilice semáforos:

program Ejercicio3; var s1,s2: semaphore;

procedure p1; begin e;

signal(s1); f; end;

procedure p2; begin c; signal(s2); wait(s1); d; end;

procedure p3; begin h; wait(s2); i; end;

begin (* Programa principal *) init (s1,0); init (s2,0); a; cobegin p1; p2; p3; coend; g; end.

Page 4: EjerciciosResueltos semaforos

Escuela Técnica Superior de Ingeniería Informática Departamento de Ciencias de la Computación

Salvador Sánchez - Problemas de Programación avanzada Página 4 de 4

4. Implementar mediante un programa en pseudo-Pascal que utilice semáforos el

diagrama siguiente:

Solución propuesta:

program Ejercicio4; var s: semaphore;

procedure p1; begin cobegin p11; p12; coend; g; end;

procedure p2; begin wait(s);

f; end;

procedure p11; begin d; signal(s); e; end;

procedure p12; begin b; c; end;

begin (* Programa principal *) init (s,0); a; cobegin p1; p2; coend; h; i; end.

Page 5: EjerciciosResueltos semaforos

This document was created with Win2PDF available at http://www.daneprairie.com.The unregistered version of Win2PDF is for evaluation or non-commercial use only.