PDF de programación - PROGRAMACION CONCURRENTE I.2 - Recursos para la concurrencia

Imágen de pdf PROGRAMACION CONCURRENTE I.2 - Recursos para la concurrencia

PROGRAMACION CONCURRENTE I.2 - Recursos para la concurrenciagráfica de visualizaciones

Publicado el 14 de Enero del 2017
782 visualizaciones desde el 14 de Enero del 2017
362,2 KB
18 paginas
Creado hace 15a (19/09/2008)
PROGRAMACION CONCURRENTE

I.2 Recursos para la concurrencia.

J.M. Drake

Notas:

1

Procesos Concurrentes

Concepto de proceso.

Estructura de los procesos.

Estados de un proceso.

Gestión de los procesos.

Procodis’08: I.2- Modelos en programación concurrente José M.Drake

2

Notas:

2

Plataforma de ejecución concurrente

Sistema/Aplicación concurrente

Lógica de la aplicación
Seq. Activity

Thread

Seq. Activity

Seq. Activity

Seq. Activity

Seq. Activity

Seq. Activity

Seq. Activity

Seq. Activity

Seq. Activity

Thread

Thread

Thread

Thread

Thread

Thread

Thread

Thread

Proceso

Proceso

Proceso

Proceso

Proceso

Plataforma
de ejecución

Procesador

CPU

Procesador

CPU

Procesador

CPU

Procodis’08: I.2- Modelos en programación concurrente José M.Drake

3

Notas:

La concurrencia no es un término fácil de definir. Informalmente, un programa concurrente es un programa que
ejecuta mas de una actividad simultáneamente. Si embargo, en muchos casos esta simultaneidad es una ilusión.
En algunos sistemas concurrentes, las diferentes actividades son realizadas en diferentes CPU y la concurrencia
es real (concurrencia física). En otros sistemas, solo hay una CPU y las diferentes actividades se ejecutan
secuencialmente siguiendo una estrategia de entrelazamiento basada en repartir el tiempo de ejecución de la
CPU (concurrencia virtual).
Un sistema informático puede ser un único procesador, una máquina multiprocesadora o un grupo de máquinas
administradas como una sola unidad y que comparten un mecanismo de gestión común.
Un proceso es una abstracción de los sistemas operativos que hace posible que un sistema informático pueda
ejecutar simultáneamente diferentes actividades secuenciales. Un proceso es una abstracción lógica (no física).
Las ligaduras de los procesos a los procesadores pueden cambiar dinámicamente. A cada proceso se le garantiza
un cierto grado de independencia, de ausencia de interferencias y de seguridad. No se permite que un proceso
pueda acceder a la memoria local de otro, deben comunicarse entre ellos a través de utilidades de comunicación
proporcionadas por el entorno. La gestión de los procesos es pesada y requiere una gran capacidad de
procesamiento para crear, gestionar, comunicar y cancelar los proceso.
Los thread son abstracciones del sistema operativo que hace posible ejecutar de forma concurrente una actividad
secuencial. Los threads son ligeros y sólo disponen de los recursos necesarios para mantener
independientemente su hilo de control que ejecuta la actividad secuencial asignada. Los threads de un mismo
proceso comparten la memoria local y la utilizan para comunicarse entre ellas. La ejecución de la actividad que
se asocia a un threads se puede planificar de forma independiente, utilizando para ello diferentes protocolos. Los
threads se comunican entre sí de forma no segura a través de la memoria local que comparte, y de forma segura
a través de los mecanismos sincronizados que le ofrecen los sistemas operativos.

3

Programas concurrentes y procesos.

Un programa concurrente se concibe como un conjuntos de thread o
hilos de control
Cada thread ejecuta una única actividad secuencial.

Cada thread se ejecuta en su propio procesador virtual ejecutando
independientemente acciones de acuerdo con la actividad que tiene
asociada.
Los threads concurrentes intercambian entre sí mensajes con información
y mensajes de sincronismo.
Existen tres formas de implementar un programa concurrente:
Mediante un lenguaje concurrente (Ada, Java, etc.).
A través de un sistema operativo (UNIX, POSIX, Windows, etc).
Apoyándose en un software de comunicaciones (DIS-ADA, MMS, CORBA).

Procodis’08: I.2- Modelos en programación concurrente José M.Drake

4

Notas:

Un programa concurrente se suele [Dijkstra, 98] concebir como un conjunto de procesos.
Cada uno de los procesos se considera que es un programa secuencial, con una única
línea de flujo de control (thread).

Se considera que cada proceso se ejecuta en su propio procesador virtual, y progresa de
forma independiente a los otros procesos, ejecutando la secuencia de acciones que
corresponden a su propia línea de control de flujo.

En un programa concurrente se tienen que definir cada uno de los procesos que lo
componen, así como las acciones de intercambio de información, y de sincronismo que
deben tener lugar para que la ejecución concurrente de los procesos progrese
constructivamente en su conjunto.

Un programa concurrente se formula utilizando bien un lenguaje concurrente (como Ada),
o definiendo independientemente los procesos que constituyen el programa mediante un
lenguaje secuencial (como el lenguaje C), y haciendo uso de la capacidad de
multiprocesado que proporciona un sistema operativo multiprocesador (como UNIX) o un
software de comunicación (como MMS).

4

Programa secuencial y concurrente

Programa secuencial

Programa concurrente

P;
Q;
R;

cobegin

P; Q; R;

coend;

Se interpreta como:

Se interpreta como:

∀ Ejecución • P → Q → R

∃ Ejecución • {not(P→Q) and not(P→R)
and not(Q→P) and not(Q→R)
and not(R→P) and not(R→Q)}

Para todas las ejecuciones válidas P
debe terminar antes de empezar Q y
Q debe terminar antes de empezar R.

Existe al menos una ejecución válida
en la que los tres procesos se estén
ejecutando simultáneamente.

Procodis’08: I.2- Modelos en programación concurrente José M.Drake

5

Notas:

Un programa secuencial se puede considerar como un conjunto de procesos que se ejecutan
secuencialmente. Así, un programa secuencial constituido por los tres procesos P, Q y R, tal como
el siguiente:

P; Q; R;

equivale formalmente a establecer que

∀ Ejecución • P → Q → R

Expresión que debe leerse como: Para todas las ejecuciones válidas del programa, P debe
concluir antes que comience Q, y Q debe finalizar antes de que comience R.

Un programa concurrente se puede considerar como un conjunto de procesos que se pueden
ejecutar bien secuencialmente en cualquier orden o concurrentemente con su ejecución solapada
en el tiempo. Por ejemplo, un programa concurrente compuesto por tres procesos P, Q y R que se
ejecutan concurrentemente se puede expresar como,

cobegin P; Q; R; coend;

lo cual significa formalmente que

∃ Ejecución • {not(P→Q) and not(P→R) and not(Q→P) and not(Q→R) and not(R→P) and

not(R→Q)}

que debe leerse como, los procesos P, Q y R son concurrentes si existe al menos una ejecución
válida en la que durante algún intervalo de tiempo, los tres procesos se estén ejecutando
simultáneamente.

5

Aspectos de los procesos

Cada entorno de programación concurrente necesita establecer algunas
características sobre sus procesos:

Naturaleza de los procesos.

Jerarquía de los procesos.

Mecanismos de inicialización.

Mecanismos de finalización.

Formas de declaración.

Procodis’08: I.2- Modelos en programación concurrente José M.Drake

6

Notas:

6

Naturaleza de los procesos.

Los procesos pueden ser:
Procesos estáticos: son instanciados al comienzo del programa. El

programador los declara explícitamente.

Procesos dinámicos: Son creados durante la ejecución del programa, en

función de los datos.

En función de los procesos que pueden existir en un sistema, se clasifican:
Sistema cerrado: Se tiene un conocimiento en tiempo diseño (estático) sobre

los procesos que constituyen el sistema y su actividad.

Sistema abierto: El número de procesos que constituyen el sistema varia en el

tiempo de forma impredecible (en fase de diseño), bien porque crea
dinámicamente procesos, porque carga clases desconocidas potencialmente
activas, invoca procedimientos externos en otros subsistemas, etc.

Crear, instanciar y destruir un proceso son tareas complejas y costosas en
tiempo de procesador. Los procesos dinámicos no se pueden utilizar en
sistemas de tiempo real.
Mantener un proceso tiene un costo en recursos del sistema.

Procodis’08: I.2- Modelos en programación concurrente José M.Drake

7

Notas:

Los procesos que constituyen un programa concurrentes pueden ser:

•Procesos estáticos: Son aquellos que son creados e instanciados al comienzo
del programa. El número de procesos estáticos de un programa se mantiene fijo
durante la ejecución del programa y todos ellos han sido explícitamente declarados
por el programador.
•Procesos dinámicos: Los procesos dinámicos que son creados durante la
ejecución del programa, en función de los datos que están siendo manejados en
una ejecución.

La creación, instalación y dotación de recursos de un proceso es una tarea compleja y muy
costosa en tiempo. Esto conduce a que en los programas de tiempo real es muy poco
frecuente que se utilicen procesos de generación dinámica.

7

Jerarquía de los procesos.

Los procesos de un programa se pueden organizar en:

Estructura plana: Todos los procesos son equivalentes. Evolucionan y
terminan independientemente (procesos UNIX).

Estructura plana

Proceso A

Proceso B

Proceso C

Proceso D

Estructura jerarquizada: Entre los procesos existe unas relaciones de
dependencia con estructura de árbol. Un proceso no termina hasta que los
procesos que dependen de él terminan.
Proceso B

Entorno jerarquizado

Proceso A

Proceso C

Proceso D

Proceso E

Procodis’08: I.2- Modelos en programación concurrente José M.Drake

8

Notas:

Los procesos que constituyen un programa concurrente pueden organizarse de
acuerdo con dos estructuras básicas:

•Estructura plana: En este casos todos los procesos, que en cada
momento de la ejecución del programa concurrente han sido creados, son
equivalentes, pudiendo cada uno de ellos evolucionar y terminar de forma
independiente.

•Estructura jerarquizada:
En estos casos, entre los procesos que
constituyen el prog
  • Links de descarga
http://lwp-l.com/pdf1014

Comentarios de: PROGRAMACION CONCURRENTE I.2 - Recursos para la concurrencia (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad