[go: up one dir, main page]

0% encontró este documento útil (0 votos)
107 vistas4 páginas

Diferencias entre Concurrencia y Paralelismo

Un proceso representa la ejecución de un programa y puede estar en diferentes estados como preparado, en ejecución o bloqueado. La concurrencia permite realizar múltiples tareas aparentemente al mismo tiempo mediante la administración de procesos por el sistema operativo. La computación concurrente usa un solo procesador para tareas aparentemente simultáneas, mientras que la computación paralela usa múltiples procesadores para ejecutar tareas realmente al mismo tiempo.

Cargado por

Naby
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
107 vistas4 páginas

Diferencias entre Concurrencia y Paralelismo

Un proceso representa la ejecución de un programa y puede estar en diferentes estados como preparado, en ejecución o bloqueado. La concurrencia permite realizar múltiples tareas aparentemente al mismo tiempo mediante la administración de procesos por el sistema operativo. La computación concurrente usa un solo procesador para tareas aparentemente simultáneas, mientras que la computación paralela usa múltiples procesadores para ejecutar tareas realmente al mismo tiempo.

Cargado por

Naby
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

¿Qué es…?

Proceso: Un proceso es la ejecución de un programa, es decir, los datos e


instrucciones están cargados en la memoria principal, ejecutándose o
esperando a hacerlo.
Un proceso no tiene por qué estar siempre en ejecución. Puede pasar por
diferentes estados:
 Preparado: Un proceso preparado es un proceso que está preparado
para ejecutarse. Sólo le "falta" la CPU
 En Ejecución: Un proceso en ejecución es un proceso que "tiene"
CPU, se está ejecutando
 Bloqueado: Un proceso bloqueado está esperando que ocurra un
suceso antes de poder "usar" la CPU. Dicho suceso suele ser una
operación de Entrada / Salida: pulsar una tecla, leer de disco. Pero
también puede ser que esté esperando a que otro proceso haga algo.
Concurrencia: La concurrencia es la habilidad que tiene un computador de
realizar varias tareas a la vez y esta aparece cuando dos o más procesos
son contemporáneos. Un caso particular es el paralelismo (programación
paralela). Los procesos pueden “competir” o colaborar entre sí por los
recursos del sistema. Por tanto, existen tareas de colaboración y
sincronización.

Diferencia entre la computación


concurrente y paralela
La computación concurrente se refiere a la ejecución de múltiples tareas
de manera aparentemente simultánea, pero no necesariamente al mismo
tiempo. Estas tareas pueden intercalarse o superponerse en el tiempo, y
esta utiliza un modelo en el que las tareas se ejecutan en hilos de manera
independiente, y el sistema operativo las programa y gestiona para que
parezca que se ejecutan simultáneamente. Además, que requiere una
comunicación explícita y coordinación entre las tareas mediante
mecanismos como semáforos para evitar problemas como condiciones de
carrera.
Un claro ejemplo es un sistema operativo multitarea que ejecuta varios
programas en una sola CPU es un ejemplo de computación concurrente.
Mientras que la computación paralela implica la ejecución real simultánea
de múltiples tareas en hardware que tiene múltiples recursos de
procesamiento, como múltiples núcleos de CPU o múltiples procesadores.
Así mismo este se basa en un modelo en el que las tareas se dividen en
subprocesos o partes más pequeñas que se ejecutan en paralelo en
diferentes núcleos o procesadores. Sin olvidar que esta requiere menos
coordinación explícita entre las tareas, ya que se ejecutan verdaderamente
al mismo tiempo y pueden compartir datos más fácilmente.
Un ejemplo de esto seria un superordenador que realiza cálculos científicos
complejos aprovechando múltiples procesadores.
A resumidas cuentas la computación concurrente se basa en la apariencia
de ejecución simultánea de tareas mediante la administración del sistema
operativo, mientras que la computación paralela implica la ejecución real
simultánea de tareas en hardware con múltiples recursos de procesamiento.

Características de la programación
concurrente.
Existen dos modelos de programación concurrente:
Memoria compartida:
Los módulos concurrentes interactúan leyendo y escribiendo objetos
compartidos en la memoria:
 Dos procesadores o núcleos CPU en el mismo computador que
comparten la misma memoria física.
 Dos programas que se están ejecutando en el mismo ordenador que
comparten el sistema de ficheros y que están leyendo y escribiendo
en distintos archivos.
 Dos hilos (threads) de un programa codificado en Java que
comparten los mismos objetos.
Paso de mensajes:
Los módulos concurrentes interactúan enviándose mensajes entre sí a
través de un canal de comunicación. Los módulos mandan mensajes y los
mensajes entrantes a cada módulo se ponen en cola para su
procesamiento.
 Dos equipos que se están comunicando mediante una conexión de
red.
 Un navegador y un servidor web que se están comunicando para
mostrar una página web solicitada.
 Un cliente y un servidor de mensajería instantánea.
 Dos programas que se están ejecutando en el mismo computador
cuya entrada y salida han sido conectadas a través de una tubería, p.
ej. en Linux el comando ls | grep escrito en el terminal.
Los modelos de paso de mensajes y de memoria compartida tratan sobre
cómo se comunican los módulos concurrentes. Los módulos concurrentes
en sí son de dos tipos:
 Proceso: instancia de un programa en ejecución que está aislado de
otros procesos en la misma máquina. En particular, tiene su propia
sección privada de la memoria de la máquina.
 Hilo o thread: es un lugar de control dentro de un programa en
ejecución. Es como un lugar en el programa que se está ejecutando,
más la pila de llamadas a métodos que llevaron a ese lugar al que
será necesario volver.

Diferencia entre la programación


concurrente y programación secuencial
Programación concurrente:
1. Ejecución Concurrente: La programación concurrente implica la
ejecución simultánea de múltiples hilos o procesos. Cada hilo o
proceso puede realizar tareas independientes al mismo tiempo.
2. Mayor rendimiento: En sistemas multiprocesador o multinúcleo, la
programación concurrente puede aprovechar completamente el
hardware, lo que resulta en un mejor rendimiento.
3. Complejidad añadida: La programación concurrente es más
compleja que la secuencial, ya que requiere la gestión de la
concurrencia y la sincronización entre hilos o procesos.
4. Posibles problemas de concurrencia: La programación concurrente
puede enfrentar desafíos como condiciones de carrera, bloqueos y
problemas de sincronización, que deben ser abordados
adecuadamente para evitar errores.
5. Mejor respuesta a eventos en tiempo real: La programación
concurrente es útil para aplicaciones que deben responder a eventos
en tiempo real de manera eficiente, como aplicaciones multimedia o
sistemas distribuidos.
Programación secuencial:
1. Ejecución Lineal: En la programación secuencial, las instrucciones
se ejecutan de manera secuencial, una después de la otra, en un solo
hilo de ejecución. Esto significa que una instrucción debe completarse
antes de que la siguiente comience.
2. Sencillez: La programación secuencial es más simple de entender y
depurar, ya que no involucra la coordinación de múltiples hilos o
procesos.
3. Limitada a un solo núcleo: En sistemas con un solo núcleo de
procesamiento, la programación secuencial no aprovecha
completamente la capacidad de cómputo del hardware.
4. Problemas de concurrencia evitados: No es necesario preocuparse
por problemas de concurrencia, como condiciones de carrera o
bloqueos, ya que solo hay un hilo de ejecución.
En resumen, la programación secuencial es más simple y lineal,
adecuada para tareas simples o en sistemas de un solo núcleo, mientras
que la programación concurrente es más compleja pero puede
aprovechar el hardware multicore para un mejor rendimiento y es
esencial para aplicaciones que requieren respuestas en tiempo real o
tareas simultáneas.

También podría gustarte