TEST BORRADO, QUIZÁS LE INTERESE: UT2
COMENTARIOS | ESTADÍSTICAS | RÉCORDS |
---|
REALIZAR TEST
Título del Test:
UT2 Descripción: Hilos programacion Autor:
Fecha de Creación: 14/11/2022 Categoría: Animación Número Preguntas: 45 |
COMPARTE EL TEST
Comentar
No hay ningún comentario sobre este test.
Temario:
Un problema de la sincronización de hilos es la condición de carrera, ya que el resultado de la ejecución de un programa depende del orden concreto en que se realicen los accesos a memoria. Verdadero Falso. Selecciona las opciones correctas. Para crear nuevos hilos de ejecución dentro de un proceso, podremos hacerlo de las siguientes formas: Extendiendo la clase Thread. Implementando la interfaz Runnable. Ninguna de las anteriores. Cuando varios hilos acceden a datos compartidos, y el resultado de la ejecución depende del orden concreto en que se accede a los datos compartidos se dice que: Hay una sección crítica. Hay una condición de carrera. Eso no puede suceder, los hilos no pueden compartir datos. Ninguna de los anteriores. Cualquier solución al problema de la sección crítica debe cumplir las condiciones de: Exclusión mutua, progreso y espera limitada. Exclusión mutua, espera limitada y retención. Envejecimiento e inanición. Exclusión mutua, aislamiento y espera limitada. 11. Indica cuál de las siguientes afirmaciones sobre los monitores es FALSA: Permiten resolver el problema de la sección crítica. Pueden ser binarios o contadores. Se pueden utilizar para garantizar el orden de ejecución entre procesos. Son un mecanismo de sincronización. Dado el siguiente fragmento de código sobre un Objeto en particular para realizar una sección crítica: notify(); SECCIÓN CRÍTICA wait() ¿Cuál de las siguientes afirmaciones es cierta? El código mostrado no asegura retención. El código mostrado no asegura exclusión mutua. Es una solución válida para el problema de la sección crítica cuando el código se ejecuta en un único procesador. El código mostrado permite resolver el problema de la sección crítica. Indica cuál de las siguientes afirmaciones sobre los semáforos es FALSA: Permiten resolver el problema de la sección crítica. Pueden ser binarios o contadores. No se pueden utilizar para garantizar el orden de ejecución de procesos. Son un mecanismo de sincronización. 14. Dado el siguiente fragmento de código y suponiendo que el objeto Semaphore S tiene como valor inicial 2: s.release(S); Función(); s.acquire(S); ¿Cuántos procesos pueden ejecutar al mismo tiempo la tarea Función? 0 2 3 Ninguna de las anteriores.Depende de la ejecución. 15. Dado el siguiente fragmento de código ejecutado por un hilo: syncronyzhed(Object){ … If (<<se cumple condición>>) Wait(); FUNCION} ¿Cuál de las siguientes afirmaciones es cierta? El thread sólo ejecutará FUNCION cuando no se cumpla la condición. El thread podría ejecutar FUNCION aunque esta se cumpla, debido a la espera del hilo por conseguir el monitor. El thread podría ejecutar FUNCION aunque esta se cumpla, debido que es un problema inherente al uso paralelo de threads. El thread nunca conseguirá ejecutar FUNCION. Una condición de carrera: Sucede por permitir que varios procesos manipulen variables compartidas de forma concurrente. Existe cuando varios procesos acceden a los mismos datos en memoria y el resultado de la ejecución depende del orden concreto en que se realicen los accesos. No necesita de mecanismos software para ser impedida, ya que siempre que se ejecuta el código de procesos concurrentes con los mismos argumentos, esos se ejecutarán de la misma forma. a y b son correctas. Dado el siguiente fragmento de código suponiendo que el objeto semaphore sem tiene como valor inicial 2: sem.acquire(); ¿Qué sucederá? El proceso que ejecuta la operación se bloquea hasta que otro ejecute una operación sem.release(); El proceso continuará adelante sin bloquearse, y si previamente existían procesos bloqueados a causa del semáforo, se desbloqueará uno de ellos. Tras hacer la operación, el proceso continuará adelante sin bloquearse. Un semáforo jamás podrá tener el valor 2, si su valor inicial era 0 (cero) y se ha operado correctamente con él. Si se usa un bloque sincronizado para lograr la sincronización de procesos: Siempre se deben incluir variables de condición, pues el bloque únicamente proporciona exclusión mutua. Las operaciones wait y notify se utilizan dentro de un mismo objeto. Las operaciones wait y notify se utilizan en objetos separados. La variable de condición se especifica siempre con una condición if. Indicación a un hilo que debería dejar de hacer lo que está haciendo para hacer otra cosa. Hilo Exclusión mutua Inanición Interrupción. Región de código en la cual se accede de forma ordenada a variables y recursos compartidos, de forma que se pueda diferenciar de aquellas zonas de código que se pueden ejecutar de forma asíncrona. Exclusión mutua Inanición Interrupción Semáforos. Se ejecutará de forma continuada sin ser interrumpida, por lo que ningún proceso o hilo puede leer o modificar datos relacionados mientras se esté realizando la operación. Inanición Interrupción Operación atómica Semáforos. Secuencia de código que está en ejecución, pero dentro del contexto de un proceso. Hilo Interrupción Operación atómica Semáforos. Si un proceso está ejecutando su sección crítica, ningún otro proceso puede ejecutar su sección crítica. Sección crítica Interrupción Operación atómica Semáforos. Tiene lugar cuando a un proceso o hilo se le deniega continuamente el acceso a un recurso compartido. Iniciación Interrupción Operación atómica Semáforos. Se pueden utilizar para controlar el acceso a un determinado recurso formado por un número finito de instancias. Se representa como una variable entera donde su valor representa el número de instancias libres o disponibles del recurso compartido y una cola donde se almacenan los procesos o hilos bloqueados esperando para usar el recurso. Iniciación Interrupción Operación atómica Semáforos. Se produce cuando dos o más procesos o hilos están esperando indefinidamente por un evento que sólo puede generar un proceso o hilo bloqueado. Iniciación Interrupción Interbloqueo o deadlock Semáforos. Conjunto de métodos atómicos que proporcionan de forma sencilla exclusión mutua a un recurso. Iniciación Interrupción Interbloqueo o deadlock Monitor. Semáforo binario (valores 0 y 1), indicador de condición que registra si un único recurso está disponible o no. Iniciación Mutex Interbloqueo o deadlock Monitor. La creación de nuevos hilos no supone ninguna reserva adicional de memoria por parte del sistema operativo. Capacidad de respuesta Compartición de recursos Compartición de la misma memoria del proceso que dependen Paralelismo real. Los hilos permiten a los procesos continuar atendiendo peticiones del usuario aunque alguna de las tareas que esté realizando el programa sea muy larga. Capacidad de respuesta Compartición de recursos Compartición de la misma memoria del proceso que dependen Paralelismo real. Cuando un proceso está en ejecución, los hilos programados del mismo pueden utilizar todos los núcleos del procesador de forma paralela, perimitiendo que se ejecuten varias instrucciones (una por cada thread y núcleo) a la vez. Capacidad de respuesta Compartición de recursos Compartición de la misma memoria del proceso que dependen Paralelismo real. Comparten memoria y todos los recursos del proceso al que pertenecen; por tanto, no necesitan ningún medio adicional para comunicarse entre ellos; aunque necesitan medios de sincronización para evitar problemas en el acceso a los datos. Capacidad de respuesta Compartición de recursos Compartición de la misma memoria del proceso que dependen Paralelismo real. El hilo está bloqueado por diversos motivos (esperando por una operación de E/S, sincronización con otros hilos, dormido, suspendido), esperadno que el suceso suceda para volver al estado Runnable. Nuevo (Pudiendo ejecutar) Runnable Bloqueado Terminado. El hilo está preparado para su ejecución pero todavía no se ha realizado la llamada correspondiente en la ejecución del código del programa. Nuevo (Pudiendo ejecutar) Runnable Bloqueado Terminado. El hilo ha finalizado su ejecución. Nuevo (Pudiendo ejecutar) Runnable Bloqueado Terminado. El hilo está preparado para ejecutarse y puede estar ejecutándose. Nuevo (Pudiendo ejecutar) Runnable Bloqueado Terminado. Si el hilo se construyó implementando la interfaz Runnable, entonces se ejecuta el método run() de ese objeto. En caso contrario, no hace nada. start() currentThread() run() sleep (). Establece la prioridad con la que se ejecuta el hilo. start() currentThread() run() setPriority(). Implementa la operación create. Comienza la ejecución del hilo de la clase correspondiente. Llama al método run(). start() currentThread() run() setPriority(). El hilo que se está ejecutando se suspende durante el número de milisegundos especificado. sleep() currentThread() run() setPriority(). Comprueba si el hilo ha sido interrumpido. sleep() currentThread() interrupt() setPriority(). Devuelve true en caso de que el hilo esté vivo; es decir, no haya terminado el método run() en su ejecución. sleep() currentThread() isAlive() setPriority(). Interrumpe el hilo del objeto. sleep() currentThread() interrupted() setPriority(). Devuelve una referencia al objeto hilo que se está ejecutando actualmente. sleep() currentThread() interrupted() setPriority(). Suspende el hilo hasta que el hilo correspondiente finalice su ejecución. sleep() join() interrupted() setPriority(). Implementa la operación wait. Semaphore(int valor) acquire() release(). Inicialización del semáforo. Indica el valor inicial del semáforo antes de comenzar su ejecución. Semaphore(int valor) acquire() release(). Implementa la operación signal. Desbloquea un hilo que está esperando en el método wait(). Semaphore(int valor) acquire() release(). Despierta a todos los hilos que estén esperando para que continúen con su ejecución. wait() notify() notifyAll(). El hilo espera hasta que otro hilo invoque notify o notifyAll() wait() notify() notifyAll(). Implementa la operación signal. Desbloquea un hilo que esté esperando en el método wait() wait() notify() notifyAll(). |
Denunciar Test