Boletín: Programación de sistemas en tiempo real.

Transcripción

Boletín: Programación de sistemas en tiempo real.
Boletín: Programación de sistemas en tiempo real.
1.- Escriba el código para ejecutar 3 tareas en paralelo, donde la tarea1 es la más prioritaria y las
tarea3 la menos prioritaria. Supongan que están declaradas e implementadas las siguientes
funciones:
WORD WINAPI tarea1 (LPVOID);
WORD WINAPI tarea2 (LPVOID);
WORD WINAPI tarea3 (LPVOID);
2.- En un determinado sistema informático de tiempo real, existen dos hilos que deben
sincronizarse en un determinado punto, es decir, antes de continuar deben esperar a que el otro
hilo llegue a un determinado punto; esto se conoce como cita. Escriba el código que implemente
una cita (escriba el código de cada uno de los hilos y del hilo principal).
3.- El sistema informático de control automático del acceso a un edificio consta de 3 tipos hilos:
- Hilo de lectura de tarjeta: se encarga de leer las tarjetas que dan acceso al edificio,
guardar los datos en un buffer.
- Hilo de comprobación de permisos: se encarga de consultar una base de datos en la
que se encuentran registrados todos los usuarios que tiene permiso para acceder al
edificio.
- Hilo de alarma: envía una señal de alarma al puesto de control de seguridad, cuando se
detecta una acceso no permitido.
El edificio tiene 5 puertas, por lo que existen 5 hilos de lectura de tarjetas ejecutándose en
paralelo.
El hilo de comprobación de permisos está suspendido hasta que uno de los hilos de lectura de
tarjetas lee una; sólo puede atender a un hilo de lectura cada vez. Cuando se detecta un intento
de acceso no permitido, debe mandar una señal al hilo de alarma.
El hilo de alarma esta normalmente suspendido hasta que recibe una señal de enviar alarma.
Escriba el código de los tres tipos de hilo y en del hilo principal (escriba sólo el código necesario
para resolver el problema, suponga que el paso de la información leída esta resuelto)
4.- Escriba un programa que ejecute dos hilos en paralelo para realizar las siguientes tareas:
- El primer hilo calculará los números primos que hay entre dos números que hay
almacenados en dos variables globales. Para enviar estos datos al segundo hilo, los
almacenará en un buffer intermedio de 5 elementos de capacidad.
- El segundo hilo tomará los datos que aparezcan en el buffer intermedio calculará la suma
de los dígitos de cada número, almacenando el resultado en un array circular de 32
posiciones.
Debe utilizar algún mecanismo para proteger el buffer intermedio.
5.- Escribe un programa que ejecute tres hilos en paralelo a los que llamaremos A, B y C. El hilo
A consta de tres bloques de código (A1, A2 y A3), el hilo B de cuatro (B1, B2, B3 y B4) y el C de
dos (C1 y C2). Haz que el código de cada uno de estos bloques consista en repetir cinco veces
los siguientes pasos: escribir un mensaje que lo identifique y realizar un retardo aleatorio.
Los tres hilos deben sincronizarse de la siguiente forma:
- A2 no debe comenzar hasta que acabe B1
- C1 no debe comenzar hasta que acabe A1
- C2 no debe comenzar hasta que acabe B2
- A3 no debe comenzar hasta que acabe C2
- B4 no debe comenzar hasta que acabe A2
1

Documentos relacionados