Desafíos y estrategias en sistemas concurrentes
48 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de las siguientes opciones describe con mayor precisión el desafío fundamental en los sistemas concurrentes?

  • Coordinar el acceso a recursos compartidos y la sincronización de procesos para evitar condiciones de carrera e inconsistencias en los datos. (correct)
  • Garantizar la ejecución secuencial de tareas para evitar conflictos, sacrificando el potencial de paralelismo.
  • Maximizar la utilización de la CPU minimizando el tiempo de inactividad, independientemente de la corrección de los resultados.
  • Implementar interfaces gráficas de usuario interactivas que permitan la monitorización en tiempo real del rendimiento del sistema.

En el contexto de sistemas distribuidos, ¿cuál de las siguientes afirmaciones representa un desafío único en comparación con los sistemas concurrentes?

  • La necesidad de gestionar eficientemente el acceso a la memoria compartida entre múltiples hilos de ejecución.
  • La complejidad inherente a la programación de algoritmos que explotan el paralelismo a nivel de instrucción.
  • La dificultad de asegurar la exclusión mutua en el acceso a recursos críticos dentro de un único proceso.
  • La latencia variable y la potencial falta de fiabilidad de la red de comunicación entre los nodos del sistema. (correct)

¿Qué implicación tiene la granularidad de la concurrencia en el rendimiento de un sistema concurrente?

  • El rendimiento se maximiza al usar una granularidad que minimice la contención de memoria caché.
  • La granularidad no afecta el rendimiento, ya que este depende únicamente de la velocidad del procesador y la cantidad de memoria disponible.
  • Una granularidad gruesa reduce la sobrecarga de gestión, pero puede limitar el paralelismo y la utilización de recursos. (correct)
  • Una granularidad fina siempre mejora el rendimiento al maximizar el paralelismo, independientemente de la sobrecarga de gestión.

¿Cuál de las siguientes estrategias es más adecuada para mitigar los efectos de la contención en memoria compartida en sistemas concurrentes?

<p>Utilizar estructuras de datos inmutables y técnicas de copia al escribir para reducir la necesidad de sincronización. (D)</p> Signup and view all the answers

En el contexto de la sincronización en memoria compartida, ¿cuál es el riesgo principal asociado con el uso excesivo de bloqueos (locks)?

<p>Aumento de la probabilidad de <strong>interbloqueo (deadlock)</strong> y reducción del rendimiento debido a la contención. (C)</p> Signup and view all the answers

¿Cuál de las siguientes describe mejor la diferencia entre un semáforo binario y un mutex?

<p>Un semáforo binario puede ser liberado por cualquier hilo, mientras que un mutex solo puede ser liberado por el hilo que lo adquirió. (D)</p> Signup and view all the answers

Considerando el problema de los filósofos cenando, ¿cuál de las siguientes soluciones NO previene el interbloqueo?

<p>Asignar un número aleatorio a cada filósofo que determina el tiempo que esperará para tomar un tenedor antes de renunciar. (D)</p> Signup and view all the answers

En la gestión de concurrencia, ¿cuál es el impacto de la afinidad de hilos (thread affinity) en el rendimiento de un sistema?

<p>Puede mejorar el rendimiento al reducir la migración de hilos entre núcleos, aumentando la probabilidad de reutilizar datos en la caché. (D)</p> Signup and view all the answers

Considerando la Opción 1, donde la sentencia es begin a:= x+y; print(a) end, ¿qué condición adicional garantizaría que siempre se imprima el valor 10, asumiendo que inicialmente x+y==10?

<p>No se requiere ninguna condición adicional, siempre se imprimirá 10. (C)</p> Signup and view all the answers

En la Opción 2, la sentencia < a:= x+y; print(a); > se presenta entre corchetes angulares. ¿Qué implicación tiene el uso de estos corchetes en el contexto de concurrencia?

<p>Significa que la sentencia debe ser tratada como una sección crítica y ejecutarse atómicamente. (B)</p> Signup and view all the answers

Respecto a la atomicidad de la sentencia begin-end en la Opción 2, ¿cuál de las siguientes afirmaciones es correcta?

<p>La sentencia <code>begin-end</code> en la Opción 2 (entre corchetes) es atómica debido a la notación utilizada. (D)</p> Signup and view all the answers

En el contexto de la copia concurrente de un fichero f a otro g usando cobegin-coend, ¿cuál es el principal desafío para garantizar que el fichero g sea una copia exacta de f?

<p>Garantizar que los procesos concurrentes no lean el mismo ítem de <code>f</code> simultáneamente y mantener el orden correcto al escribir en <code>g</code>. (C)</p> Signup and view all the answers

Si múltiples procesos intentan escribir(g, x) concurrentemente, ¿qué mecanismo se necesita para asegurar la integridad de los datos en el archivo g?

<p>Un semáforo que proteja el acceso al archivo <code>g</code>. (A)</p> Signup and view all the answers

Al implementar la copia concurrente de archivos con cobegin-coend, ¿cómo se manejaría la condición fin(f) para asegurar que todos los procesos terminen correctamente?

<p>Se utiliza una variable compartida protegida por un mutex que indica si <code>fin(f)</code> es verdadero, permitiendo que los procesos terminen de manera coordinada. (B)</p> Signup and view all the answers

Supongamos que se divide la copia del archivo f en segmentos y se asigna cada segmento a un proceso diferente en el bloque cobegin-coend. ¿Qué problema podría surgir si los segmentos no se procesan en orden?

<p>El archivo <code>g</code> contendría los datos de <code>f</code> en un orden incorrecto. (C)</p> Signup and view all the answers

En el contexto de accesos concurrentes a archivos, ¿qué diferencia fundamental existe entre acceder al mismo archivo y acceder a archivos distintos?

<p>Acceder al mismo archivo requiere mecanismos de sincronización más complejos para evitar corrupción de datos, mientras que acceder a archivos distintos puede tener menos restricciones. (D)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe mejor el propósito de la instrucción v := leer(f) al comienzo del proceso CopiaSecuencial?

<p>Inicializa la variable <code>v</code> con el primer valor del archivo <code>f</code>, actuando como una 'lectura adelantada'. (C)</p> Signup and view all the answers

En el contexto de los programas concurrentes construidos con cobegin-coend y fork-join, ¿qué implicación tiene un grafo de precedencia con un camino crítico largo en el rendimiento del programa?

<p>Implica que la ejecución está limitada por la longitud del camino crítico, reduciendo el beneficio de la concurrencia. (C)</p> Signup and view all the answers

Considerando el fragmento de código concurrente que utiliza cobegin anidados, ¿cuál es la consecuencia principal de tener bloques cobegin dentro de otros bloques cobegin?

<p>Permite una mayor granularidad en la definición de las dependencias entre tareas. (A)</p> Signup and view all the answers

¿Cuál es la diferencia fundamental entre el uso de cobegin-coend y fork-join para la concurrencia en programación?

<p><code>cobegin-coend</code> define un número fijo de procesos concurrentes, mientras que <code>fork-join</code> permite una mayor flexibilidad en la creación y gestión de procesos. (A)</p> Signup and view all the answers

En un sistema de tiempo real que captura impulsos de un contador de energía eléctrica, ¿qué tipo de restricciones de tiempo son más críticas y por qué?

<p>Restricciones de tiempo duras (hard real-time), ya que la pérdida de un impulso podría llevar a una medición incorrecta y tener consecuencias económicas. (B)</p> Signup and view all the answers

Si se modifica el código CopiaSecuencial para que utilice acceso directo en lugar de secuencial, ¿cuál sería el principal beneficio y el principal desafío?

<p>Beneficio: acceso más rápido a cualquier parte del archivo. Desafío: necesidad de gestionar los indicadores de posición de lectura/escritura. (A)</p> Signup and view all the answers

¿Qué problema podría surgir al convertir un programa secuencial como CopiaSecuencial en un programa concurrente sin una planificación adecuada?

<p>Aumento en la probabilidad de deadlocks y condiciones de carrera. (D)</p> Signup and view all the answers

En el contexto de la concurrencia, ¿qué representa un grafo de precedencia y cómo se utiliza para optimizar la ejecución de un programa?

<p>Un grafo de precedencia representa las dependencias de datos entre las tareas y se utiliza para determinar el orden de ejecución óptimo para maximizar el paralelismo. (B)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe con mayor precisión el problema fundamental ilustrado por el programa concurrente dado, donde x se incrementa en procesos separados?

<p>A pesar de usar diferentes registros para el incremento, la actualización de la variable compartida <code>x</code> no es atómica, lo que podría resultar en una condición de carrera donde se pierden actualizaciones. (D)</p> Signup and view all the answers

Considerando el proceso P dado y la sentencia S ≡ z := i + 1, ¿qué afirmación describe mejor la atomicidad de S y su posible impacto en otros procesos concurrentes?

<p><code>S</code> es atómica porque la asignación de un valor a <code>z</code> se realiza en un solo paso, lo que significa que otros procesos no pueden observar estados intermedios. (A)</p> Signup and view all the answers

Dado el proceso P y la sentencia S ≡ z := 2 * x + j, ¿cuál es la principal preocupación con respecto a la atomicidad y la concurrencia?

<p>La sentencia no es atómica debido a la lectura de variables compartidas (<code>x</code>) y la variable local (<code>j</code>), seguida de una operación aritmética y una asignación, lo que puede llevar a inconsistencias si <code>x</code> es modificada concurrentemente por otro proceso. (D)</p> Signup and view all the answers

En un sistema concurrente, ¿cuál es la implicación más crítica de que una sección de código no sea atómica?

<p>Puede llevar a condiciones de carrera y resultados impredecibles debido a la intercalación de operaciones de diferentes hilos, comprometiendo la integridad de los datos. (C)</p> Signup and view all the answers

¿Qué estrategia de sincronización es más adecuada para asegurar la atomicidad de una operación de actualización compleja sobre una variable compartida en un entorno concurrente?

<p>Emplear semáforos para controlar el acceso simultáneo a la variable compartida, permitiendo que solo un hilo la modifique a la vez. (B)</p> Signup and view all the answers

En el contexto de la programación concurrente, ¿cómo afecta la granularidad de los bloqueos al rendimiento y la complejidad del código?

<p>Los bloqueos de grano fino mejoran el rendimiento al maximizar la concurrencia, pero aumentan la complejidad del código debido a la necesidad de gestionar múltiples bloqueos. (B)</p> Signup and view all the answers

¿Qué riesgo específico se introduce al utilizar bloqueos (locks) para asegurar la atomicidad en programas concurrentes, y cómo se puede mitigar?

<p>Los bloqueos pueden causar inanición (starvation) si un hilo nunca puede acceder al recurso, mitigado mediante políticas de asignación justas. (C)</p> Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor el problema del interbloqueo (deadlock) en sistemas concurrentes?

<p>Una situación en la que dos o más hilos están bloqueados indefinidamente, esperando mutuamente a que el otro libere un recurso. (B)</p> Signup and view all the answers

¿Cuál de las siguientes opciones describe con mayor precisión el tiempo de ejecución $P1$, donde dos instancias concurrentes de Sort se ejecutan en el mismo procesador?

<p>$P1 = 2(\frac{(2^{n-1})(2^{n-1} - 1)}{2}) + 2^n$ (D)</p> Signup and view all the answers

En el contexto del algoritmo paralelo, ¿cuál es la interpretación correcta de la expresión '$k(k-1)/2$'?

<p>Indica el número de iteraciones del bucle interno en el procedimiento <code>Sort</code> sobre un segmento de tamaño k. (C)</p> Signup and view all the answers

Si $S$ representa el tiempo que tarda la versión secuencial del algoritmo, y se define como $S = 2^{2n-1} - 2^{n-1} + 2^n$, ¿cómo se compara $S$ con $P1$ y $P2$ en términos de eficiencia?

<p>Es la menos eficiente, especialmente a medida que $n$ aumenta. (D)</p> Signup and view all the answers

¿Cuál es el tiempo de ejecución $P2$ si cada instancia de Sort se ejecuta en un procesador distinto?

<p>$P2 = \frac{(2^{n-1})(2^{n-1} - 1)}{2} + 2^n$ (A)</p> Signup and view all the answers

Considerando que el procedimiento Merge tarda $p$ unidades de tiempo en un vector con $p$ entradas, ¿qué implicación tiene esta afirmación en el rendimiento general del algoritmo paralelo?

<p>Representa una sobrecarga que afecta principalmente al algoritmo paralelo. (A)</p> Signup and view all the answers

¿Qué optimización podría reducir el tiempo total de ordenamiento en la versión paralela?

<p>Optimizar el procedimiento <code>Merge</code> para reducir su tiempo de ejecución. (B)</p> Signup and view all the answers

En el contexto de la función Copiar(escribir, leer, superior), ¿cuál es su propósito principal dentro del algoritmo de ordenamiento por mezcla?

<p>Mover elementos desde el vector original al vector auxiliar. (C)</p> Signup and view all the answers

¿Cuál es la principal diferencia en la complejidad temporal entre las versiones secuencial y paralela del algoritmo discutido, asumiendo un número suficiente de procesadores disponibles?

<p>La versión secuencial tiene una complejidad cuadrática, mientras que la paralela puede acercarse a una complejidad lineal. (D)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe con mayor precisión la lógica detrás de las líneas 7 y 8 en los procesos P0 y P1?

<p>Las líneas 7 y 8 implementan una forma de espera ocupada (busy-waiting) combinada con cesión temporal para evitar el interbloqueo. (C)</p> Signup and view all the answers

Considerando que tanto b0 como b1 son true, ¿cuál es la consecuencia más probable si la línea 7 en ambos procesos (P0 y P1) se comentara accidentalmente?

<p>La sección crítica será accedida de forma concurrente por ambos procesos, invalidando la exclusión mutua. (A)</p> Signup and view all the answers

¿Qué problema fundamental podría surgir en este código si la sección crítica es significativamente más larga para P0 que para P1?

<p>P1 experimentaría inanición, ya que P0 mantendría <code>b0</code> en <code>true</code> por más tiempo, impidiendo que P1 acceda a su sección crítica. (A)</p> Signup and view all the answers

Si se quisiera modificar el protocolo para dar prioridad a P1 sobre P0 cuando ambos intentan acceder a la sección crítica simultáneamente, ¿qué cambio sería más efectivo en las líneas existentes?

<p>Añadir una pausa aleatoria más larga en la línea 7 de P0 para que sea menos probable que vuelva a cerrar el paso inmediatamente. (D)</p> Signup and view all the answers

¿Qué implicación tendría cambiar el tipo de las variables b0 y b1 de boolean a un tipo entero con valores mayores a uno?

<p>Introduciría la necesidad de operaciones atómicas para modificar las variables, complicando el protocolo de entrada y salida. (A)</p> Signup and view all the answers

En un entorno donde los procesos P0 y P1 se ejecutan en núcleos de procesamiento separados pero comparten la misma memoria, ¿podría el retraso en la consistencia de la caché afectar la correcta ejecución de este protocolo?

<p>Sí, si un núcleo no ve inmediatamente la actualización de <code>b0</code> o <code>b1</code> realizada por el otro núcleo, podría entrar incorrectamente a la sección crítica. (D)</p> Signup and view all the answers

Analizando la estructura del código, ¿cuál es la principal desventaja del enfoque implementado en términos de eficiencia del procesador?

<p>El 'busy-waiting' en los bucles <code>while</code>, que consume ciclos de CPU innecesariamente mientras se espera que el otro proceso libere el acceso. (D)</p> Signup and view all the answers

Si este protocolo se utilizara en un sistema de tiempo real, ¿qué consideración adicional sería crucial para garantizar su aplicabilidad?

<p>Todas las anteriores. (D)</p> Signup and view all the answers

Flashcards

Sistemas Concurrentes

¿Qué son los sistemas concurrentes?

Sistemas Distribuidos

¿Qué son los sistemas distribuidos?

Memoria Compartida

Espacio de memoria accesible por múltiples hilos o procesos.

Sincronización

Problemas relacionados con el acceso simultáneo a recursos compartidos.

Signup and view all the flashcards

Exclusión Mutua

Mecanismo para proteger secciones críticas y evitar condiciones de carrera.

Signup and view all the flashcards

Interbloqueo (Deadlock)

Situación donde dos o más procesos se bloquean mutuamente, esperando recursos que otros poseen.

Signup and view all the flashcards

Inanición (Starvation)

Espera innecesaria de un proceso para acceder a un recurso, mientras otros procesos lo usan repetidamente.

Signup and view all the flashcards

Sección Crítica

¿Qué es una sección de código que accede a recursos compartidos?

Signup and view all the flashcards

Variable compartida

Variable compartida entre procesos concurrentes.

Signup and view all the flashcards

Sentencia atómica

Unidad indivisible de ejecución; se completa sin interrupción.

Signup and view all the flashcards

Asignación atómica

Asignación directa de un valor a una variable.

Signup and view all the flashcards

Traza de ejecución

Secuencia de estados que muestra la ejecución paso a paso de un proceso.

Signup and view all the flashcards

Condición de carrera

Potencial riesgo donde múltiples procesos acceden y modifican datos compartidos simultáneamente, resultando en resultados impredecibles.

Signup and view all the flashcards

Sentencia no atómica

Una sentencia que no es atómica, y por lo tanto puede ser interrumpida.

Signup and view all the flashcards

Estado accesible

Estado intermedio o punto en la ejecución de un proceso donde otros procesos pueden acceder y potencialmente modificar las variables compartidas.

Signup and view all the flashcards

Proceso secuencial

Un proceso que se ejecuta paso a paso, siguiendo una secuencia.

Signup and view all the flashcards

Variable local

Una variable local utilizada dentro de un proceso para almacenar datos temporalmente.

Signup and view all the flashcards

Bloque begin-end

Conjunto de sentencias 'begin' y 'end' que se ejecutan como una sola unidad.

Signup and view all the flashcards

Concurrencia

Ejecución simultánea de dos o más procesos o tareas.

Signup and view all the flashcards

Instrucción cobegin-coend

Una estructura para ejecutar bloques de código en paralelo.

Signup and view all the flashcards

Función leer(f)

Función que lee un ítem de un archivo.

Signup and view all the flashcards

Función fin(f)

Función que indica si se ha llegado al final de un archivo.

Signup and view all the flashcards

Procedimiento escribir(g, x)

Procedimiento que escribe un dato en un archivo.

Signup and view all the flashcards

Función Copiar

Función que copia elementos de un vector a otro.

Signup and view all the flashcards

Ts(k)

Tiempo que tarda el procedimiento Sort en un segmento de k entradas.

Signup and view all the flashcards

k(k-1)/2

Número de iteraciones en el bucle interno de 'Sort'.

Signup and view all the flashcards

Tiempo Secuencial (S)

Tiempo total de la versión secuencial de ordenamiento.

Signup and view all the flashcards

Procedimiento Merge

Combina dos sub-vectores ordenados en uno solo ordenado.

Signup and view all the flashcards

Tiempo Paralelo P1

Tiempo de la versión paralela con dos instancias de Sort en el mismo procesador.

Signup and view all the flashcards

Tiempo Paralelo P2

Tiempo de la versión paralela con cada instancia de Sort en un procesador diferente.

Signup and view all the flashcards

Comparación S, P1, P2

Evaluación de la eficiencia relativa de las versiones secuencial y paralela.

Signup and view all the flashcards

Copia Secuencial de Archivos

Proceso que copia secuencialmente el contenido de un archivo 'f' en un archivo 'g', leyendo y escribiendo de forma consecutiva.

Signup and view all the flashcards

cobegin-coend

Instrucciones que permiten ejecutar múltiples bloques de código (P1, P2, etc.) simultáneamente.

Signup and view all the flashcards

fork-join

Instrucciones que dan lugar a la creación de nuevos procesos (fork) y su posterior sincronización (join).

Signup and view all the flashcards

Grafos de Precedencia

Representaciones gráficas que muestran el orden en que se deben ejecutar las diferentes partes de un programa concurrente.

Signup and view all the flashcards

Programas Concurrentes

Fragmentos de código que se ejecutan al mismo tiempo, aprovechando la capacidad de procesamiento paralelo.

Signup and view all the flashcards

Captador de Impulsos

Dispositivo que detecta pulsos o señales y las transforma en datos que pueden ser procesados por un sistema.

Signup and view all the flashcards

Contador de Energía Eléctrica

Componente que contabiliza eventos o unidades, como la cantidad de energía eléctrica consumida.

Signup and view all the flashcards

Sistema de Tiempo Real

Sistema que debe responder a eventos dentro de un plazo de tiempo estricto y predecible.

Signup and view all the flashcards

b0

Variable booleana compartida que indica si P0 (Proceso 0) quiere acceder o está en la sección crítica.

Signup and view all the flashcards

b1

Variable booleana compartida que indica si P1 (Proceso 1) quiere acceder o está en la sección crítica.

Signup and view all the flashcards

Proceso P0/P1

Proceso que utiliza variables compartidas (b0, b1) para coordinar el acceso a la sección crítica. Intenta entrar en la sección crítica, cediendo temporalmente si el otro proceso también intenta entrar.

Signup and view all the flashcards

Protocolo de entrada

Parte del código donde un proceso solicita acceso a la sección crítica, indicando su intención mediante la variable booleana (b0 o b1).

Signup and view all the flashcards

Protocolo de salida

Parte del código donde un proceso libera el acceso a la sección crítica, estableciendo su variable booleana (b0 o b1) a falso.

Signup and view all the flashcards

Ceder temporalmente

Cuando ambos procesos intentan entrar en la sección crítica simultáneamente y se ceden el paso mutuamente, esperando que el otro avance.

Signup and view all the flashcards

Espera activa

Espera activa en un bucle vacío mientras otro proceso está en la sección crítica (o intenta entrar).

Signup and view all the flashcards

Ausencia de interbloqueo

Dos (o más) procesos bloqueados permanentemente, donde cada proceso está esperando por un recurso que otro posee, impidiendo que alguno avance. En este código, el interbloqueo no se produce gracias a la espera activa donde los procesos ceden temporalmente el uso del recurso.

Signup and view all the flashcards

Study Notes

Sistemas Concurrentes y Distribuidos: Enunciados de Problemas

  • Documento para el curso 2024-25 de la Universidad de Granada, en el Dpt. de Lenguajes y Sistemas Informáticos, ETSI Informática y de Telecomunicación
  • Contiene un conjunto de problemas sobre sistemas concurrentes y distribuidos organizados en cuatro temas principales:

Introducción

  • Incluye problemas básicos sobre concurrencia, como el análisis de fragmentos de código para identificar posibles valores resultantes de variables compartidas debido a la ejecución concurrente.
  • Aborda el problema de la copia concurrente de ficheros y la construcción de programas concurrentes que se ajusten a grafos de precedencia específicos.
  • Se presentan problemas sobre sincronización en tiempo real, utilizando variables compartidas y exclusión mutua.

Sincronización en Memoria Compartida

  • Explora problemas de exclusión mutua y soluciones clásicas como el algoritmo de Hyman, así como soluciones basadas en hardware como el uso de la instrucción swap.
  • Incluye problemas sobre semáforos, monitores y la implementación de soluciones para el problema de los lectores-escritores y variantes del problema de los filósofos comensales.
  • Se plantean problemas sobre la gestión de recursos compartidos, como cuentas de ahorros y la sincronización de procesos para acceder a estos recursos de manera segura.

Sistemas Basados en Paso de Mensajes

  • Se presentan problemas sobre el uso de paso de mensajes síncrono y asíncrono, la identificación y prevención de interbloqueos, y la implementación de patrones de comunicación como anillos de procesos.
  • Incluye problemas sobre el diseño de procesos controladores para la sincronización de procesos clientes, y el diseño de buffers para la comunicación entre productores y consumidores.
  • Se exploran problemas específicos como el del estanquero y los fumadores, y la sincronización de procesos para la impresión de datos en un orden específico.

Sistemas de Tiempo Real

  • Trata la planificación de tareas periódicas, incluyendo la determinación de si un conjunto de tareas es planificable utilizando esquemas de planificación cíclica y algoritmos como RMS (Rate Monotonic Scheduling).
  • Incluye problemas sobre la comprobación de la planificabilidad de conjuntos de tareas utilizando tests basados en el factor de utilización del tiempo del procesador, así como la construcción de cronogramas para diferentes algoritmos de planificación.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Description

Este cuestionario explora los desafíos fundamentales en sistemas concurrentes y distribuidos, incluyendo contención de memoria compartida y el uso de bloqueos. También aborda estrategias para mitigar estos problemas y prevenir interbloqueos, como la afinidad de hilos y soluciones al problema de los filósofos cenando.

More Like This

CAP Theorem
12 questions

CAP Theorem

AppreciableRhyme avatar
AppreciableRhyme
Algorithme de Chandy-Lamport - Quiz
29 questions
Use Quizgecko on...
Browser
Browser