Logo Studenta

Tecnicas de programacion concurrente 1-introduccion

¡Este material tiene más páginas!

Vista previa del material en texto

Técnicas de Programación Concurrente I
Introducción
Ing. Pablo A. Deymonnaz
pdeymon@fi.uba.ar
Facultad de Ingeniería
Universidad de Buenos Aires
mailto:pdeymon@fi.uba.ar
Índice
1. Introducción
1) Definiciones
2. Modelos de Concurrencia
3. Threads
Definiciones
I Programa: conjunto de datos, asignaciones e instrucciones de
control de flujo que compilan a instrucciones de máquina, las
cuales se ejecutan secuencialmente en un procesador y acceden
a datos almacenados en memoria principal o memorias
secundarias.
I Programa concurrente: conjunto de programas secuenciales
que pueden ejecutarse en paralelo.
I Proceso: cada uno de los programas secuenciales que
conforman el programa concurrente.
I Sistema paralelo: sistema compuesto por varios programas
que se ejecutan simultáneamente en procesadores distintos.
Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 1/10
Definiciones
I Multitasking: ejecución de múltiples procesos
concurrentemente en un cierto periodo de tiempo. El
scheduler, parte del kernel del sistema operativo, se encarga de
coordinar el acceso a los procesadores.
I Multithreading: construcción provista por algunos lenguajes
de programación que permite la ejecución concurrente de
threads dentro del mismo programa.
Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 2/10
Desafíos de la concurrencia
Necesidad de sincronizar y comunicar procesos diferentes.
I Sincronización: coordinación temporal entre distintos
procesos
I Comunicación: datos que necesitan compartir los procesos
para cumplir la función del programa
Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 3/10
Definiciones
I Programa concurrente: consiste en un conjunto finito de
procesos secuenciales.
I Procesos: están compuestos por un conjunto finito de
instrucciones atómicas.
I Ejecución del programa concurrente: resulta al ejecutar
una secuencia de instrucciones atómicas que se obtiene de
intercalar arbitrariamente las instrucciones atómicas de los
procesos que lo componen.
Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 4/10
Ejecución del programa concurrente
Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 5/10
Definiciones
Una instrucción atómica puede:
I Ejecutarse de principio a fin sin interrupciones.
I No ejecutarse.
Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 6/10
Índice
1. Introducción
2. Modelos de Concurrencia
1) Modelos
3. Threads
Modelos
I Estado mutable compartido
I Paralelismo fork-join
I Canales / mensajes
I Programación asincrónica
I Actores
Ing. Pablo A. Deymonnaz 2.Modelos de Concurrencia Depto. de Computación 7/10
Estado compartido
Serializar el acceso al estado compartido
I Los procesos se ejecutarán al mismo tiempo, pero habrá ciertos
conjuntos de procedimientos tales que solo una ejecución de
un procedimiento en cada se permite que suceda a la vez.
I Si se está ejecutando algún procedimiento en el conjunto,
entonces cualquier otro proceso que intente ejecutar cualquier
procedimiento en el conjunto será obligado a esperar hasta que
la primera ejecución haya terminado
I Serializar para controlar el acceso a las variables compartidas
I Podemos marcar regiones de código que no pueden
superponerse en la ejecución al mismo tiempo.
Ing. Pablo A. Deymonnaz 2.Modelos de Concurrencia Depto. de Computación 8/10
Índice
1. Introducción
2. Modelos de Concurrencia
3. Threads
1) Threads Introducción
Threads Introducción
Los Threads comparten los recursos del proceso, entre ellos, el
espacio de memoria.
Cada thread mantiene su propia información de estado (stack, PC,
registros).
Ing. Pablo A. Deymonnaz 3. Threads Depto. de Computación 9/10
Bibliografía
I Principles of Concurrent and Distributed Programming,
M. Ben-Ari, Segunda edición (capítulos 1 y 2)
I Operating System Concepts, Ninth Edition, Abraham
Silberschatz, Greg Gagne, and Peter Baer Galvin, Cap. 4.
Ing. Pablo A. Deymonnaz 3. Threads Depto. de Computación 10/10
	Introducción
	Definiciones
	Modelos de Concurrencia
	Modelos
	Threads
	Threads Introducción

Continuar navegando