Sei sulla pagina 1di 10

Programacin Concurrente 20/04/2017

Clase 1 - 2017

1. Conceptos
2. Fundamentos de la Programacin Concurrente

Ing. Gustavo Cerveri - UCALP FACEI - 2017 1

Conceptos

PC es la rama de la informtica que trata de las notaciones y tcnicas de


programacin que se usan para expresar el paralelismo potencial entre
tareas y para resolver los problemas de comunicacin y sincronizacin
entre procesos.

El paradigma orientado a objetos, solo podemos ejecutar un programa a


la vez pero con la introduccin de hilos concurrentes (programacin
concurrente) es posible que cada objeto se ejecute simultneamente,
esperando mensajes y respondiendo adecuadamente.

La PC es que nos ofrece una manera diferente de conceptualizar la


solucin de un problema, otra es la de aprovechar el paralelismo del
hardware subyacente para lograr una aceleracin significativa.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 2

1
Programacin Concurrente 20/04/2017

Conceptos
Computacin Concurrente

La CC es la simultaneidad en la ejecucin de mltiples tareas interactivas.

Estas tareas pueden ser un conjunto de procesos o hilos de ejecucin


creados por un nico programa.

Las tareas se pueden ejecutar en un sola unidad central de proceso


(multiprogramacin), en varios procesadores o en una red de
computadores distribuidos ( GRID).

As, la correcta secuencia de interacciones o comunicaciones entre los


procesos y el acceso coordinado de recursos que se comparten por todos
los procesos o tareas son las claves de CC.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 3

Conceptos
Computacin Concurrente Programa Secuencia

Conjunto de declaraciones de datos y secuencia de instrucciones (o


acciones) ejecutables, escrito en un lenguaje de programacin

Estas instrucciones deben ejecutarse una a continuacin de otra,


siguiendo una secuencia determinada por un algoritmo, para resolver
un cierto problema

Un programa en Pascal es un programa secuencial

Los procesos secuenciales se han usado tradicionalmente para


estudiar la concurrencia

Ing. Gustavo Cerveri - UCALP FACEI - 2017 4

2
Programacin Concurrente 20/04/2017

Conceptos
Computacin Concurrente Proceso

Es un programa en ejecucin, tiene su propio estado independiente del


estado de cualquier otro programa incluidos los del sistema operativo.
Van acompaado de recursos como archivos, memoria, etc.

Un proceso pasa por una serie de estados.

En ejecutando (estado de ejecucin), si tiene asignada la CPU.


Est listo (estado listo) si pudiera utilizar la CPU en caso de haber una
disponible.
Est bloqueado (estado bloqueado) si se est esperando que suceda
algn evento antes de poder seguir la ejecucin.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 5

Conceptos
Computacin Concurrente Proceso

Los procesos son concurrentes si existen simultneamente.

La concurrencia es el punto clave de la Multiprogramacin, el


Multiproceso y el Proceso distribuido y fundamental para el diseo de
sistemas operativos.

La concurrencia comprende un gran nmero de cuestiones diseo,


incluyendo la comunicacin entre procesos, comparticin y
competencia por lo recursos, sincronizacin de la ejecucin de varios
procesos y asignacin del tiempo de procesador a los procesos.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 6

3
Programacin Concurrente 20/04/2017

Conceptos
Computacin Concurrente Proceso

SO Programa

Programa Secuencial Ficheros ejecutables Conjunto de secuencias


(Procedimientos)

Proceso Ejecucin de un fichero Ejecucin de un


ejecutable, tiene memoria Procedimiento
y usa CPU
 PROCESO LIGEROS
 PROCESO PESADO o
 HILOS DE EJECUCION
o
 THREAD

Ing. Gustavo Cerveri - UCALP FACEI - 2017 7

Conceptos
Computacin Concurrente Programa Concurrente

Es un programa diseado para tener 2 o ms contextos de ejecucin


son de tipo de programa multi-hilo, porque tiene ms de un contexto
de ejecucin.

Un programa concurrente es un programa que tiene ms de una lnea


lgica de ejecucin, es decir, es un programa que parece que varias
partes del mismo se ejecutan simultneamente.

Un programa concurrente puede correr en varios procesadores


simultneamente o no. Esta importancia de la concurrencia es
especialmente destacable en sistemas operativos como Linux

Ing. Gustavo Cerveri - UCALP FACEI - 2017 8

4
Programacin Concurrente 20/04/2017

Conceptos
Computacin Concurrente Programa Concurrente

La concurrencia puede presentarse en tres contextos diferentes:

Varias aplicaciones: La multiprogramacin se cre para permitir que el


tiempo de procesador de la maquina fuese compartido dinmicamente
entre varios trabajos o aplicaciones activas.

Aplicaciones estructuradas: Como aplicacin de los principios del


diseo modular y la programacin estructurada, algunas aplicaciones
pueden implementarse eficazmente como un conjunto de procesos
concurrentes.

Estructura del SO: Las mismas ventajas de estructuracin son aplicables


a los programadores de sistema y se han comprobado que algunos
sistemas operativos estn implementados con un conjunto de procesos.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 9

Conceptos
Computacin Concurrente Programa Paralelo

Es un programa concurrente en el que hay ms de un contexto de ejecucin


o hilos activos simultneamente, desde un punto de vista semntica no hay
diferencia entre un programa paralelo y concurrente.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 10

5
Programacin Concurrente 20/04/2017

Conceptos
Computacin Concurrente Programa Distribuido

Es un sistema diseado para ejecutarse simultneamente en una red de


procesadores autnomos, que no comparten la memoria principal, con
cada programa en su procesador aparte.

En un sistema operativo de multiprocesos el mismo programa lo


pueden ejecutar mltiples procesos cada uno de ellos dando como
resultado su propio estado o contexto de ejecucin separado de los
dems procesos.
Proc Proc Proc
1 2 3

Mquina 1 Mquina 2 Mquina 3


Red
Impresora Router

Ing. Gustavo Cerveri - UCALP FACEI - 2017 11

Fundamentos de la Programacin Concurrente


Concurrencia

Es un trmino utilizado para indicar que un programa nico en el que puede


haber ms de un contexto de ejecucin activo simultneamente.

Thread
Proceso
Thread

Thread
Proceso Sistema
Thread

Thread Proceso

Thread

Ing. Gustavo Cerveri - UCALP FACEI - 2017 12

6
Programacin Concurrente 20/04/2017

Fundamentos de la Programacin Concurrente


Concurrencia

Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que


se ha presentado una concurrencia de procesos. Para que dos o ms procesos
sean concurrentes, es necesario que tengan alguna relacin entre ellos como
puede ser la cooperacin para un determinado trabajo o el uso de
informacin o recursos compartidos,

Por ejemplo: en un sistema de un procesador, la multiprogramacin es una


condicin necesaria pero no suficiente para que exista concurrencia, ya que
los procesos pueden ejecutarse de forma totalmente independiente.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 13

Fundamentos de la Programacin Concurrente


Comunicacin entre procesos

Las aplicaciones estn formadas de uno o ms programas. Los programas


constan de cdigo para la computadora donde se ejecutaran, el cdigo es
generalmente ejecutado en forma secuencial es as que normalmente un
programa hilado tiene el potencial de incrementar el rendimiento total de la
aplicacin en cuanto a productividad y tiempo de respuesta mediante
ejecucin de cdigo en paralelo.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 14

7
Programacin Concurrente 20/04/2017

Fundamentos de la Programacin Concurrente


Estado de un Hilo de Proceso

Nuevo: El hilo se ha creado pero aun no est listo para ejecutarse.


Listo: El hilo est listo para ejecutarse pero espera a conseguir un procesador en
que ejecutarse.
Ejecucin: El hilo se est ejecutando en un procesador.
Bloqueado : El hilo est esperando tener acceso a una seccin crtica o ha dejado
el procesador voluntariamente.
Terminada: El hilo se ha parado y no se volver a ejecutar.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 15

Fundamentos de la Programacin Concurrente


Estado de un Hilo de Proceso Anlisis de la Comunicacin

Todos los programas concurrentes, implican interaccin o comunicacin entre


hilos. Esto ocurre por las siguientes razones:

Los hilos (incluso los procesos), compiten por un acceso exclusivo a los
recursos compartidos, como los archivos fsicos: archivos o datos.
Los hilos se comunican para intercambiar datos.

En ambos casos es necesario que los hilos sincronicen su ejecucin para


evitar conflictos cuando adquieren los recursos, o para hacer contacto
cuando intercambian datos.

Un hilo puede comunicarse con otros mediante:

Variables compartidas no locales: es el mecanismo principal utilizado por


JAVA y tambin puede utilizarlo ADA.
Los hilos cooperan unas con otras para resolver un problema.
Ing. Gustavo Cerveri - UCALP FACEI - 2017 16

8
Programacin Concurrente 20/04/2017

Fundamentos de la Programacin Concurrente


Estado de un Hilo de Proceso Exclusin Mutua

El mtodo ms sencillo de comunicacin entre los procesos de un programa


concurrente es el uso comn de unas variables de datos. Esta forma tan
sencilla de comunicacin puede llevar, no obstante, a errores en el programa
ya que el acceso concurrente puede hacer que la accin de un proceso
interfiera en las acciones de otro de una forma no adecuada. Aunque nos
vamos a fijar en variables de datos, todo lo que sigue sera vlido con
cualquier otro recurso del sistema que slo pueda ser utilizado por un
proceso a la vez.

Analizar fuera de clase un Ejemplo: Problema de los Jardines

Ing. Gustavo Cerveri - UCALP FACEI - 2017 17

Fundamentos de la Programacin Concurrente


Estado de un Hilo de Proceso Seccin Critica

Es aquellas partes de los procesos concurrentes que no pueden


ejecutarse de forma concurrente o, tambin, que desde otro proceso se
ven como si fueran una nica instruccin. Esto quiere decir que si un
proceso entra a ejecutar una seccin crtica en la que se accede a unas
variables compartidas, entonces otro proceso no puede entrar a ejecutar
en una seccin crtica en la que acceda a variables compartidas con el
anterior
Mientras un proceso se encuentre en su seccin crtica, los dems
procesos pueden continuar su ejecucin fuera de sus secciones crticas.
Cuando un proceso abandona su seccin critica, entonces debe
permitrsele proceder a otros procesos que esperan entrar en su propia
seccin crtica ( si hubiera un proceso en espera)

Ing. Gustavo Cerveri - UCALP FACEI - 2017 18

9
Programacin Concurrente 20/04/2017

Fundamentos de la Programacin Concurrente


Estado de un Hilo de Proceso Seccin Critica

Estar dentro de una seccin crtica es un estado muy especial asignado a


un estado. El proceso tiene acceso exclusivo a los datos compartidos, y
todos los dems procesos que necesitan acceder a esos datos
permanecen en espera. Por tanto, las secciones crticas deben ser
ejecutadas lo ms rpido posible, un programa no debe bloquearse dentro
de su seccin crtica, y las secciones crticas deben ser codificadas con
todo cuidado.

Ing. Gustavo Cerveri - UCALP FACEI - 2017 19

Fundamentos de la Programacin Concurrente


Estado de un Hilo de Proceso Seccin Critica

Las secciones crticas se pueden agrupar en clases, siendo mutuamente


exclusivas las secciones crticas de cada clase. Para conseguir dicha
exclusin se deben implementar protocolos software que impidan o
bloqueen (lock) el acceso a una seccin crtica mientras est siendo
utilizada por un proceso
La exclusin mutua necesita ser aplicada solo cuando un proceso acceda
a datos compartidos; cuando los procesos ejecutan operaciones que no
estn en conflicto entre s, debe permitrseles proceder de forma
concurrente. Cuando un proceso esta accediendo a datos se dice que el
proceso se encuentra en su seccin critica ( o regin critica)

Ing. Gustavo Cerveri - UCALP FACEI - 2017 20

10

Potrebbero piacerti anche