Podcast
Questions and Answers
¿Cuál de las siguientes afirmaciones describe mejor un programa secuencial?
¿Cuál de las siguientes afirmaciones describe mejor un programa secuencial?
¿Qué propiedad garantiza que las secciones críticas se ejecuten de forma indivisible?
¿Qué propiedad garantiza que las secciones críticas se ejecuten de forma indivisible?
¿Qué describe mejor la vivacidad parcial?
¿Qué describe mejor la vivacidad parcial?
¿Cuál de las siguientes situaciones representa un caso de Livelock?
¿Cuál de las siguientes situaciones representa un caso de Livelock?
Signup and view all the answers
¿Qué propiedad se relaciona con el avance constructivo en un sistema concurrente?
¿Qué propiedad se relaciona con el avance constructivo en un sistema concurrente?
Signup and view all the answers
¿Cuál es un efecto negativo de la Starvation en un sistema concurrente?
¿Cuál es un efecto negativo de la Starvation en un sistema concurrente?
Signup and view all the answers
Entre las siguientes opciones, ¿cuál no es un problema de programación concurrente?
Entre las siguientes opciones, ¿cuál no es un problema de programación concurrente?
Signup and view all the answers
¿Cuál de las siguientes no es una propiedad de seguridad de los sistemas concurrentes?
¿Cuál de las siguientes no es una propiedad de seguridad de los sistemas concurrentes?
Signup and view all the answers
¿Qué caracteriza a la computación concurrente?
¿Qué caracteriza a la computación concurrente?
Signup and view all the answers
¿Cuál es la principal diferencia entre computación paralela y concurrente?
¿Cuál es la principal diferencia entre computación paralela y concurrente?
Signup and view all the answers
En el contexto de sistemas distribuidos, ¿qué implica la computación distribuida?
En el contexto de sistemas distribuidos, ¿qué implica la computación distribuida?
Signup and view all the answers
¿Qué no es cierto acerca de la computación concurrente?
¿Qué no es cierto acerca de la computación concurrente?
Signup and view all the answers
¿Qué proceso requiere comunicación entre los distintos programas?
¿Qué proceso requiere comunicación entre los distintos programas?
Signup and view all the answers
En la programación concurrente, ¿cómo se gestionan los recursos de CPU?
En la programación concurrente, ¿cómo se gestionan los recursos de CPU?
Signup and view all the answers
¿Cuál de las siguientes opciones describe mejor a la computación paralela?
¿Cuál de las siguientes opciones describe mejor a la computación paralela?
Signup and view all the answers
En computación concurrente, ¿qué sucede cuando varios procesos son ejecutados?
En computación concurrente, ¿qué sucede cuando varios procesos son ejecutados?
Signup and view all the answers
¿Cuál es una característica de la programación concurrente?
¿Cuál es una característica de la programación concurrente?
Signup and view all the answers
En un sistema secuencial, ¿cuál de las siguientes afirmaciones es correcta?
En un sistema secuencial, ¿cuál de las siguientes afirmaciones es correcta?
Signup and view all the answers
¿Qué define mejor el indeterminismo en la programación concurrente?
¿Qué define mejor el indeterminismo en la programación concurrente?
Signup and view all the answers
En qué aspecto difiere un sistema concurrente de uno secuencial?
En qué aspecto difiere un sistema concurrente de uno secuencial?
Signup and view all the answers
¿Cuál de las siguientes afirmaciones es incorrecta sobre los sistemas concurrentes?
¿Cuál de las siguientes afirmaciones es incorrecta sobre los sistemas concurrentes?
Signup and view all the answers
¿Qué implica la sentencia 'fork' en programación concurrente?
¿Qué implica la sentencia 'fork' en programación concurrente?
Signup and view all the answers
Las sub-tareas en programación concurrente deben:
Las sub-tareas en programación concurrente deben:
Signup and view all the answers
Una de las siguientes características NO corresponde a un sistema concurrente:
Una de las siguientes características NO corresponde a un sistema concurrente:
Signup and view all the answers
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.
Related Documents
Description
Este cuestionario explora los conceptos de programación concurrente y distribuida, incluyendo diferencias clave entre concurrencia, paralelismo y computación distribuida. Aprende cómo se ejecutan múltiples tareas y cómo interactúan diferentes sistemas. Ideal para estudiantes de informática y programación avanzada.