Programación Concurrente y Distribuida RESPUESTAS ALUMNOS
Programación Concurrente y Distribuida RESPUESTAS ALUMNOS
DISTRIBUIDA
Criterios de evaluación Información a rellenar
Duración: …… siendo el 90
máximo 90 minutos.
Materiales que son ACCESO A un editor de texto
necesarios:
ejemplo (documentos que
se pueden abrir, apuntes,
uso de internet o algún
programa adicional)
Puntuación por pregunta: - Diez primeras preguntas: 0.5
siendo el máximo 10 - Pregunta once: 1,5
puntos totales. - Pregunta doce: 3,5
Puntuación negativa por - Las respuestas incorrectas restan 0.15 puntos por pregunta.
respuesta incorrecta:
El valor debe incluir el
signo negativo
Instrucciones del examen: Bienvenido/a al examen de Programación Concurrente y
Explicar a los estudiantes Distribuida.
cómo hay que realizar un
examen, añadir aquí el La prueba consta de 12 preguntas. Las 10 primeras preguntas
encabezado. son de tipo opciones múltiples, en las que sólo una es correcta
y valen 0,5 puntos cada una y La pregunta 11 es de tipo
desarrollo y razonamiento teórico y vale 1,5 puntos. La
pregunta 12 consiste en el desarrollo de un pequeño programa
y vale 3,5 puntos.
EXAMEN:
Type: MC
Respuesta.
Type: MC
b) Evita bloqueos
Respuesta:
Explicación:
El multiprocesamiento implica el uso de múltiples procesos, cada uno con su propio espacio de
memoria. Cada proceso se ejecuta de forma independiente, lo que permite un verdadero
paralelismo porque los procesos pueden ejecutarse en diferentes núcleos de CPU
simultáneamente.
El multihilo implica que varios subprocesos se ejecuten dentro del mismo proceso y compartan
el mismo espacio de memoria.
Dado que los procesos no comparten la misma memoria, no pueden modificar la misma
memoria al mismo tiempo, lo que nos evita el riesgo de encontrarnos con un punto muerto o
la posibilidad de corrupción de datos.
• Los subprocesos comparten el mismo espacio de memoria, mientras que cada proceso
tiene su propio espacio de memoria.
• Compartir objetos entre subprocesos es más simple, pero se deben de tomar
precauciones adicionales para la sincronización de objetos para garantizar que dos
subprocesos no escriban en el mismo recurso compartido al mismo tiempo y que no
aparezca una condición de carrera.
• La programación de subprocesos múltiples es más propensa a errores que el
multiprocesamiento debido a la sobrecarga de programación adicional para la
sincronización de objetos.
• El proceso de generación de procesos consume más tiempo y recursos que los
subprocesos, ya que tienen una sobrecarga menor que los procesos.
• Los procesos secundarios generados se pueden interrumpir y eliminar, pero los
subprocesos secundarios no. Debemos esperar a que terminen los hilos.
Type: MC
Respuesta:
b) Un mecanismo para garantizar que solo un subproceso ejecute el código de bytes de Python
a la vez
Type: MC
Respuesta:
c) Una forma de gestionar y ejecutar una colección de procesos
Documentación
https://docs.python.org/es/3.10/library/multiprocessing.html#multiprocessing.pool.Pool
Type: MC
* b) Tareas limitadas por E/S, como leer archivos o realizar solicitudes de red.
Respuesta: b)
Type: MC
a) Los monitores se utilizan para la señalización entre subprocesos, mientras que los semáforos
no pueden hacerlo.
b) Los monitores son mecanismos de hardware, mientras que los semáforos son
construcciones de software.
* d) Los monitores aplican automáticamente la exclusión mutua, mientras que los semáforos
no.
Respuesta:
d) Los monitores aplican automáticamente la exclusión mutua, mientras que los semáforos no.
Type: MC
7. En el contexto de los estados de un hilo y respecto al estado de bloqueo. Elige la opción
correcta.
Respuesta:
Type: MC
c) El sistema elige uno de los procesos en estado preparado para llevarlo a ejecución.
Respuesta
Tema_2_Programación_Concurrente_y_Distribuida_CLASE
Type: MC
9. Como parte del control asíncrono y los modelos básicos en la comunicación. Cuando se
realiza una primitiva Send, las alternativas de sincronización que pueden surgir en función del
tipo de envío que se realice, son (seleccione la opción no correcta):
a) Invocación remota
* b) Ejecución remota
c) Envío asíncrono
d) Envío síncrono
Respuesta.
Envío asíncrono,
Envío síncrono
Invocación remota
UA2_T09_Control_Asíncrono_CLASE
Type: MC
Respuesta
Type: E
S1 : a = x + y
S2 : b = z + 1
S3 : c = a - b
Compruebe si dos declaraciones S2 y S3 satisfacen las condiciones de Bernstein.
Razone formalmente su respuesta. No se trata sólo de una explicación, sino de un
razonamiento formal que demuestre la respuesta.
Respuesta:
R(S2) = {z}
W(S2) = {b}
R(S3) = {a, b}
W(S3) = {c}
Type: E
12. Escriba un programa Java que utilice dos hilos para escribir simultáneamente en una
variable global y utilice monitores Java para asegurarse de que solo uno de los hilos escriba en
el archivo al mismo tiempo para evitar la corrupción de datos en la variable. El programa tiene
que utilizar los monitores de Java, synchronized, wait y notify para sincronizar ambos hilos.
- El primer hilo escribe un número en la variable y cuando termina, le comunica al segundo hilo
que la variable global está libre.
- El segundo hilo, después de ser notificado por el primer hilo, lee el valor contenido en la
variable y lo muestra a través de la consola.
IMPORTANTE
Con el fin de unificar criterios de elaboración y corrección, el programa habrá de cumplir los
siguientes criterios:
Respuesta
class SharedResource {
private int data; // Variable global compartida
private boolean dataAvailable = false; // Flag para controlar el
consumo de la informacion