EJERCICIO DE SEMAFOROS Y MEMORIA COMPARTIDA

Páginas: 6 (1312 palabras) Publicado: 13 de marzo de 2014
Escuela Superior de Informática

Universidad de Castilla-La Mancha

Programación Concurrente y Tiempo Real

Examen Práctica Semáforos y Memoria Compartida

Examen de Laboratorio – 22 de Marzo de 2013
Examen de Semáforos y Memoria Compartida
APELLIDOS: ___________________________________________________________________
NOMBRE: ___________________________________________ DNI:______________________
Indicaciones:





Calificación

Quite de la mesa cualquier libro, apunte y/o teléfono móvil.
Debe anotar su solución por escrito en el espacio disponible en este cuestionario.
Cuando tenga una solución al ejercicio muéstrela al profesor (compilación + ejecución).
Tiempo para realizar el examen: 1 hora y 30 minutos.

Enunciado
Construya, utilizando ANSI C estándar,dos ejecutables que modelen el siguiente sistema de
procesamiento concurrente. La simulación constará de un proceso cliente que creará un vector
que contendrá los n primeros elementos de la sucesión de Fibonacci1. A continuación, la suma de
estos n elementos será calculada concurrentemente por un conjunto de procesos de sumatorio.
El usuario ejecutará un proceso cliente indicándole tresparámetros:
./exec/cliente   

Este proceso cliente creará un vector con tantos elementos como se indique en n_elem_fib,
representando cada uno de ellos al elementos correspondiente de la sucesión de Fibonacci. En
n_proc_sumatorio se indicará el número de procesos de sumatorio que se lanzarán para su
cálculo. Finalmente, tamsv será el tamaño máximo de cada subvector (cada proceso sumatorio calculará un sumatorio parcial cuyo resultado actualizará convenientemente el campo result de
una variable de memoria compartida).
Los procesos sumatorio atenderán peticiones de cálculo de sumatorios parciales hasta que el
cliente les envíe la señal de terminación (señal SIGINT). En cada petición, el proceso cliente les
indicará el índice de inicio y fin de cada subvector, actualizando éstos en elcampo result el
resultado parcial del sumatorio.

Consideraciones:



1

No es obligatorio realizar la comprobación de errores.
Preste especial atención a lograr el máximo paralelismo posible en la solución.

La sucesión de Fibonacci es una sucesión infinita de número naturales que comienza con 0 y 1 y, a partir de éstos,
cada elemento es la suma de los dos anteriores (0, 1, 2, 3, 5,8, 13, 21, 34, 55, 89, 143, ...)
Página 1 de 7

Escuela Superior de Informática

Universidad de Castilla-La Mancha

Programación Concurrente y Tiempo Real

Examen Práctica 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 fuente no contiene errores y no debe ser modificado (salvo lainicialización de los semáforos
en el proceso cliente). Únicamente debe incorporar su código en la sección indicada.

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

Semáforo

Uso

Inicialización

192

ordenlista

Despierta a un proceso de sumatorio

193

ordenleida

Indica al cliente que la orden fue leída

194fin

El sumatorio del subvector fue
calculado

195

mutex

Exclusión mutua para actualizar el
campo result

Test de Resultado Correcto
Una vez resuelto el ejercicio, si ejecuta el comando ./exec/cliente 10 3 3 el resultado debe ser
algo similar a (naturalmente cambiará el PID de los procesos sumatorio y probablemente el orden
de atención de las peticiones):[PID 30146] Ini 0 Fin 2 ResParcial 2 
[PID 30145] Ini 3 Fin 5 ResParcial 10 
[PID 30144] Ini 6 Fin 8 ResParcial 42 
[PID 30146] Ini 9 Fin 9 ResParcial 34
Resultado: 88

0

1

1

[PID 30146]
Ini 0 Fin 2
R. Parcial 2

2

3

5

8

[PID 30145]
Ini 3 Fin 5
R. parcial 10

+

+

13

21

34

[PID 30144] [PID 30146]
Ini 6 Fin 8
Ini 9 Fin 9
R. parcial 42 R. parcial 34

88

+

+...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Memoria compartida
  • Memoria proyecto semaforo
  • Memoria compartida y tuberias
  • linux memoria compartida
  • SISTEMAS MULTICORE DE MEMORIA COMPARTIDA
  • Memoria Compartida Distribuida y Migración
  • Memoria Compartida Distribuida En Base A Páginas
  • Memoria Compartida Distribuida Basada En Variables

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS