Programación Concurrente y Distribuida
42 Questions
7 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áles de las siguientes instrucciones pueden ejecutarse concurrentemente?

  • x=x+1 y x=a+1
  • x=y+a y y=1 (correct)
  • x=x+1 y y=1 (correct)
  • x=a+1 y y=1 (correct)

¿Por qué x=x+1 y x=a+1 no pueden ejecutarse concurrentemente?

  • Pueden ejecutarse en diferentes hilos.
  • Ambas instrucciones son independientes.
  • Ambas escriben en la misma variable. (correct)
  • No tienen ninguna dependencia.

¿Cuáles de estas instrucciones no pueden ejecutarse al mismo tiempo debido a conflictos en la escritura?

  • y=1 y x=a+1
  • x=y+a y y=1
  • x=x+1 y x=y+a (correct)
  • x=a+1 y y=1

¿Cuál es una condición clave para que se puedan ejecutar instrucciones concurrentemente?

<p>Ambas instrucciones deben escribir en variables diferentes. (D)</p> Signup and view all the answers

¿Qué instrucciones permiten leer y escribir sin conflictos según las Condiciones de Bernstein?

<p>x=a+1 y y=1 (C), y=1 y x=a+1 (D)</p> Signup and view all the answers

¿Cuál es un problema que puede surgir cuando dos funciones intentan actualizar la misma variable de manera concurrente?

<p>Una función puede inhabilitar a la otra y causar inanición. (D)</p> Signup and view all the answers

¿Por qué el resultado de un programa concurrente puede considerarse indeterminado?

<p>El resultado depende del camino y velocidad de ejecución de los procesos. (C)</p> Signup and view all the answers

¿Es posible implementar programación concurrente en arquitecturas de hardware monoprocesador?

<p>Sí, pero solo si se utilizan técnicas de interleaving. (C)</p> Signup and view all the answers

¿Cuál es la razón principal por la cual es importante garantizar la equidad en los procesos concurrentes?

<p>Para evitar que un proceso monopolice los recursos y cause inanición en otros. (B)</p> Signup and view all the answers

Cuando dos funciones que actualizan la misma variable se ejecutan concurrentemente, ¿qué es lo que debe evitarse?

<p>Que ambas funciones escriban en la variable simultáneamente. (A)</p> Signup and view all the answers

¿Qué son las instrucciones atómicas en programación concurrente?

<p>Instrucciones cuya ejecución es indivisible. (D)</p> Signup and view all the answers

¿Por qué es fundamental la atomicidad en operaciones?

<p>Para mantener la integridad y coherencia de los datos. (C)</p> Signup and view all the answers

¿Qué puede ocurrir si no se utilizan operaciones atómicas en programación concurrente?

<p>Pueden surgir condiciones de carrera que afecten la ejecución. (A)</p> Signup and view all the answers

¿Qué significa que una operación sea atómica?

<p>Que es indivisible y se ejecuta como una sola unidad. (C)</p> Signup and view all the answers

¿Cuál es uno de los principales problemas que las operaciones atómicas ayudan a mitigar?

<p>Condiciones de carrera. (B)</p> Signup and view all the answers

¿Qué asegura la ejecución atómica de un conjunto de instrucciones?

<p>Que no hay intervención de otros subprocesos durante su ejecución. (C)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe mejor las operaciones atómicas?

<p>Son unidades de trabajo indivisibles y coherentes. (C)</p> Signup and view all the answers

¿Qué resultado se espera de una ejecución atómica?

<p>El resultado siempre será el mismo independientemente de la interfoliación. (C)</p> Signup and view all the answers

¿Cuál es la principal dificultad de los programas concurrentes?

<p>La interfoliación puede llevar a una gran cantidad de trazas irrepetibles. (D)</p> Signup and view all the answers

¿Qué garantiza la corrección de un algoritmo en programación concurrente?

<p>Que se cumplen las invariantes antes y después de su ejecución. (D)</p> Signup and view all the answers

¿Cómo se define una invariante en el contexto de la programación concurrente?

<p>Es una condición que puede ser falsa una vez que se establece el bloqueo. (B)</p> Signup and view all the answers

¿Cuál es la función de la declaración assert() en relación a las invariantes?

<p>Probar el invariante durante la ejecución del código. (C)</p> Signup and view all the answers

¿Qué característica esencial debe cumplir un sistema para ser considerado correcto en programación concurrente?

<p>Exclusión mutua en ciertas zonas. (C)</p> Signup and view all the answers

¿Qué sucede con el invariante al usar la función cond_wait()?

<p>El invariante no se conserva y debe reevaluarse después. (B)</p> Signup and view all the answers

¿Qué significa la afirmación 'la imposibilidad de cohabitar en la misma zona' en el contexto de los sistemas concurrentes?

<p>Que una zona de recursos compartidos debe ser protegida. (B)</p> Signup and view all the answers

¿Qué condición se asocia a las variables de condición en programación concurrente?

<p>Tienen una invariante que es la condición misma. (C)</p> Signup and view all the answers

¿Cuál de las siguientes define correctamente el apalazamiento indefinido (starvation)?

<p>Un estado donde un programa puede avanzar pero no recibe recursos. (A)</p> Signup and view all the answers

¿Qué propiedad de vivacidad se refiere a la imposibilidad de un proceso de obtener los recursos necesarios para finalizar su tarea?

<p>Interbloqueo (C)</p> Signup and view all the answers

La propiedad de equidad que garantiza que el primer proceso en hacer la petición será el primero en ser servido se llama:

<p>FIFO típica de cola (A)</p> Signup and view all the answers

Entre las siguientes opciones, ¿cuál representa un ejemplo de bloqueo activo (livelock)?

<p>Conjuntos de procesos que cambian continuamente de estado sin progreso. (C)</p> Signup and view all the answers

¿Qué describe el término interbloqueo activo?

<p>Cuando un proceso ejecuta instrucciones sin hacer ningún progreso. (C)</p> Signup and view all the answers

¿Qué significa una política de planificación que resulta en apalazamiento indefinido?

<p>Asignar siempre prioridad al mismo proceso, evitando que otros avancen. (B)</p> Signup and view all the answers

La equidad débil asegura que:

<p>Eventualmente un proceso que pide continuamente será atendido. (C)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe mejor la inanición?

<p>Un grupo de procesos que nunca progresan debido a la falta de tiempo de procesamiento. (A)</p> Signup and view all the answers

¿Qué representa la exclusión mutua en programación concurrente?

<p>Recursos que deben ser accedidos por un solo proceso a la vez. (D)</p> Signup and view all the answers

El concepto de interbloqueo no se refiere a:

<p>Un límite temporal en la ejecución de procesos. (A)</p> Signup and view all the answers

¿Cuál de estas afirmaciones describe mejor una propiedad de equidad fuerte?

<p>Un proceso que hace solicitudes infinitas será finalmente atendido. (D)</p> Signup and view all the answers

¿En qué situación debe un proceso esperar a que ocurra un evento determinado antes de poder avanzar?

<p>Condición de sincronización. (B)</p> Signup and view all the answers

En el contexto del juego del pañuelo, ¿qué representa el interbloqueo?

<p>Cuando el juez y los jugadores no pueden avanzar debido a una dependencia mutua. (B)</p> Signup and view all the answers

¿Cuál es un ejemplo de un interbloqueo activo en el juego del pañuelo?

<p>Jugadores que simulan agarrar el pañuelo pero no lo hacen. (C)</p> Signup and view all the answers

¿Qué sucede si el juez nunca dice el número de un jugador en el contexto del juego del pañuelo?

<p>Los jugadores entran en inanición. (C)</p> Signup and view all the answers

¿Qué sucede en un escenario de interbloqueo?

<p>Los procesos esperan indefinidamente unos por otros. (D)</p> Signup and view all the answers

Flashcards

Interbloqueo activo (livelock)

Un sistema ejecuta instrucciones sin progreso, como un bucle infinito.

Inanición

Un grupo de procesos no avanza porque no se les asigna tiempo de procesador.

Exclusión mutua

Solo un proceso puede acceder a un recurso a la vez. Otros procesos deben esperar.

Condición de sincronización

Un proceso espera un evento para avanzar y no puede hacerlo antes.

Signup and view all the flashcards

Interbloqueo

Un proceso espera que otro libere un recurso, pero esta espera nunca termina.

Signup and view all the flashcards

Interbloqueo activo en el ejemplo del pañuelo

Los jugadores simulan coger el pañuelo, pero nunca lo hacen.

Signup and view all the flashcards

Inanición en el ejemplo del pañuelo

El juez nunca dice el número de un jugador.

Signup and view all the flashcards

Interbloqueo pasivo (deadlock o abrazo mortal)

Se produce cuando un proceso se bloquea esperando un evento que no se va a producir.

Signup and view all the flashcards

Corrección

En programación concurrente, se refiere a que un programa cumple los criterios de satisfacción para resolver un problema.

Signup and view all the flashcards

Invariante

Una condición o relación que siempre es verdadera antes y después de ejecutar un algoritmo.

Signup and view all the flashcards

Invariante Concurrente

Una invariante en un contexto concurrente se cumple cuando se establece el bloqueo.

Signup and view all the flashcards

Invariante de Bloqueo

Una invariante que se cumple cuando se establece un bloqueo, pero no es necesariamente válida durante la ejecución del hilo.

Signup and view all the flashcards

Seguridad

Un conjunto de características que deben cumplirse para que un sistema concurrente sea considerado correcto.

Signup and view all the flashcards

Invariante de Variable de Condición

Las variables de condición tienen una invariante que es la condición misma.

Signup and view all the flashcards

Declaración Assert

Comprueba si la invariante se cumple en un punto específico del código.

Signup and view all the flashcards

Vivacidad

Se refiere a la capacidad de un programa concurrente para avanzar de forma útil y constructiva.

Signup and view all the flashcards

Bloqueo activo (LiveLock)

Un conjunto de procesos que ejecutan continuamente acciones que no llevan al progreso deseado. Los procesos se ejecutan de forma continua, sin avanzar hacia una solución.

Signup and view all the flashcards

Aplazamiento indefinido (Starvation)

Un estado donde un programa, a pesar de tener la capacidad de avanzar, no puede obtener los recursos necesarios para continuar. Puede ocurrir por falta de tiempo de procesador o por prioridades de sincronización desfavorables.

Signup and view all the flashcards

Interbloqueo (Deadlock)

Se produce cuando los procesos se encuentran mutuamente bloqueados, esperando recursos que otros procesos también necesitan. Ningún proceso puede avanzar y la ejecución se detiene.

Signup and view all the flashcards

Equidad

Un enfoque para gestionar el acceso a recursos asegurando que todos los procesos tengan una oportunidad justa de utilizar los recursos.

Signup and view all the flashcards

Equidad Débil

Una versión de equidad donde, en algún momento, cualquier proceso que solicita un recurso lo recibirá.

Signup and view all the flashcards

Equidad Fuerte

Una versión de equidad donde, a largo plazo, un proceso que solicita recursos infinitamente, recibirá el recurso de manera periódica.

Signup and view all the flashcards

Equidad Lineal

Una versión de equidad donde la frecuencia a la que un proceso recibe un recurso es al menos tan rápida como dos veces la frecuencia a la que otro proceso lo recibe.

Signup and view all the flashcards

Programación Concurrente

La ejecución simultánea de dos o más procesos o hilos de ejecución en un sistema informático.

Signup and view all the flashcards

Programa Indeteminista

Un programa es indeterminista si su resultado depende del orden en que se ejecutan las instrucciones de varios procesos.

Signup and view all the flashcards

Programación Concurrente en CPU Monoprocesador

Sí, aunque con un solo procesador, se pueden ejecutar procesos de forma concurrente mediante técnicas de multitarea o multihilo.

Signup and view all the flashcards

Interfoliación

En computación, la interfoliación se refiere al entrelazamiento de las instrucciones de diferentes procesos o hilos que se ejecutan de forma simultánea. Es decir, diferentes procesos o hilos se intercambian el uso de la CPU o recursos compartidos, lo que puede dar lugar a resultados inesperados si no se maneja correctamente.

Signup and view all the flashcards

Instrucciones Atómicas

Las instrucciones atómicas son aquellas que se ejecutan como una sola unidad indivisible. Esto significa que la operación no se puede interrumpir o interferir con otras operaciones concurrentes. Las instrucciones atómicas garantizan que las operaciones se ejecuten de forma completa y coherente, incluso en presencia de otros procesadores.

Signup and view all the flashcards

Operación Atómica

Una operación atómica es un conjunto de instrucciones que se ejecutan como una sola operación completa y coherente. Se garantiza que la operación se complete sin intervención de otros procesos o subprocesos concurrentes. Las operaciones atómicas son esenciales para garantizar la integridad y coherencia de los datos en sistemas concurrentes.

Signup and view all the flashcards

Importancia de la Atomicidad

Las operaciones atómicas son cruciales para la programación concurrente porque ayudan a prevenir las condiciones de carrera. Las condiciones de carrera ocurren cuando varios procesos o hilos intentan acceder a un recurso compartido simultáneamente, lo que puede llevar a resultados impredecibles e inconsistentes.

Signup and view all the flashcards

Acceso Mutuamente Excluyente

Las operaciones atómicas permiten el acceso a recursos compartidos de forma mutuamente excluyente. Esto significa que solo un proceso o hilo puede acceder al recurso compartido en un momento dado, evitando así conflictos y manteniendo la integridad de los datos.

Signup and view all the flashcards

Mantenimiento de Coherencia de Datos

Las operaciones atómicas se utilizan para prevenir la corrupción de datos y mantener la coherencia en sistemas concurrente. Evita que los datos se modifiquen incorrectamente cuando varios hilos o procesos intentan acceder o modificarlos simultáneamente.

Signup and view all the flashcards

Condiciones de Bernstein para ejecución concurrente

Dos conjuntos de instrucciones (Si y Sj) pueden ejecutarse simultáneamente sin afectar a la integridad de los datos. Para ello, ninguna instrucción debe escribir en una variable que la otra esté leyendo o escribiendo.

Signup and view all the flashcards

Independencia en las entradas (Bernstein)

Las variables usadas por un grupo de instrucciones no son afectadas por las variables usadas por otro grupo. Se considera que, para cada variable, solo una instrucción puede leer o escribir.

Signup and view all the flashcards

Independencia en las salidas (Bernstein)

Las variables modificadas por un conjunto de instrucciones no se comparten con otro conjunto. Una instrucción solo afecta a sus propias variables de salida.

Signup and view all the flashcards

No conflicto en la escritura (Bernstein)

Un conjunto de instrucciones no puede escribir en la misma variable que utiliza otro conjunto. Se garantiza que no hayan conflictos en la modificación de las variables.

Signup and view all the flashcards

Ejecución concurrente de (a) y (b)

Las instrucciones (a) y (b) pueden ejecutarse simultáneamente porque no comparten variables que se leen y/o se escriben.

Signup and view all the flashcards

Study Notes

Programación Concurrente y Distribuida

  • El tema abarca conceptos básicos de programación concurrente.
  • La presentación está diseñada por Alfonso Antolínez García.
  • Se definen conceptos como abstracción, interfoliación (intercalación, mezclado), atomicidad, corrección, seguridad, vivacidad y equidad.

Computación en Sistemas Distribuidos

  • Se habla de conceptos básicos de programación concurrente.

Programación Concurrente y Distribuida - Conceptos Básicos

  • Abstracción: Capacidad de aislar y encapsular la información del diseño y la ejecución de un sistema, con enfoque en encapsulamiento para sistemas complejos.
  • Interfoliación (Intercalación): Es el estudio de la ejecución interfoliada (entrelazada) de instrucciones atómicas en procesos secuenciales que se ejecutan simultáneamente.
    • Interfoliar se equipara a mezclar.
    • Un programa concurrente consta de un conjunto de procesos secuenciales que se ejecutan simultáneamente.
    • Supuestos:
      • procesos en una misma computadora/cpu separadas
      • 2 tipos de interacciones entre procesos:
        • Contención: competición por un recurso o acceso a la misma información
        • Comunicación: intercambio de información, permite la sincronización
  • Atomicidad: Instrucciones que no se pueden interrumpir, son indivisibles y se ejecutan ininterrumpidamente como una sola unidad de trabajo.
  • Corrección: Los programas concurrentes son complejos debido a la interfoliación. Para conseguir la corrección se requieren invariantes, sentencias iniciales que deben cumplirse antes y después de la ejecución del algoritmo. Un algoritmo correcto mantiene estas condiciones sin cambios, lo que permite verificar la corrección.
  • Invariantes: Condición o relación que siempre es verdadera, especialmente cuando se activa el bloqueo asociado al algoritmo. El código que manipula el bloqueo debe restablecer la invariante antes de soltar el bloqueo.
  • Seguridad: Características esenciales para el correcto funcionamiento de un sistema. La exclusión mutua es la imposibilidad de cohabitar en la misma zona, ej. cruce de carreteras. El interbloqueo (bloqueo permanente) es la situación cuando un conjunto de procesos permanece bloqueado debido a que compiten por recursos o se comunican entre sí. La inanición es un proceso que nunca participa de los recursos, aunque pueda hacerlo teóricamente.
  • Vivacidad: Propiedades de programas concurrentes que aseguran que el programa evolucionará al estado deseado con el tiempo. Los procesos deben ser capaces de avanzar en la ejecución y hay ejemplos como el aplazamiento indefinido (starvation) y el interbloqueo.
  • Equidad: Propiedad relacionada con la distribución de recursos, se asegura una distribución justa para las demandas de los procesos. Clases: débil (si una petición se hace infinitamente, al final se satisfará), fuerte (garantiza que si un proceso hace infinitas peticiones, todas serán satisfechas), lineal (cada petición es satisfecha antes de que a otro proceso se le satisfagan varias). -FIFO (First-In, First-Out): Ejemplo de equidad, primero en llegar, primero en ser atendido.
  • Sincronización de procesos: En sistemas monoprocesador, la sincronización se realiza mediante variables compartidas. Los procesos manipulan estas variables para comunicarse e intercambiar información.
  • Tipos de arquitecturas: Se clasifican como fuertemente acopladas (comunican mediante variables de memoria compartida como un bus) y débilmente acopladas (cada procesador opera con su memoria local con comunicación mediante paso de mensajes)

Preguntas y Ejemplos

  • Se plantean preguntas sobre conceptos y ejemplificaciones para clarificar las propiedades y el funcionamiento de programas concurrentes.
    • Ejemplos prácticos como el juego del pañuelo para visualizar condiciones como interbloqueo e inanición.
    • Cálculos y ejemplos de programas con potencial concurrencia, analizando las posibles situaciones de bloqueo e indeterminación.

Studying That Suits You

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

Quiz Team

Related Documents

Description

Este cuestionario cubre los conceptos básicos de la programación concurrente y distribuida. Abarca temas como abstracción, interfoliación, atomicidad y más. Diseñado para ayudar a los estudiantes a comprender los fundamentos de sistemas complejos.

More Like This

Nichtsequentielle Programmierung
40 questions

Nichtsequentielle Programmierung

IrreplaceableEmerald6900 avatar
IrreplaceableEmerald6900
Semaphores in Concurrent Programming
15 questions
Programación Concurrente y Distribuida
24 questions
Use Quizgecko on...
Browser
Browser