1/296
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
¿Es posible representar una RCC (Región Crítica Condicional) directamente mediante un lenguaje?
No, es imposible de representar directamente por lenguajes, se debe simular.
¿Qué caracteriza al "Orden Total" en concurrencia?
Es secuencial desde un punto a otro, independientemente de lo que haya en medio.
¿El mecanismo 'Fork' para la creación de hilos es estático o dinámico?
Es dinámico.
¿Existen interbloqueos (deadlocks) en sistemas que usan Memoria Transaccional o Clojure?
No, por diseño no existen los interbloqueos.
¿Es rentable usar Memoria Transaccional si hay muchas operaciones de escritura?
No, no es rentable debido al alto número de abortos y reintentos.
¿Cómo es el modelo de memoria en MPI (Message Passing Interface)?
Es todo distribuido, sin memoria común.
¿Qué garantiza la palabra clave 'volatile' en Java?
Garantiza visibilidad en lectura (los hilos ven el valor más reciente) pero no atomicidad en operaciones compuestas.
¿Qué comparte un hilo hijo con su hilo padre en Java?
El espacio de direcciones (Heap) y las variables estáticas, pero NO el contador de programa ni la pila.
¿Cuál es el rango de prioridades de las hebras en Java?
Es un valor numérico en el rango discreto de 1 a 10.
¿En qué orden se deben activar los componentes de RMI?
1º el rmiregistry (DNS), 2º el servidor, 3º el cliente.
¿Qué sucede si un hilo intenta adquirir un cerrojo ReentrantLock que ya posee?
El hilo no se bloquea, ya que el cerrojo es reentrante.
¿Qué técnica usa 'Collections.synchronizedList'?
Acceso seguro provisto a través del API de Java mediante sincronización interna.
¿Para qué sirve la ecuación de Subramanián?
Para determinar el número óptimo de hilos en función del número de núcleos y el factor de bloqueo (CPU vs I/O).
¿Qué es un sistema SISD en tiempo real?
Un sistema con un solo flujo de instrucciones y datos que garantiza respuestas en tiempos acotados.
¿Puede un sistema SISD en tiempo real ser paralelo?
No, no puede ser paralelo, pero sí concurrente.
¿Cuántos semáforos se necesitan como mínimo para el problema de los Filósofos Comensales?
Al menos 5 semáforos (uno por cada palillo).
¿Cuántas colas de condición hay en una solución de Filósofos con monitores?
5 colas de condición (una por cada filósofo para esperar a comer).
¿Cuántos semáforos requiere el problema de Productores y Consumidores?
3 semáforos: mutex (exclusión), lleno (control de datos) y vacío (control de espacio).
¿Cuántas colas de condición hay en Productores y Consumidores?
2 colas: una para productores y otra para consumidores.
¿Qué diferencia un Monitor SC (Signal and Continue) de un SU (Signal and Urgent)?
En SC el señalizador sigue en el monitor
¿Qué es el "entrelazado de instrucciones" (interleaving)?
La ejecución alternada de instrucciones de diferentes hilos en un solo procesador.
¿Qué es una sección crítica?
Es el fragmento de código que accede a un recurso compartido y debe ejecutarse en exclusión mutua.
¿Qué condición de Bernstein impide la ejecución paralela por dependencia de flujo?
Cuando el conjunto de escritura de S1 interseca con el conjunto de lectura de S2.
¿Qué es el Livelock?
Situación donde los hilos cambian su estado continuamente en respuesta a otros pero ninguno progresa.
¿Qué método de la clase Thread se usa para esperar a que otra hebra termine?
El método join().
¿Qué ocurre al llamar a wait() dentro de un bloque synchronized?
El hilo libera el cerrojo del objeto y pasa a estado de espera (blocked).
¿Qué diferencia hay entre notify() y notifyAll()?
notify() despierta a un hilo al azar
¿Qué es la exclusión mutua?
Propiedad que asegura que solo un proceso a la vez acceda a un recurso compartido.
¿Qué es la vivacidad (liveness)?
Garantía de que algo bueno acabará sucediendo (el programa no se queda bloqueado para siempre).
¿Qué es la seguridad (safety)?
Garantía de que nunca sucederá nada malo (ej. dos hilos en la misma sección crítica).
¿Qué hace el método 'execute()' en un Thread Pool?
Encola una tarea tipo Runnable para su ejecución.
¿Qué devuelve el método 'submit()' de un ExecutorService?
Un objeto Future que representa el resultado pendiente de la tarea.
¿Para qué sirve 'future.get()()?
Para obtener el resultado de una tarea
¿Qué es un 'CountDownLatch'?
Un sincronizador que permite a uno o más hilos esperar hasta que se completen una serie de operaciones.
¿Qué es el Proyecto Loom?
Iniciativa para introducir hilos virtuales (hilos ligeros) en la plataforma Java.
¿Qué son las "Continuaciones Delimitadas" en Loom?
El mecanismo interno que permite pausar y reanudar el estado de ejecución de un hilo virtual.
¿Qué ventaja principal tienen los Virtual Threads?
Permiten manejar millones de hilos con muy poca sobrecarga de memoria y CPU.
¿Qué es un semáforo binario?
Un semáforo que solo puede tomar los valores 0 y 1 (similar a un mutex).
¿Qué operación de semáforo incrementa su valor?
La operación V (o signal/release).
¿Qué operación de semáforo decrementa su valor o bloquea si es 0?
La operación P (o wait/acquire).
¿Qué es la "inversión de prioridad"?
Cuando un hilo de baja prioridad bloquea a uno de alta prioridad.
¿Qué es un monitor en programación?
Un objeto que encapsula datos y métodos, garantizando que solo un hilo ejecute sus métodos sincronizados a la vez.
¿Cuántas colas tiene un monitor SU estándar?
3 colas: entrada, urgente (señalizadores) y de condición.
¿Java implementa monitores tipo SC o SU?
Java implementa monitores tipo SC (Signal and Continue).
¿Qué palabra clave se usa en Java para definir un monitor implícito?
synchronized.
¿Qué es RMI (Remote Method Invocation)?
Mecanismo que permite a un objeto Java invocar métodos de un objeto que vive en otra JVM.
¿Qué es el 'Stub' en RMI?
El objeto en el lado del cliente que actúa como representante del objeto remoto.
¿Qué es el 'Skeleton'?
El componente en el lado del servidor que recibe las peticiones del Stub y las pasa al objeto real.
¿Qué es un sistema de Tiempo Real Crítico (Hard Real-Time)?
Aquel donde el incumplimiento de un plazo de tiempo puede causar fallos catastróficos.
¿Qué es el 'Jitter'?
La variación en el tiempo de respuesta o ejecución entre diferentes instancias de una tarea.
¿Qué es la atomicidad?
Propiedad de una operación que se ejecuta por completo o no se ejecuta en absoluto, sin estados intermedios visibles.
¿Qué hace el método 'yield()' de Thread?
Sugiere al planificador que el hilo actual está dispuesto a ceder el procesador.
¿Qué es un Pool de hilos 'CachedThreadPool'?
Un pool que crea hilos nuevos según sea necesario y reutiliza los libres, eliminando los inactivos por 60s.
¿Qué es la 'Condición de Carrera' (Race Condition)?
Situación donde el resultado depende del orden impredecible de ejecución de los hilos.
¿Qué es una variable atómica (AtomicInteger, etc.)?
Variables que usan instrucciones CPU (como CAS) para asegurar actualizaciones atómicas sin bloqueos.
¿Qué significa 'CAS' en concurrencia?
Compare-And-Swap (Comparar y Intercambiar), una primitiva básica de algoritmos lock-free.
¿Qué es la "Barrera de Memoria"?
Instrucción que obliga a la CPU a completar operaciones de memoria pendientes para asegurar visibilidad.
¿Qué es el algoritmo de Peterson?
Algoritmo clásico para exclusión mutua de dos procesos usando variables compartidas.
¿Cuál es la principal debilidad de la Región Crítica Condicional teórica?
La ineficiencia de evaluar la condición continuamente (re-evaluación).
¿Qué diferencia hay entre Callable y Runnable?
Callable puede devolver un resultado y lanzar excepciones
¿Qué hace 'shutdownNow()' en un Executor?
Intenta detener todas las tareas activas y devuelve una lista de las tareas pendientes de ejecutar.
¿Qué es un hilo 'Daemon'?
Un hilo de soporte que no impide que la JVM termine si solo quedan hilos de este tipo.
¿Cómo se define el factor de bloqueo (Cb)?
Tiempo de espera (I/O) dividido por el tiempo de CPU.
¿Qué es la concurrencia?
Capacidad de gestionar múltiples tareas que pueden solaparse en el tiempo.
¿Qué es el paralelismo?
Ejecución simultánea de múltiples tareas en diferentes núcleos o procesadores.
¿Qué es un 'Deadlock' (Interbloqueo)?
Estado donde dos o más hilos están bloqueados permanentemente esperando por recursos que el otro posee.
¿Qué es un 'CyclicBarrier'?
Sincronizador que permite que un conjunto de hilos esperen unos a otros en un punto común antes de continuar.
¿Qué técnica usa Java para evitar la re-lectura de variables en registros?
El uso de 'volatile' o bloques 'synchronized'.
¿Qué es una 'Sección Crítica Condicional'?
Una sección crítica que solo se ejecuta si se cumple una condición lógica específica.
¿Qué es el 'Deadlock Ignorance' (Algoritmo del Avestruz)?
Estrategia de ignorar el problema del interbloqueo si es muy poco frecuente.
¿Qué es un Monitor en C++ (std::condition_variable)?
Un mecanismo que requiere un mutex explícito para gestionar la exclusión mutua y la espera.
¿Qué es el 'Busy Waiting' (Espera Activa)?
Técnica donde un hilo comprueba repetidamente una condición, consumiendo CPU inútilmente.
¿Qué ventaja ofrece ReentrantLock sobre synchronized?
Permite intentos de adquisición con timeout, cerrojos justos y múltiples condiciones.
¿Qué es la 'Starvation' (Inanición)?
Cuando un hilo nunca recibe los recursos necesarios para progresar porque otros se los quitan.
¿Qué es un 'Semaphore(n, true)' en Java?
Un semáforo con política de equidad (fairness), los hilos adquieren en orden FIFO.
¿Qué es la Memoria Transaccional Software (STM)?
Enfoque donde las secciones críticas se tratan como transacciones de base de datos (atómicas, aisladas).
¿Qué es un 'Monitor Híbrido'?
Aquel que combina características de diferentes modelos (como los de C++ o Java con extensiones).
¿Para qué se usa el método 'interrupt()'?
Para avisar a un hilo que debe detenerse o cambiar su estado actual.
¿Qué excepción lanza wait() cuando un hilo es interrumpido?
InterruptedException.
¿Qué es un 'ReadWriteLock'?
Cerrojo que permite múltiples lectores simultáneos pero solo un escritor exclusivo.
¿Qué es el 'RMI Registry'?
Un servicio de nombres donde los servidores registran sus objetos remotos para que los clientes los encuentren.
¿Qué significa que un sistema sea Determinista?
Que para las mismas entradas siempre produce el mismo resultado, sin importar el orden de ejecución.
¿Qué es el 'Thread-Local Storage'?
Variables que son locales a cada hilo, evitando conflictos de acceso.
¿Qué es la 'Escalabilidad' en concurrencia?
La capacidad de un sistema para mejorar su rendimiento al añadir más recursos (CPUs).
¿Qué es un sistema SISD?
Single Instruction, Single Data (Un solo procesador, un solo flujo de datos).
¿Qué es un sistema MIMD?
Multiple Instruction, Multiple Data (Varios procesadores ejecutando diferentes instrucciones sobre diferentes datos).
¿En qué se basa el éxito de los hilos virtuales de Loom?
En que el bloqueo de un hilo virtual no bloquea el hilo nativo de la OS (Carrier thread).
¿Qué es 'Naming.rebind()' en RMI?
Método para registrar o actualizar la asociación de un nombre con un objeto remoto.
¿Qué es el 'AtomicReference'?
Clase que permite actualizar de forma atómica una referencia a un objeto.
¿Qué es el 'Fork/Join Framework'?
Framework diseñado para tareas que se pueden dividir en sub-tareas más pequeñas de forma recursiva.
¿Qué es la coherencia de caché?
Mecanismo que asegura que los cambios en la memoria por una CPU sean visibles para las demás.
¿Qué ocurre si no llamas a 'shutdown()' en un ExecutorService?
El programa puede no terminar nunca porque los hilos del pool siguen vivos.
¿Qué es el 'Double-Checked Locking'?
Antipatrón (o patrón corregido con volatile) para inicializar objetos de forma perezosa y segura.
¿Qué es un 'CopyOnWriteArrayList'?
Lista segura para hilos donde cada modificación crea una copia nueva del array subyacente.
¿Qué es la 'Prioridad Heredada'?
Protocolo para evitar la inversión de prioridad donde el hilo de baja prioridad "hereda" la prioridad del alto.
¿Qué es 'std::mutex' en C++?
La primitiva básica de exclusión mutua en la librería estándar de C++.
¿Cuál es el propósito de 'Thread.sleep()'?
Pausar la ejecución del hilo actual por un tiempo determinado, sin liberar cerrojos.
¿Qué es un 'BlockingQueue'?
Una cola que bloquea al hilo que intenta insertar si está llena o al que intenta extraer si está vacía.
¿Qué es el 'Context Switch'?
El proceso de guardar el estado de un hilo/proceso y cargar el de otro para su ejecución.
¿Qué es la programación asíncrona?
Modelo donde el hilo no espera a que termine una tarea, sino que recibe un aviso cuando está lista.