0% encontró este documento útil (0 votos)
4 vistas6 páginas

Fundamentos de Programación Concurrente

La programación concurrente permite ejecutar múltiples tareas al mismo tiempo mediante el uso de hilos y técnicas como la sincronización y el bloqueo. Esto mejora el rendimiento de los programas, especialmente en sistemas multi-core. La programación concurrente tiene ventajas como un mejor uso de recursos y tiempos de respuesta más rápidos, pero también desafíos como asegurar la seguridad y evitar problemas de concurrencia.
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas6 páginas

Fundamentos de Programación Concurrente

La programación concurrente permite ejecutar múltiples tareas al mismo tiempo mediante el uso de hilos y técnicas como la sincronización y el bloqueo. Esto mejora el rendimiento de los programas, especialmente en sistemas multi-core. La programación concurrente tiene ventajas como un mejor uso de recursos y tiempos de respuesta más rápidos, pero también desafíos como asegurar la seguridad y evitar problemas de concurrencia.
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 PDF, TXT o lee en línea desde Scribd

P

PROGRAMACIÓN
CONCURRENTE
Tópicos avanzados de programación

27/03/2023
Alumno: José Luis Ramos Guerrero
Docente: Mariana Victoria García Portilla
Programación Concurrente
Concepto
La programación concurrente se refiere a la capacidad de un programa para
ejecutar varias tareas, en lugar de una sola tarea a la vez. Esto puede mejorar
significativamente el rendimiento y la eficiencia de los programas, especialmente en
sistemas multi-core o distribuidos.
Para programar de manera concurrente, se utilizan herramientas y técnicas
específicas, como:

• Hilos (threads): son pequeñas unidades de ejecución dentro de un programa


que pueden ejecutarse en paralelo. Los hilos comparten la memoria y los
recursos del programa, pero cada hilo tiene su propia pila de ejecución.
• Sincronización: es la técnica que permite coordinar el acceso de varios hilos
a los mismos recursos compartidos, evitando problemas de concurrencia
como la condición de carrera.
• Bloqueo: es la técnica que se utiliza para evitar que varios hilos accedan a
un recurso compartido al mismo tiempo. Se pueden utilizar diferentes tipos
de bloqueos, como mutex, semáforos o barreras.
• Comunicación: es la técnica que permite que los hilos se comuniquen entre
sí y compartan información. Se pueden utilizar diferentes mecanismos de
comunicación, como colas, canales o memoria compartida.
La programación concurrente puede ser muy poderosa, pero también puede ser
difícil de entender y depurar. Es importante comprender los conceptos
fundamentales de la concurrencia y utilizar herramientas y técnicas adecuadas para
evitar problemas como la condición de carrera o el bloqueo.
Características:

• Modelo apropiativo: Los hilos deben operar bajo la suposición de que su


ejecución puede verse interrumpida por el sistema operativo en cualquier
momento.
• Posibilidad de recursos compartidos: Diferentes hilos en un proceso pueden
acceder a la misma región de memoria, o descriptores de archivos comunes
(entre otros).
• Soporte directo al paralelismo: Se puede asumir con confianza que usar hilos
en un sistema multiprocesador lleva a una mayor utilización de esta
característica.

pág. 1
Ventajas y Desventajas
Ventajas

• Permite optimizar el uso de recursos en sistemas mono/multiprocesador.


• Fiable administración de los datos en sistemas con gran información
• Mejor aprovechamiento de la CPU
• Permite el desarrollo de aplicaciones que no se vean afectadas en tiempo
real
• Permite compartir recursos entre tareas lentas y tareas rápidas para que las
tareas lentas no retrasen mucho a las rápidas.
• Velocidad de ejecución.
• Menores tiempos de respuesta.
• Permite la implementación de programación reactiva
• Controlabilidad
• Disponibilidad de servicios
• Exclusión mutua: nunca más de un proceso está presente en una región
crítica
• Sin interbloqueo: ningún proceso se retrasa nunca a la espera de un evento
que no puede ocurrir

Desventajas

• Seguridad
• Consumos de recursos cuando hay excesos de hilos o procesos
• Dificultad de desarrollo.
• Dificultad de verificación.
• En programas con pocas instrucciones en más lento
• Si se aplica mal puede llevar a resultados erróneos.

pág. 2
Proceso
Un proceso no solamente es el código de un programa, un proceso tiene un
contador de programa el cual es un registro del computador que indica la dirección
de la siguiente instrucción que será ejecutada por el proceso, Pila de proceso Esta
contiene datos temporales tales como: Los parámetros de las funciones, direcciones
de retorno, variables locales , … , Sección de datos la cual contiene datos tales
como las variables locales, Heap: Cúmulo de memoria que es la memoria que se
asigna dinámicamente al proceso n tiempo de ejecución

Estados del Proceso


Cuando un proceso es ejecutado este cambia de estados, los estados que todo
proceso tiene por lo general son:
• Nuevo: El proceso se está creando.
• Corriendo: Se están ejecutando las instrucciones.
• Espera: El proceso está esperando que algún evento ocurra.
• Preparado: El proceso está esperando ser asignado al procesador.
• Terminado: El proceso a terminado la ejecución.

pág. 3
Ejemplo de Concurrencia
Imagina una aplicación de descarga de música, en la cual puedes descargar un
número determinado de canciones al mismo tiempo, cada canción es independiente
de la otra, por lo que la velocidad y el tiempo que tarde en descargarse cada una no
afectara al resto de canciones. Esto lo podemos ver como un proceso concurrente,
ya que cada descarga es un proceso totalmente independiente del resto.

Observa la imagen, cada descarga se procesa de forma separada, y al final a una


descarga no le importa el estado de las demás. Ya que cada descarga es una tarea
completamente diferente.
Dentro de un sistema operativo se pueden ejecutar muchos programas y/o procesos
al mismo tiempo y compartiendo la misma memoria. Esto se logra al
descomponerlos en subprocesos asignados a distintos núcleos dentro de un
procesador.

• Descargas
• Transmisión de datos
• Lectura de archivos
• Conexión a internet
• Manejo de drivers de
audio y video

pág. 4
Conclusión
En conclusión, la programación concurrente es un enfoque de programación que
implica la ejecución simultánea de múltiples procesos o hilos de ejecución en un
sistema. A través de la programación concurrente, se puede mejorar el rendimiento
y la eficiencia de un sistema, así como la capacidad de manejo de tareas múltiples.
En general, la programación concurrente es una herramienta poderosa para crear
aplicaciones más escalables, pero requiere un conocimiento sólido y un enfoque
cuidadoso para lograr buenos resultados.

Bibliografía
(s.f.). Obtenido de [Link] [Link]
programacion/progconcurrente/concurrente_teoria/[Link]

(s.f.). Obtenido de [Link]: [Link]


concurrente

(s.f.). Obtenido de [Link]: [Link]


concurrente/programacion-concurrente

pág. 5

También podría gustarte