Programación Concurrente y Distribuida

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 afirmaciones describe mejor un programa secuencial?

  • Ejecuta múltiples procesos simultáneamente.
  • Es un programa que siempre produce resultados inesperados.
  • Es correcto si produce el resultado esperado al finalizar. (correct)
  • No necesita propiedades de seguridad.

¿Qué propiedad garantiza que las secciones críticas se ejecuten de forma indivisible?

  • Sincronización
  • Equitatividad
  • Exclusión mutua (correct)
  • No Deadlock

¿Qué describe mejor la vivacidad parcial?

  • Algunos procesos están estancados indefinidamente. (correct)
  • Los procesos finalizan sin esperar.
  • El sistema se paraliza indefinidamente.
  • Todo el sistema realiza operaciones útiles.

¿Cuál de las siguientes situaciones representa un caso de Livelock?

<p>Los procesos solo realizan operaciones inútiles. (C)</p> Signup and view all the answers

¿Qué propiedad se relaciona con el avance constructivo en un sistema concurrente?

<p>No Livelock (D)</p> Signup and view all the answers

¿Cuál es un efecto negativo de la Starvation en un sistema concurrente?

<p>Algunos procesos no reciben atención sistemáticamente. (D)</p> Signup and view all the answers

Entre las siguientes opciones, ¿cuál no es un problema de programación concurrente?

<p>Sincronización efectiva (A)</p> Signup and view all the answers

¿Cuál de las siguientes no es una propiedad de seguridad de los sistemas concurrentes?

<p>Equitatividad (D)</p> Signup and view all the answers

¿Qué caracteriza a la computación concurrente?

<p>No hay comunicación ni coordinación entre procesos. (A)</p> Signup and view all the answers

¿Cuál es la principal diferencia entre computación paralela y concurrente?

<p>La computación paralela requiere múltiples CPUs. (C)</p> Signup and view all the answers

En el contexto de sistemas distribuidos, ¿qué implica la computación distribuida?

<p>Se ejecutan múltiples programas que interactúan para un cómputo colectivo. (C)</p> Signup and view all the answers

¿Qué no es cierto acerca de la computación concurrente?

<p>Todos los procesos requieren comunicación constante entre ellos. (C)</p> Signup and view all the answers

¿Qué proceso requiere comunicación entre los distintos programas?

<p>Computación distribuida. (C)</p> Signup and view all the answers

En la programación concurrente, ¿cómo se gestionan los recursos de CPU?

<p>Los procesos compiten por el acceso a una única CPU. (C)</p> Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor a la computación paralela?

<p>Permite ejecutar más de un proceso al mismo tiempo en múltiples CPUs. (D)</p> Signup and view all the answers

En computación concurrente, ¿qué sucede cuando varios procesos son ejecutados?

<p>Cada proceso recibe una porción de tiempo de procesamiento. (A)</p> Signup and view all the answers

¿Cuál es una característica de la programación concurrente?

<p>Las tareas no deben bloquearse, excepto para esperar el final de las subtareas. (D)</p> Signup and view all the answers

En un sistema secuencial, ¿cuál de las siguientes afirmaciones es correcta?

<p>El comportamiento es determinista y reproducible. (A)</p> Signup and view all the answers

¿Qué define mejor el indeterminismo en la programación concurrente?

<p>La ejecución puede dar resultados diferentes en cada ejecución con el mismo conjunto de datos. (C)</p> Signup and view all the answers

En qué aspecto difiere un sistema concurrente de uno secuencial?

<p>Los sistemas concurrentes tienen incertidumbre sobre el orden de ejecución. (A)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones es incorrecta sobre los sistemas concurrentes?

<p>La programación concurrente siempre garantiza que no habrá errores. (C)</p> Signup and view all the answers

¿Qué implica la sentencia 'fork' en programación concurrente?

<p>El inicio de una sub-tarea que se ejecuta independiente de la tarea principal. (B)</p> Signup and view all the answers

Las sub-tareas en programación concurrente deben:

<p>Ser capaces de ejecutarse de manera independiente. (A)</p> Signup and view all the answers

Una de las siguientes características NO corresponde a un sistema concurrente:

<p>Es predecible y sigue un orden fijo de ejecución. (B)</p> Signup and view all the answers

Flashcards

Programación secuencial

Un programa donde las instrucciones se ejecutan en secuencia y de forma ordenada. Cada paso del programa solo se ejecuta cuando el anterior ha terminado.

Programación concurrente

Un programa donde las instrucciones se ejecutan de forma no secuencial, es decir, hay múltiples tareas ejecutándose simultáneamente o entrelazadas.

Propiedades de seguridad

Conjunto de propiedades que garantizan que el sistema concurrente funcione correctamente y no llegue a un estado indeseable. Algunos ejemplos son la exclusión mutua y la sincronización.

Propiedades de vivacidad

Conjunto de propiedades que garantizan que el sistema concurrente avance y progrese correctamente. Algunos ejemplos son el no deadlock, el no livelock y la equitatividad.

Signup and view all the flashcards

Deadlock

Situación en la que varios procesos quedan bloqueados indefinidamente, esperando que otros procesos liberen recursos que nunca llegarán a liberar. Se produce por falta de vivacidad total o parcial.

Signup and view all the flashcards

Livelock

Situación en la que el sistema o parte de él realiza operaciones inútiles o no constructivas indefinidamente, sin llegar a un estado deseado. Se produce por falta de vivacidad total o parcial.

Signup and view all the flashcards

Equitatividad o Starvation

Situación donde hay procesos que son discriminados sistemáticamente y nunca se les permite ejecutar o acceder a recursos. Se produce por falta de vivacidad total o parcial.

Signup and view all the flashcards

Exclusión mutua

Garantizar que solo un proceso acceda a una sección de código crítica a la vez, evitando que diferentes procesos modifiquen datos compartidos al mismo tiempo.

Signup and view all the flashcards

Computación concurrente

Se refiere a la ejecución de varios procesos que parecen ocurrir al mismo tiempo, aunque en realidad cada proceso recibe pequeñas porciones de tiempo de CPU. Es decir, no se ejecutan realmente al mismo tiempo, sino en una secuencia rápida.

Signup and view all the flashcards

Computación paralela

Involucra la ejecución de varios procesos al mismo tiempo, usando múltiples procesadores o núcleos de CPU. Los procesos realmente trabajan simultáneamente, no en una secuencia rápida.

Signup and view all the flashcards

Computación distribuida

Un tipo de computación donde varios programas se ejecutan en diferentes sistemas informáticos conectados en red y se coordinan para realizar una tarea común. La información se intercambia entre los sistemas para completar el procesamiento.

Signup and view all the flashcards

Paralelismo

Un proceso que se divide en múltiples procesos más pequeños que se ejecutan en distintos CPUs. Este proceso acelera la ejecución, ya que se pueden realizar varios cálculos simultáneamente.

Signup and view all the flashcards

Hilos de ejecución

Una técnica de diseño de software que utiliza múltiples hilos de ejecución dentro de un mismo programa, mejorando la eficiencia y responsividad. Permite que se ejecuten diferentes tareas al mismo tiempo dentro del mismo programa.

Signup and view all the flashcards

Colaboración

Dos o más procesos trabajando en la misma tarea al mismo tiempo. Se necesita una coordinación entre los subprocesos para que funcionen correctamente.

Signup and view all the flashcards

Computación concurrente y distribuida: ¿cuál es la diferencia?

La computación concurrente implica ejecutar múltiples tareas al mismo tiempo, mientras que la computación distribuida involucra la ejecución de tareas en diferentes computadoras interconectadas.

Signup and view all the flashcards

Gráfico de precedencia: la representación del flujo

Un gráfico de precedencia es una representación visual que muestra el orden en que deben ejecutarse las diferentes tareas dentro de un proceso concurrente. Las tareas que dependen de otras aparecen más abajo en el gráfico.

Signup and view all the flashcards

Sentencias 'fork' y 'join': creación y sincronización de tareas

La sentencia 'fork' crea una nueva tarea, permitiendo que la ejecución del programa se bifurque en hilos separados. La sentencia 'join' hace que la tarea principal espere la finalización de todos los hilos secundarios antes de continuar.

Signup and view all the flashcards

Independencia de los subcálculos

Los subcómputos en una tarea concurrente deben ser independientes unos de otros. Esto significa que cada subtarea puede ejecutarse sin depender de la finalización de otras subtareas.

Signup and view all the flashcards

Creación dinámica de tareas

Las tareas en un programa concurrente pueden crearse dinámicamente durante la ejecución del programa. Esto permite una mayor flexibilidad y adaptabilidad en la gestión de las tareas.

Signup and view all the flashcards

No bloqueo de las tareas (excepto para espera)

Las tareas en programas concurrentes no deben bloquearse (deteniendo la ejecución) excepto cuando esperan la finalización de las subtareas. Esto asegura un flujo eficiente de la ejecución.

Signup and view all the flashcards

Diferencias entre sistemas secuenciales y concurrentes

En los sistemas secuenciales, el orden de ejecución de las instrucciones es predecible y el resultado final es siempre el mismo. En contraste, los sistemas concurrentes son no deterministas, lo que significa que el resultado puede variar significativamente debido a las múltiples tareas ejecutándose al mismo tiempo.

Signup and view all the flashcards

Indeterminismo en la programación concurrente

El indeterminismo surge en la programación concurrente debido a que el orden preciso en que las tareas se ejecutan puede variar. Esto puede llevar a resultados diferentes en diferentes ejecuciones del mismo programa.

Signup and view all the flashcards

Study Notes

Programación Concurrente y Distribuida

  • La programación concurrente implica ejecutar múltiples secuencias de operaciones en momentos superpuestos.
  • Se diferencia del paralelismo, que requiere múltiples CPUs para ejecutar las operaciones simultáneamente.
  • La concurrencia, a diferencia del paralelismo, no requiere múltiples CPUs.
  • Los procesos concurrentes se ejecutan en la misma instancia de tiempo y utilizan la CPU de forma intercalada.

Computación en Sistemas Distribuidos

  • La computación concurrente, paralela y distribuida son conceptos relacionados pero distintos en programación.
  • La computación concurrente trata de ejecutar múltiples tareas de forma superpuesta.
  • La computación paralela lo hace de manera simultánea, usualmente en máquinas con múltiples CPUs.
  • La computación distribuida ejecuta tareas en múltiples computadoras, comunicándose a través de una red.

Diferencia entre computación concurrente y distribuida

  • La computación concurrente se da en un mismo intervalo de tiempo, generalmente en un único procesador.
  • La computación distribuida ocurre en múltiples procesadores, conectadas a través de una red.

Computación Paralela

  • Los procesos paralelos se ejecutan simultáneamente.
  • La computación paralela por definición requiere múltiples CPUs.
  • En esta situación, más de un proceso concurrente puede ejecutarse simultáneamente.
  • No hay comunicación ni coordinación entre los avances de los procesos.

Concepto de Concurrencia

  • Un programa secuencial se caracteriza por ejecutar instrucciones de forma una tras otra.
  • Un programa concurrente se compone de dos o más programas secuenciales que se ejecutan simultáneamente o superpuestos.

Computación Concurrente vs. Computación Secuencial

  • En un programa secuencial, las instrucciones se ejecutan en un orden predefinido.
  • En un programa concurrente, el resultado final depende de la velocidad del código.
  • El comportamiento de un programa concurrente no es reproducible, debido a la indeterminación de la ejecución de instrucciones.

Condiciones de Bernstein

  • Las condiciones de Bernstein ayudan a determinar si dos conjuntos de instrucciones ($S$ y $S_1$) pueden ejecutarse concurrentemente sin que haya conflicto.
  • Las tres condiciones de Bernstein son:
    • $R(S) \cap W(S1) = \emptyset$
    • $W(S) \cap R(S1) = \emptyset$
    • $W(S) \cap W(S1) = \emptyset$

Grafos de Precedencia

  • Los grafos de precedencia muestran la dependencia entre sentencias en un programa concurrente.
  • Usan sentencias como par begin y par end, co begin y co end, fork y join para representar las relaciones entre tareas.
  • Las instrucciones con fork comienzan una tarea, y las con join esperan que las subtareas terminen.

Características de los Sistemas Concurrentes

  • Los sistemas concurrentes permiten que los sub-cómputos sean independientes, permitiendo una ejecución en paralelo.

  • Las subtareas se pueden crear en cualquier momento.

  • Los sistemas concurrentes son diferentes de los sistemas secuenciales. En los sistemas secuenciales, las instrucciones se ejecutan en un orden especifico. En los sistemas concurrentes el orden en que se ejecutan es indeterminado.

  • Son no deterministas, lo que significa que las ejecuciones repetidas sobre el mismo conjunto de datos pueden producir resultados diferentes.

Problemas en la Programación Concurrente

  • En la programación concurrente hay que considerarse:

    • Seguridad: las secciones críticas deben ejecutarse de forma indivisible (exclusión mutua).
    • Vivacidad: se deben evitar situaciones como deadlock (interbloqueo) y livelock (bucles).
  • Deadlock: ocurre cuando dos o más procesos se bloquean esperando un recurso que otro proceso posee.

  • Livelock: ocurre cuando dos o más procesos se bloquean aunque no están esperando por recursos.

  • Equitatividad (Starvation): procesos pueden ser discriminados sistemáticamente, impidiendo su avance.

Studying That Suits You

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

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser