Test de Prácticas de Sistemas Concurrentes y Distribuidos - Tema 1

  • Autor: Ismael Sallami Moreno
  • Titulación: Ingeniería Informática y ADE
  • Asignatura: Sistemas Concurrentes y Distribuidos

  • 1. ¿Qué significa «irrepetibilidad de las secuencias de instrucciones» en la programación concurrente?

    a. Los programas concurrentes nunca tienen errores.
    b. La velocidad de ejecución determina la secuencia de instrucciones.
    c. Los programas concurrentes generan muchas intercalaciones de instrucciones posibles, por lo que es poco probable que se repitan caminos.
    d. Los procesos siguen siempre la misma secuencia de ejecución.
    e. Dos ejecuciones seguirán probablemente el mismo camino.

    2. ¿Qué reto presentan las trazas de ejecución de los programas concurrentes?

    a. Siempre conducen a un punto muerto.
    b. Las trazas garantizan que se producirán errores.
    c. Generan numerosas secuencias de intercalación posibles, lo que complica la predicción.
    d. Las trazas no pueden utilizarse con fines de depuración.
    e. Siguen un patrón predecible y repetible.

    3. ¿Qué son los «errores transitorios» en el contexto de los programas concurrentes?

    a. Errores que son fáciles de detectar y solucionar.
    b. Errores que se producen aleatoriamente y no tienen solución.
    c. Errores que nunca se producen en los programas concurrentes.
    d. Errores que aparecen siempre en la misma ejecución.
    e. Errores que aparecen en algunas ejecuciones pero no en otras, lo que dificulta su detección.

    4. ¿Por qué es difícil depurar programas concurrentes?

    a. Debido a la previsibilidad de las secuencias de ejecución.
    b. Porque los errores transitorios aparecen en cada traza.
    c. La depuración de programas concurrentes no difiere de la de los secuenciales.
    d. Debido a la imprevisibilidad de las secuencias de ejecución y a la posibilidad de que haya trazas diferentes en cada ejecución.
    e. Porque los programas concurrentes siempre se ejecutan sin errores.

    5. ¿Cuál de las siguientes es una solución para garantizar la corrección de los programas concurrentes?

    a. Confiar sólo en la comprobación manual de errores.
    b. Utilizar métodos formales basados en la lógica matemática para verificar la corrección.
    c. Ignorar los errores transitorios porque ocurren raramente.
    d. Se puede garantizar la corrección sin ningún método formal.
    e. Utilizar la fuerza bruta para reejecutar el programa varias veces.

    6. ¿Qué es una traza en el contexto de la programación concurrente?

    a. Una secuencia de estados del programa producidos por un intercalado específico de instrucciones.
    b. El historial de cómo se modifican las variables durante la compilación.
    c. Un registro de todos los errores en la ejecución de un programa.
    d. La ejecución de un único proceso de forma aislada.
    e. Una secuencia de operaciones atómicas de un único proceso.

    7. ¿Por qué es peligroso hacer suposiciones sobre la velocidad de ejecución de los procesos en los programas concurrentes?

    a. Siempre conduce a un mejor rendimiento en todas las plataformas.
    b. Los procesos más rápidos siempre garantizan mejores resultados del programa.
    c. Las suposiciones de velocidad siempre aumentan la eficacia del programa.
    d. Los procesos pueden no funcionar correctamente en diferentes plataformas si se hacen suposiciones sobre la velocidad de ejecución.
    e. La velocidad de ejecución es irrelevante para la programación concurrente.

    8. ¿Qué es una «condición de carrera» en los programas concurrentes?

    a. Una situación en la que dos procesos nunca interactúan con recursos compartidos.
    b. Una situación en la que el orden de ejecución de los procesos no afecta a la salida final del programa.
    c. Un escenario en el que la velocidad de ejecución es siempre constante.
    d. Cuando dos procesos se ejecutan siempre en un orden fijo y predecible.
    e. Cuando dos procesos acceden a variables compartidas en un orden impredecible en función de la velocidad de ejecución.

    9. ¿Qué efecto pueden tener las condiciones de carrera en los programas concurrentes?

    a. Reducen el riesgo de errores en el programa.
    b. Producen resultados impredecibles o incorrectos según el orden de ejecución de los procesos.
    c. Producen resultados predecibles y correctos.
    d. Facilitan la depuración debido a su comportamiento coherente.
    e. Garantizan que todos los procesos se ejecuten de forma predecible.

    10. ¿En qué tipo de sistema es crítica la velocidad y el orden de ejecución de los procesos?

    a. En cualquier sistema con procesos concurrentes.
    b. En los sistemas en tiempo real, donde la velocidad y el orden de ejecución son críticos.
    c. Sistemas operativos de propósito general.
    d. Sólo sistemas distribuidos.
    e. Sólo en sistemas "multicore".

    11. ¿Qué implica la «independencia de la velocidad del proceso» en la programación concurrente?

    a. Los procesos más lentos garantizan una mayor estabilidad del programa.
    b. La velocidad de ejecución siempre determina la corrección del programa.
    c. La corrección del proceso debe depender de la velocidad relativa de los procesos.
    d. La corrección del proceso debe ser independiente de la velocidad de ejecución, evitando las condiciones de carrera.
    e. Los procesos deben ejecutarse siempre lo más rápido posible.

    12. ¿Qué importancia tiene la «hipótesis de progreso finito» en los programas concurrentes?

    a. Sólo es aplicable a los programas secuenciales.
    b. Garantiza que los procesos se completen siempre a la misma velocidad.
    c. Garantiza que todos los procesos completen la ejecución y progresen, evitando el bloqueo.
    d. Permite que algunos procesos no terminen nunca sus tareas.
    e. Permite que los procesos se detengan indefinidamente sin afectar a la corrección del programa.

    13. ¿Qué es el «progreso global» en el contexto de la ejecución concurrente?

    a. Requiere que todos los procesos se ejecuten al mismo tiempo.
    b. Garantiza que todos los procesos terminen la ejecución inmediatamente.
    c. Es específico sólo de los sistemas en tiempo real.
    d. Garantiza que al menos un proceso listo para ejecutarse llegue a ejecutarse, evitando el bloqueo.
    e. Garantiza que ningún proceso pueda bloquear la ejecución de otro.

    14. ¿Qué significa «progreso local» en la programación concurrente?

    a. Un proceso puede detenerse a mitad de ejecución y reanudarse más tarde sin completar la sección actual.
    b. Un proceso debe completar siempre todo el programa sin pausa.
    c. Los procesos deben comunicarse con otros procesos para continuar la ejecución.
    d. Una vez que un proceso comienza a ejecutarse, debe terminar todo el programa.
    e. Una vez que un proceso empieza a ejecutar una sección de código, debe completarla sin interrupción.

    15. ¿Cómo evita la hipótesis del progreso finito el bloqueo en los programas concurrentes?

    a. Poniendo en pausa algunos procesos para permitir que otros terminen primero.
    b. Imponiendo límites temporales estrictos a la ejecución de los procesos.
    c. Limitando el número de procesos que pueden ejecutarse simultáneamente.
    d. Garantizando que los procesos puedan detenerse en cualquier momento.
    e. Garantizando que todos los procesos acaben progresando, evitando que se atasquen.

    16. ¿Cuál es la definición de «propiedad de vivacidad»?

    a. Una condición que sólo se aplica a los programas secuenciales.
    b. Una condición que establece que algo bueno debe suceder eventualmente en el futuro.
    c. Una condición que debe cumplirse en cada instante de la ejecución del programa.
    d. Una propiedad que define cuántos procesos pueden ejecutarse simultáneamente.
    e. Una propiedad que garantiza que los procesos pueden pausarse indefinidamente.

    17. ¿Qué significa el triple {P}C {Q} en el contexto de la lógica de Hoare?

    a. Si el programa C comienza en un estado en el que P es verdadero, entonces Q será verdadero después de que C termine de ejecutarse.
    b. Garantiza que en la ejecución de varios procesos contenidos C no existen interferencias.
    c. P y Q son variables que representan el tiempo de ejecución de C.
    d. Si el programa C se ejecuta, siempre terminará.
    e. Si el programa C se ejecuta con la máxima velocidad, P siempre será igual a Q.

    18. ¿Cuál es el principal reto de aplicar la lógica de Hoare a los programas concurrentes?

    a. Es difícil definir precondiciones y postcondiciones para cada proceso.
    b. No puede manejar programas sin memoria compartida.
    c. La interferencia entre procesos de ejecución concurrente complica el razonamiento.
    d. La lógica de Hoare requiere un número infinito de trazas de ejecución para verificar la corrección.
    e. La lógica de Hoare sólo es aplicable a los programas secuenciales, no a los concurrentes.

    19. ¿Cuál es la principal característica de la regla de no interferencia de la lógica de Hoare para programas concurrentes?

    a. Sólo se aplica a los programas secuenciales, no a los concurrentes.
    b. Garantiza que cada proceso termina de ejecutarse antes de que comience el siguiente.
    c. Garantiza que dos procesos no interfieran entre sí en sus precondiciones y postcondiciones cuando se ejecutan simultáneamente.
    d. Garantiza que todos los procesos accedan a los recursos compartidos al mismo tiempo.
    e. Permite que los procesos se ejecuten sin sincronización y sigue garantizando la corrección.

    20. En la lógica de Hoare, ¿qué se necesita para verificar la corrección de una composición concurrente de procesos?

    a. Las precondiciones y postcondiciones de los procesos deben combinarse, y ningún proceso debe invalidar las afirmaciones de los demás.
    b. El sistema debe probarse con todas las configuraciones de hardware posibles para garantizar su corrección.
    c. La composición sólo debe implicar a un único proceso a la vez.
    d. Los procesos deben ejecutarse secuencialmente, sin solapar instrucciones.
    e. Cada proceso debe tener su propio espacio de memoria independiente.

    Autor: Ismael Sallami Moreno