PDF de programación - PROGRAMACION CONCURRENTE - I.1 Motivación de la programación concurrente

Imágen de pdf PROGRAMACION CONCURRENTE - I.1 Motivación de la programación concurrente

PROGRAMACION CONCURRENTE - I.1 Motivación de la programación concurrentegráfica de visualizaciones

Publicado el 14 de Enero del 2017
583 visualizaciones desde el 14 de Enero del 2017
272,8 KB
22 paginas
Creado hace 15a (19/09/2008)
PROGRAMACION CONCURRENTE

I.1 Motivación de la programación concurrente

J.M. Drake

Notas:

1

SISTEMAS CONCURRENTES

La crisis del software.







Programas secuenciales, concurrentes y de tiempo real.

Programación concurrente.

Programación de tiempo real.

Entornos hardware para programación concurrente.

Ejemplo de un problema concurrente.

Procodis’08: I.1- Motivación de la programación concurrente José M.Drake

2

Notas:

2

LA CRISIS DEL SOFTWARE.

Conjunto de tópicos relacionados con la problemática
asociada al desarrollo de software:

"Construir una aplicación software es una tarea mucho más

compleja de lo que parece al iniciarla"

Aspectos de esta problemática son:
Resposiveness: No satisfacen las espectativas del usuario.
Reliability: Presentan fallos y su depuración es muy difícil.
Cost: El costo es difícil de evaluar y mas alto de lo esperado.
Modificability: Son productos muy rígido y difíciles de mantener.
Timeless: Requieren para su ejecución mas tiempo del previsto.
Transportability: Hay problemas para migrar entre plataforma.
Efficiency: Sólo utilizan una parte de la capacidad de hardware.

Procodis’08: I.1- Motivación de la programación concurrente José M.Drake

3

Notas:

Desde 1968 se identifica con la denominación "crisis del software" el conjunto de tópicos
relacionados con la problemática asociada con el desarrollo de software. Aspectos identificados con
esta crisis son:
* Responsiveness: Frecuentemente los sistemas basados en computador no satisfacen las
expectativas que tiene el usuario.
* Reliability: Los programas suelen presentar fallos, y su depuración es muy difícil de garantizar.
* Cost: El costo del software es de evaluación difícil, y es habitual que resulte mas caro de lo que se
preveía.
* Modifiability: Los programas son productos muy rígidos y de difícil modificación. El costo de su
mantenimiento es muy alto.
*Timeless: El desarrollo del software requiere siempre más tiempo que el previsto.
*Transportability: Cuando se traslada un software de un equipo a otro, siempre se presentan
problemas de adaptación.
*Efficiency: Los programas utilizan solo una fracción pequeña de la capacidad del hardware en que
se ejecuta.
El espíritu de la crisis del software se puede resumir en la frase: "Construir una aplicación software
es una tarea mucho más compleja de lo que de antemano parece"
Un pequeño paquete con algún millar de líneas de código es es asequible mentalmente a un
programador,sin embargo, un paquete mediano o grande con cientos de miles de líneas, desborda la
capacidad de cualquier programador. En estos casos se hace crítico la problemática de la crisis del
software.

3

CAUSAS DE LA CRISIS DELSOFTWARE.

Causas profundas de la crisis del software son:

La metodología en cascada que linealiza el proceso de desarrollo.
La metodología de modularización estructurada hace que el software

sea inflexible y difícil de mantener.

Los programadores no tienen formación en ingeniería software.
Las empresas e instituciones tienen inercia a introducir las

innovaciones.

La estructura secuencial de Von Newmann no se adapta a los

problemas que se abordan.

Procodis’08: I.1- Motivación de la programación concurrente José M.Drake

4

Notas:

Causas profundas que dan lugar a la crisis del software son:

* El paradigma de diseño estructurado de software es de naturaleza lineal, y es difícil
evaluar a nivel de proyecto el efecto posterior de las decisiones que se toman en cada fase
del ciclo de vida de un software.
* El conjunto de programadores que actualmente desarrollan software no tienen una
formación o no aplican la ingeniería software.
* Las empresas y organizaciones que desarrollan software tienen una gran inercia a
introducir novedades de eficacia demostrada.
* La estructura secuencial de Von Newmann y el estilo de programación que induce, no
es el adecuado a los problemas que se abordan.

4

PROGRAMAS Y LÍNEAS DE FLUJO DE CONTROL.

Un programa se compone de:
Sentencias: Establecen las actividades (operaciones y verificaciones) que

ejecuta el sistema.

Línea de flujo de control (Thread): Establece el orden en que se ejecutan las

sentencias.

Según las características de la línea de flujo de control los programa se
clasifican en:
Secuenciales.
Concurrentes.
Tiempo real.

Procodis’08: I.1- Motivación de la programación concurrente José M.Drake

5

Notas:

Un programa se compone de un conjunto de sentencias (operaciones y verificaciones) y
una línea de flujo de control (threads of control). La línea de flujo de control establece de
acuerdo con la estructura del propio programa y de los datos que maneja, el orden en que
deben ejecutarse las sentencias.

De acuerdo con el número de líneas de flujo de control y los requerimientos temporales que
se exigen en ellas, los programas se pueden clasificar en tres tipos:

* Programas secuenciales.
* Programas concurrentes.
* Programas de tiempo real.

5

PROGRAMAS SECUENCIALES.

Es el estilo de programación que corresponde al modelo conceptual de
Von Newmann.
Un programa secuencial tiene una línea simple de control de flujo.
Las operaciones de un programa secuencial están ordenadas de acuerdo
con un orden estricto.
El comportamiento de un programa es solo función de las sentencias que
lo componen y del orden en que se ejecuta.
El tiempo que tarda en ejecutarse cada operación no influye en el
resultado de un programa secuencial.
La verificación de un programa secuencial es sencilla:
Cada sentencia da la respuesta correcta.
Las sentencias se ejecutan en el orden adecuado.

Procodis’08: I.1- Motivación de la programación concurrente José M.Drake

6

Notas:

•Es el estilo de programación clásico, en el que se sigue el modelo conceptual de Von
Newmann.

•Los programas secuenciales presentan una línea simple de control de flujo. Las
operaciones de este tipo de programas están estrictamente ordenados como una secuencia
temporal lineal.

•El comportamiento del programa es solo función de la naturaleza de las operaciones
individuales que constituye el programa y del orden en que se ejecutan.

•En los programas secuenciales, el tiempo que tarda cada operación en ejecutarse no tiene
consecuencias sobre el resultado.

•Para validar un programa secuencial se necesita comprobar:

•La correcta respuesta a cada sentencia.
•El correcto orden de ejecución de las sentencias.

6

PROGRAMAS CONCURRENTES.

Son programas que tienen múltiples líneas de flujo de control.

Las sentencias de un programas concurrente se ejecutan de
acuerdo con un orden no estricto.
La secuencialización de un programa concurrente es entre
hitos o puntos de sincronización.
Un programa concurrente se suele concebir como un conjunto
de procesos que colaboran y compiten entre sí.
Para validar un programa concurrente:
Las operaciones se pueden validar individualmente si las variables no

son actualizadas concurrentemente.

El resultado debe ser independiente de los tiempos de ejecución de las

sentencias.

El resultado debe ser independiente de la plataforma en que se ejecuta.

Procodis’08: I.1- Motivación de la programación concurrente José M.Drake

7

Notas:

En los programas concurrentes existen múltiples líneas de flujo de control. Las
sentencias que constituyen el programa no se ejecutan siguiendo una ordenación que
corresponde a una secuencia temporal lineal.
En los programas concurrentes el concepto de secuencialidad entre sentencias continua
siendo muy importante: solo que en los programas concurrentes es de orden parcial,
mientras que en los programas secuenciales era de orden estricto. En los programas
concurrentes la secuencialización entre procesos concurrentes se llama sincronización.
En el diseño de programas concurrentes es fundamental el concepto de proceso. Un
proceso es cada uno de los programas secuenciales con una línea de control de flujo
simple que constituyen el programa concurrente. Los procesos de un programa
concurrente se ejecutan de forma asíncrona e independiente durante largos períodos de
tiempo. De cuando en cuando, los procesos requieren comunicar con otros procesos, bien
para intercambiar datos o bien para sincronizar sus líneas de flujo de control.
Para validar un programa concurrente se requiere comprobar los mismos aspectos que en
los programas secuenciales, pero con los siguientes nuevos aspectos:

•Las sentencias se pueden validar individualmente solo si no están acopladas por
variables compartidas.
•Cuando existen variables compartidas, los efectos de interferencia entre las
sentencias concurrentes pueden ser muy variados y la validación es muy difícil.
•Siempre que la secuencialidad entre tareas se lleve a cabo por sentencias
explícitas de sincronización, el tiempo es un elemento que no influye sobre el
resultado.

7

PROGRAMAS DE TIEMPO REAL.

El orden de ejecución de las sentencias está establecido por las líneas de
flujo de control y por los eventos externos.

Los eventos externos no están condicionados por los criterios de
sincronización establecidos en el programa.

El tiempo físico en que se ejecutan las sentencias es parte de la
funcionalidad del programa.

La validación de los programas de tiempo real es muy compleja, requiere
disponer del entorno o de un emulador.

Procodis’08: I.1- Motivación de la programación concurrente José M.Drake

8

Notas:

El orden de las senten
  • Links de descarga
http://lwp-l.com/pdf1013

Comentarios de: PROGRAMACION CONCURRENTE - I.1 Motivación de la programación concurrente (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