semáforos

Páginas: 7 (1686 palabras) Publicado: 28 de marzo de 2014
Escuela Superior de Informática

Universidad de Castilla-La Mancha

Programación Concurrente y de Tiempo Real

Modelo B02 – Semáforos y Memoria Compartida

Prueba de Laboratorio [Solución]
Modelo B02 – Semáforos y Memoria Compartida
APELLIDOS: ___________________________________________________________________
NOMBRE:
_____________________________ GRUPO DE LABORATORIO: __________Indicaciones:





Calificación

No se permiten libros, apuntes ni teléfonos móviles.
Cuando tenga una solución al ejercicio muéstrela al profesor (compilación + ejecución).
Debe anotar su solución por escrito en el espacio disponible en este cuestionario.
Tiempo para realizar la prueba: 90 minutos.

Enunciado
Construya, utilizando ANSI C estándar, los ejecutables que modelen unsistema que calcule la fracción
canónica (irreducible) a partir de la descomposición del numerador y denominador como producto de sus
factores primos del modo que se detalla a continuación:




Un proceso manager recibe el numerador y el denominador de una fracción. Estos se deberán
descomponer factorialmente y sus potencias deberán ser reducidas. Para ello, se lanzará una serie deprocesos factorizador. Habrá un proceso factorizador para cada número primo, es decir, uno para el
2, otro para el 3, otro para el 5, etc. hasta MAX_PRIMOS.
Cada uno de estos procesos factorizador se encarga de calcular cuántas veces el numerador y el
denominador que el proceso manager ha recibido son divisibles entre el número primo que dicho
proceso factorizador debe procesar, y que le ha sidoindicado por el proceso manager. A
continuación, deberá eliminar aquel con menor exponente, dejando la diferencia al contrario. Por
ejemplo, si el proceso manager recibe los números 28 y 42, entonces se tendrá que calcular:
2

1

1

28
2 ∗7
2
= 1 1 1= 1
42 2 ∗3 ∗7 3
Para ello, el proceso factorizador encargado de procesar el nº primo 2 deberá calcular que puede dividir el
numerador 2veces y el denominador 1 vez, dejando en el numerador 2 1; el proceso factorizador encargado
de procesar el nº primo 3 deberá calcular que puede dividir el numerador 0 veces y el denominador 1 vez,
dejando en el denominador 31; y el proceso factorizador encargado de procesar el nº primo 7 deberá calcular
que puede dividir el numerador 1 vez y el denominador 1 vez, eliminando por completo laspotencias
asociadas a éste.
Para facilitar la implementación, dispone de vectores para almacenar las potencias de los números primos
en los que se descomponen el numerador y denominador (struct TDatos_t). Así, los valores, ya
simplificados, para los datos del ejemplo anterior serán (para los 4 primeros números primos):
Numerador: 21 30 50 70 → vector vNumerador [1, 0, 0, 0]
Denominador: 20 3150 70 → vector vDenominador [0, 1, 0, 0]

Consideraciones:




No es obligatorio, aunque sí muy recomendable, realizar la comprobación de errores.
Preste especial atención a lograr el máximo paralelismo posible en la solución.
Utilice la primitiva memcpy en el proceso factorizador para copiar, en una variable local, la orden recibida del
proceso manager.
Paseo de la Universidad 4 |13071 Ciudad Real | Telf: (+34) 926295300 | Fax: (+34) 926295354

Escuela Superior de Informática

Universidad de Castilla-La Mancha

Programación Concurrente y de Tiempo Real

Modelo B02 – Semáforos y Memoria Compartida

Resolución
Utilice el código fuente suministrado a continuación como plantilla para resolver el ejercicio. Este código no debe ser
modificado (salvo la inicializaciónde los semáforos en el proceso manager). Únicamente debe incorporar su código en
la sección indicada. No realice comprobación de errores en los parámetros.

 Indique a continuación el valor de inicialización de los semáforos (código en manager.c):
Línea de Código

Semáforo

Uso

Inicialización

193

semOrdenLista

Despierta a un proceso factorizador

0

194

semOrdenLeida...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Los Semaforos
  • semaforo
  • Semaforo
  • semaforo
  • SEMAFORO
  • Semáforo
  • Semaforo
  • Semaforo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS