option
Cuestiones
ayuda
daypo
buscar.php

Test PCTR Febrero 2022

COMENTARIOS ESTADÍSTICAS RÉCORDS
REALIZAR TEST
Título del Test:
Test PCTR Febrero 2022

Descripción:
Recopilación de preguntas

Fecha de Creación: 2025/06/14

Categoría: Universidad

Número Preguntas: 20

Valoración:(1)
COMPARTE EL TEST
Nuevo ComentarioNuevo Comentario
Comentarios
NO HAY REGISTROS
Temario:

En una solución basada en RMI, se ha diseñado el siguiente código para Ia aplicación que actúa como servidor. Suponiendo que no se ha iniciado aún en el sistema ningún proceso relacionado con la aplicación distribuida ni con Java, y que todo el código ha sido ya compilado correctamente, ¿Cuál de las siguientes secuencias de ejecución de comandos, ejecutadas todas ellas desde la carpeta donde se encuentran los archivos con las fuentes de la aplicación, NO producirá un error?. rmiregistry & java ServidorRMI localhost servicio & java ClienteRMI.java localhost metodoremoto. rmiregistry & java ServidorRMI localhost servicio & java ServidorRMI localhost servicio & java ClienteRMI.java localhost servicio. rmiregistry & java ServidorRMI localhost servicio & java ServidorRMI localhost otroservicio& java ClienteRMI.java localhost otroservicio. java ClienteRMI localhost servicio rmiregistry & java ServidorRMI localhost servicio &.

Se proporciona un programa concurrente en C++. Se pregunta la salida impresa. -27000. No imprime nada y queda bloqueado por mala gestión de cerrojos. -27098. -27096.

Programa MPI en Java. Se pregunta el output al ejecutar con mpiexec -np 4. no hay output impreso; el programa queda en bloqueo sin Imprimir nada, debido a la incoherencia entre el parámetro -np 4 y la estructura de procesos del código fuente. Imprime y termina normalmente (2 vueltas completas). Imprime 2 vueltas y luego se bloquea. Imprime 1 vuelta y luego se bloquea.

Una aplicación concurrente tiene speedup de 2 en 4 núcleos, con tiempo de 10 segundos. ¿Tiempo de la versión secuencial?. 5 segundos. 10 segundos. 20 segundos. Ninguna.

Suponga un conjunto de hebras en Java que realizan de forma concurrente una operación de auto incremento sobre la variable compartida x, declarada como de tipo volatile. Por tanto, usted sabe que: Todas las operaciones realizadas en memoria sobre la variable x son realizadas de forma atómica, por lo que no es necesario aplicar un protocolo de exclusión mutua al realizar dichas operaciones. Las operaciones de lectura y escritura en memoria aplicadas sobre la variable x son realizadas de forma atómica, por lo que no es necesario aplicar un protocolo de exclusión mutua al realizar dichas operaciones. Si es necesario aplicar un protocolo de exclusión mutua al aplicar la operación de incremento. No es necesario aplicar ningún protocolo de exclusión mutua al acceder a dicha variable puesto que se trata de una variable temporal. Debe emplearse un protocolo de exclusión mutua en todas las operaciones aplicadas sobre la variable x puesto que pueden producirse entrelazados patológicos que den lugar a resultados incorrectos.

La especificación de tiempo real para Java (JRTS) utiliza para efectuar la planificación de los objetos de clase RealTimeThread. 28 niveles de prioridad. las clases PriorityParameters y ImportanceParameters. un modelo fijo de prioridades (salvo inversiones de prioridad). todas las anteriores son ciertas.

El método notifyAll() en Java. Garantiza que nunca se pierde la señal si todos los hilos acceden antes o después al wait-set asociado al cerrojo. Garantiza que al menos uno de los hilos en el wait-set asociado recibe la señal. Debe ser siempre la última instrucción en métodos públicos de un monitor para evitar pérdida de señal. Ninguna de las respuestas es correcta.

Utilizando programación multihebrada en C++, se desean diseñar structs con zonas de código bajo exclusión mutua y otras en ejecución concurrente libre. ¿Esto es posible?. únicamente a partir de la revisión de 2020 del lenguaje. gracias a la introducción de las clases que disponer de barreras Iatches, semáforos binarios y semáforos de conteo. Nunca, considerando la debilidad del modelo de memoria del lenguaje C++. siempre que el así lo decida y lo programe explícitamente, utilizando alguna técnica de control de la concurrencia adecuada disponible en el lenguaje, para lograr la exclusión mutua para las zonas de código deseadas. únicamente cuando las zonas de código bajo control de exclusión mutua estén protegidas empleando exclusivamente un mutex.

Considere un programa concurrente donde un conjunto de variables compartidas deben ser modificadas por varias hebras en ejecución concurrente. El consciente del problema. determina que es posible declarar dos regiones Criticas condicionales para preservar la integridad de estas variables de manera adecuada, y protege Las variables distribuyéndolas entre las dos regiones. En estas condiciones el número total de colas de tareas asociado a ambas regiones es igual a: Una. Tantas como variables de condición. Dos. Cuatro.

Un entrelazado patológico de instrucciones en una aplicación concurrente. solo puede producirse cuando las instrucciones se encuentran englobadas dentro de alguna estructura de control Iterativa (blucles while. for. etc.). solo puede producirse cuando el lenguaje de programación incluye una tase de compilación completa (a código máquina) o a código intermedio (bytecode), no si el lenguaje es interpretado, como en Python. solo se puede producir cuando alguno de los conjuntos de instrucciones que se ejecutan de forma concurrente incluye alguna operación de escritura sobre el recurso compartido. Se producirá siempre que se ejecuten transacciones concurrentes de escritura.

Indique, de las siguientes técnicas de control de la concurrencia en Java con los métodos que se indican, cuál de ellas es adecuada para su uso en protocolos de control de exclusión mutua y/o sincronización: Semaphore.tryAcquire(long timeout, TimeUnit unit), donde los parámetros establecen el tiempo durante el que se intenta tomar un permiso del semáforo, para luego continuar. ReentrantLock.tryLock(long timeout, TimeUnit unit), donde los parámetros establecen el tiempo durante el que se intenta tomar el bloqueo del cerrojo, para luego continuar. synchronized(Object obj), donde se adquiere el bloqueo del cerrojo del objeto obj. Ninguna es correcta.

El framework RMI para programación distribuida y orientada a objetos de Java permite el desarrollo de aplicaciones distribuidas situando a objetos clientes y servidores en máquinas diferentes, y requiere para ello: Un servicio de DNS soportado con "rmiregistry" situado en una máquina diferente a aquella en la que se ejecuta el servidor. El recurso a bibliotecas auxiliares específicas para la generación de las capas de stub y skeleton. Un protocolo común a clientes y objetos servidores que defina las reglas de intercambio de información entre ellos. La serialización explícita implementada por el programador de cualquier dato que se necesite transferir entre objetos situados en máquinas distintas.

¿En qué se diferencia un livelock de un deadlock?. ○ En nada. Ambos conceptos representan interbloqueos que se dan entidades concurrentes con relaciones de dependencia entre sí. ○ En un _livelock_ una de las entidades concurrentes depende de que la otra entidad realice una determinada instrucción mientras que en un _deadlock_ ambas tienen una relación de dependencia mutua. ○ En un _livelock_ las entidades concurrentes continúan ejecutando instrucciones de forma indefinida una vez se produce el interbloqueo mientras que en un _deadlock_ las entidades concurrentes se mandan a una cola de espera que nunca abandonarán. ○ En un lenguaje interpretado (como Python) solo pueden producirse bloqueos de tipo _livelock_ mientras que en uno compilado (como Java o C++) solo pueden producirse bloqueos de tipo _deadlock_.

En el lenguaje de programación Clojure, la utilización de memoria transaccional software mediante el uso de bloques de código concurrente englobados en el ámbito de transacciones dosync, donde se gestiona el acceso a los recursos compartidos, es una herramienta de control de la concurrencia que. permite múltiples transacciones de lectura concurrentes, donde todas finalizan con éxito. permite múltiples transacciones de lectura/escrituras concurrentes, donde todas finalizan con éxito, y no se realizan roll-backs. da lugar a interbloqueos con naturaleza de deadlock cuando se utilizan transacciones de escritura concurrentes. puede funcionar sin recurrir a un manejador de transacciones, aprovechando la interoperabilidad entre Java y Clojure, que se ejecuta sobre la JVM.

Complete el programa en Clojure para que imprima "Precio de la acción de Google: 10". (def google (______ 100)) (______ (______ google + 10)) (println "Precio de la acción de Google: " ______ ). (def google (ref 100)) (dosync (alter google + 10)) (println "Precio de la acción de Google: " @google). (def google (ref-set 100)) (synchronized (alter google + 10)) (println "Precio de la acción de Google: " @google). (def google (@100)) (dosync (ref-set google + 10)) (println "Precio de la acción de Google: " @google). (ref-set google (100)) (dosync (alter @google + 10)) (println "Precio de la acción de Google: " google).

En Java, utilizando el API de alto nivel para control de la concurrencia, es posible disponer de ejecutores de pools de threads que adaptan de forma variable el número de hebras del pool a la carga de trabajo que este recibe. Mediante Executors.newSingleThreadPool();. Mediante un objeto de clase ThreadPoolExecutor adecuadamente parametrizado para ello. Mediante Executors.newCachedThreadPool();. Tanto mediante un objeto de clase ThreadPoolExecutor adecuadamente parametrizado para ello, como mediante Executors.newCachedThreadPool();.

Considere el siguiente programa multihebrado escrito en Java. Indique el output impreso que se obtendrá como resultado de ejecutarlo con java cs. Se obtendrá impresa una excepción de tiempo de ejecución indicando que se está efectuando un anidamiento de cerrojos. 19001. -19001. 19000.

Un proceso en Java: Siempre consta de al menos un hilo en ejecución. Puede comunicarse con otros procesos a través de variables compartidas declaradas en el área de memoria heap. Puede comunicarse con otros procesos a través de variables globales declaradas en el entorno de ejecución de Java (JRE). No puede estar formado por más de un hilo en arquitecturas de un solo procesador.

La primitiva call_once de C++: Garantiza que la función predicado que se pasa como argumento es ejecutada siempre por el primer hilo que se lanzó. Garantiza que la función predicado que se pasa como argumento es ejecutada siempre en exclusión mutua. Garantiza que la variable de tipo once_flag que se pasa como argumento es accedida siempre en exclusión mutua. Ninguna es correcta.

Dado un problema de computación numérica (cuya naturaleza es claramente paralelizadle) y que trabaja sobre una nube de datos reticulada y regular, se desarrollan soluciones paralelas multithreaded y multiproceso en Python usando paralelismo de datos. Se calculan los speedups en una máquina de 8 núcleos lógicos. Se obtienen speedups similares con ambos enfoques, ligeramente mayores a 4. Con programación multithreaded se obtiene speedup de 0.97 y con multiproceso speedup de 7.0. Con ambos enfoques se obtienen speedups inferiores a 1.0. Dada la naturaleza del problema, ambos enfoques permiten obtener speedups hiperlineales.

Denunciar Test