Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente...

66
Informática III 2009 Ing. Estela D'Agostino 1 Programación secuencial vs programación concurrente Pascal, C, Fortran , Cobol Secuenciales único hilo de control Java, Ada, Posix Concurrentes varios hilos de contro

Transcript of Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente...

Page 1: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 1

Programación secuencial vs programación concurrente

Pascal, C, Fortran , Cobol

Secuenciales

único hilo de control

Java, Ada, Posix

Concurrentes

varios hilos de control

Page 2: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 2

Concurrencia

• Son la notación y las técnicas de programación que expresan el paralelismo potencial

Un programa concurrente es un conjunto de procesos autónomos que se ejecutan en paralelo.

Page 3: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 3

Procesos concurrentes

El trabajar con procesos concurrentes añade complejidad a la tarea de programar

¿cuáles son entonces los beneficios que aporta la programación concurrente?

Page 4: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 4

Beneficios de la programaciónconcurrente

• Mejor aprovechamiento de la CPU• Velocidad de ejecución• Solución de problemas de naturaleza concurrente

– Sistemas de control

– Tecnologías web

– Aplicaciones basadas en interfaces de usuarios

– Simulación

– SGDB

Page 5: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 5

Proceso

• Es una instancia de ejecución de un programa.• Tiene un ciclo de vida, es decir pasa por distintos

estados.

Page 6: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 6

Ciclo de vida de un proceso

terminado

nacido

listo

ejecución

No existente

No existente

Page 7: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 7

Finalización de un proceso

1. Finaliza la ejecución de su cuerpo.

2. Ejecución de alguna sentencia de auto finalización.

3. Condición de error sin tratar.

4. Aborto por medio de la intervención de otro proceso.

5. Nunca: procesos que se ejecutan en bloques que no terminan.

6. Cuando ya no son necesarios.

Page 8: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 8

Programa concurrente

Es un conjunto de procesos secuenciales autónomos que se ejecutan en paralelo

Page 9: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 9

Implementación de un conjunto de procesos

1. Multiplexar sus ejecuciones en un único procesador (multiprogramación).

2. Multiplexar sus ejecuciones en un sistema multiprocesador con acceso a memoria compartida (multiprocesamiento)

3. Multiplexar sus ejecuciones en diversos procesadores que no comparten memoria (sistema distribuído)

Page 10: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 10

Ejecución de un programa concurrente

Los procesos deben ser creados, distribuidos en los procesadores y finalizados. Estas actividades la realiza el nucleo de ejecución conocido como Run Time System Support (RTSS).

Se encarga de la creación, terminación y multiplexado de los procesos

Page 11: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 11

Run Time System Support

• Estructura software programada como parte de la aplicación (Modula-2).

• Sistema software generado junto al código objeto del programa por el compilador. (Ada y Java).

• Estructura hardware microcodificada en el procesador. Es mas eficiente. (Occam2)

Page 12: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 12

¿Quien provee los mecanismos de concurrencia?

• Sistema operativo (SO de Tiempo real)

• Lenguaje ( lenguaje que proporciona mecanismos para concurrencia)

Page 13: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 13

Ejecución de los procesos

• Todos los SO tiene formas de crear procesos.• Cada proceso se ejecuta en su propia maquina

virtual.• Los SO modernos permiten crear hilos (procesos

ligeros) dentro de la misma máquina virtual.

Page 14: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 14

Ventajas si el lenguaje proporciona los mecanismos de concurrencia

• Programas más legibles

• Programas más portables

• Si el sistema es embebido puede que no tenga un SO residente

Page 15: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 15

Ventajas si el SO proporciona la concurrencia

• El modelo de concurrencia es el mismo para todos los lenguajes.

• Puede no ser fácil implementar el modelo de concurrencia sobre algún modelo de SO

Page 16: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 16

Programación concurrente

Los lenguajes concurrentes tiene elementos para:• Crear procesos • Sincronizar procesos• Comunicar procesos

Page 17: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 17

Comportamiento de procesos• Independientes: no se sincronizan ni

comunican. (son muy raros)

•Cooperativos: se comunican y sincronizan sus actividades.

•Competitivos: compiten por recursos del sistema.

Page 18: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 18

Sincronizar y Comunicar

• Sincronizar: Satisfacer las restricciones en el enlazado de las acciones de los distintos procesos.

• Comunicar: pasar información de un proceso a otro.

Page 19: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 19

Modelo de concurrencia

• Estructura: nro de procesos fijo o variable• Nivel: paralelismo soportado• Granularidad: muchos o pocos procesos• Inicialización: paso de parámetros, o

comunicación explícita después de su ejecución• Finalización: termino, error, aborto, nunca,

suicidio, no son necesarios• Representación : proceso responsable de la

creación (padre/hijo) y proceso afectado por su finalización (guardián/dependiente)

Page 20: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 20

Sincronizar y Comunicar

•Variables compartidas: objetos a los que puede acceder más de un proceso•Paso de mensajes: intercambio explícito de datos entre dos procesos mediante el paso de un mensaje mediante alguna forma que brinda el SO o el propio lenguaje.

Page 21: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 21

Sincronizacion y comunicación basada en variables compartidas

Son objetos a los que puede acceder mas de un proceso.

La comunicación se logra accediendo a dichas variables cuando sea necesario

Trae problemas

Page 22: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 22

Variables compartidas

Considere dos procesos que actualizan una variable compartida, X, mediante la sentencia: X:= X+1

– Carga el valor de X en algún registro.

– Incrementa el valor en el registro en 1.

– Almacena el valor del registro de nuevo en X.

Como ninguna de las tres operaciones es indivisible, dos procesos que actualicen la variable simultáneamente generarían un entrelazamiento que podría producir un resultado incorrecto.

Page 23: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 23

Variables compartidas

• Las partes de un proceso que tienen acceso a las variables compartidas han de ejecutarse indivisiblemente unas respecto a las otras.

• Estas partes se denominan secciones críticas.

• La protección requerida se conoce como exclusión mutua.

Page 24: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 24

• Sección crítica: secuencia de instrucciones que debe ejecutarse sin perder el control, y afecta variables compartidas. Si un proceso esta ejecutando código de su sección crítica, ningún otro proceso puede estar ejecutando código de su sección crítica

Variables compartidas

Page 25: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 25

El problema de la sección crítica(SC)

• Intenta sistematizar el estudio de la sincronización• Sean n procesos que tienen

datos compartidos. Cada proceso tiene un segmento de código llamado SC en el cual se accede a los datos compartidos

• Se pretende que cuando un proceso está en su sección crítica, ningún otro este en su SC

Sección de entrada

Sección crítica

Sección de salida

Sección siguientes

Page 26: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 26

– Exclusión mutua: es el mecanismo que asegura que solo un proceso está haciendo algo en un instante determinado. Sincronización para proteger una sección crítica. Es necesario si dos procesos comparten variables.

– Sincronización condicionada: necesaria cuando un proceso necesita realizar alguna acción, solo después que se haya cumplido una condición.

Sincronizaciones necesarias en la programación concurrente

Page 27: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 27

Sincronización de condición

Utilización de buferes: productor / consumidor

Son aquellos problemas en los que existe un conjunto de procesos que producen información que otros procesos consumen, siendo diferentes las velocidades de producción y consumo de la información. Este desajuste en las velocidades, hace necesario que se establezca una sincronización entre los procesos de manera que la información no se pierda ni se duplique, consumiéndose en el orden en que es producida.

Page 28: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 28

Variables compartidas

• Semáforos

• Monitores tipos protegidos

• Métodos sincronizados

Page 29: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 29

Semáforos

Introdujo Dikstra en 1968.

Permite resolver la mayoría de los problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas operativos y de lenguajes de programación concurrentes.

Page 30: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 30

Semáforos

Es una estructura de datos:

• con una variable tipo entera

• una cola de procesos en espera.

typedef semaforo{int contador;cola: lista de procesos;}

Page 31: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 31

Semáforos

Espera(S)•Decrementa el contador.• Si el resultado es negativo suspende el proceso y lo ingresa a la cola asociada.

Signal(S)•Incrementa el contador.•Si el resultado es negativo o cero despierta a un proceso que se encuentra en la cola

S.contador = S.contador-1;if (contador<0){Insertar_en_Cola(S.cola,Proceso_en_ejecución);Suspender(Proceso_en_ejecución);}

S.contador = S.contador+1;if (contador<=0){Extraer_de_Cola(S.cola, Proceso);Activar(Proceso);}

Page 32: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 32

Sincronización de condición con semáforosvar S : semaforo (inicialmente en 0)process p1..........wait(S); //espera hasta que S=1..........end p1;

process p2..............signal(S);..........

end p2;

El uso de wait y signal se da en dos procesos por separado. En uno se ejecuta wait y en el otro signal.

Page 33: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 33

Semáforos para proteger un conjunto de recursos

En caso que exista un conjunto de recursos similares, se puede usar una versión más general de semáforo que lleve la cuenta del número de recursos disponibles. En este caso el semáforo se inicializa con el número total de recursos disponibles (N) y las operaciones de espera y señal se diseñan de modo que se impida el acceso al recurso protegido por el semáforo cuando el valor de éste es menor o igual que cero.

Page 34: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 34

Los semáforos tienen algunas características que pueden generar incovenientes:•las variables compartidas son globales a todos los procesos.•las acciones que acceden y modifican dichas variables están diseminadas por los procesos.•para poder decir algo del estado de las variables compartidas, es necesario mirar todo el código.•la adición de un nuevo proceso puede requerir verificar que el uso de las variables compartidas es el adecuado.

Programas poco escalables

Características de los semáforos

Page 35: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 35

Críticas a los semaforos• Si el semáforo se ubico en un lugar erróneo falla

No se garantiza la exclusión mutua

Posible solución : monitores

Page 36: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 36

Monitores

Es un conjunto de procedimientos que proporciona el acceso con exclusión mutua a un recurso o conjunto de recursos (datos o dispositivos) compartidos por un grupo de procesos. Los procedimientos van encapsulados dentro de un módulo que tiene la propiedad especial de que sólo un proceso puede estar activo cada vez para ejecutar un procedimiento del monitor.

Page 37: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 37

Características de un monitorEs un TAD:• uso independiente de la implementación.• el usuario no conoce la implementación.• nada se sabe del orden en que se van a invocar acciones

del monitor.• por lo que necesita una correcta especificación.

Page 38: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 38

Funcionamiento de un monitor

Respecto a la sincronización:• la exclusión mutua se asegura por

definición:– por lo tanto, sólo un proceso puede estar

ejecutando acciones de un monitor en un momento dado.

– aunque varios procesos pueden en ese momento ejecutar acciones que nada tengan que ver con el monitor

Page 39: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 39

la sincronización condicionada:– cada proceso puede requerir una sincronización

distinta, por lo que hay que programar cada caso.

– para ello, se usarán las variables “condición”:• se usan para hacer esperar a un proceso hasta que

determinada condición sobre el estado del monitor se “anuncie”

• también para despertar a un proceso que estaba esperando por su causa

Funcionamiento de un monitor

Page 40: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 40

Monitores

• Existe necesidad de sincronización de condición.

• Se maneja con dos operadores que se llaman wait y signal.

Page 41: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 41

Monitores

• Un wait siempre bloquea y se ubica en una cola asociada a esa variable de condición.

• Cuando un proceso bloqueado libera su bloqueo permitirá ingresar a otro proceso.

• Cuando un proceso ejecuta una operación signal, liberará un proceso bloqueado.

Page 42: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 42

Críticas a monitores

• Solución elegante a problemas de exclusión mutua.

• No soluciona bien las sincronizaciones de variables de condición.

Page 43: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 43

Métodos sincronizados

• Es el concepto de monitor implementado en el paradigma de Orientación a Objetos

• Se utilizan en lenguajes como Java, que tiene la concurrencia totalmente integrada.

Page 44: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 44

Métodos sincronizados

• Los métodos se califican con el modificador synchronized.

• Puede existir también synchronized a nivel de bloque.

Page 45: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 45

Sincronizacion y comunicación basada en mensajes

• El envío de mensajes se usa tanto para sincronizar como para comunicar.

• Se necesita un proceso emisor y uno receptor.• Información para intercambiar.• Operaciones básicas son:

– Enviar (mensaje)

– Recibir (mensaje)

Page 46: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 46

Paso de mensajes

• Se debe establecer un enlace entre receptor y emisor:– Modelo de sincronización– Como nombrar los procesos– Estructura del mensaje

Page 47: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 47

Modelo de sincronización

• Sincronización implícita: un proceso no puede recibir un mensaje antes que el emisor lo haya emitido.– El receptor puede leer una variable que no haya sido escrita por el

emisor

– Proceso ejecuta una recepción de mensaje incondicional cuando no existe ningún mensaje, permanecerá suspendido hasta que llegue el mensaje

Page 48: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 48

Modelo de sincronización de procesos

Operación envía:

– Asíncrona: el emisor continua trabajando sin saber si el mensaje llegó o no

– Síncrona: el emisor continua trabajando solo cuando se recibió el mensaje (rendezvous)

– Invocación remota: el emisor continua sólo cuando se recibió una respuesta desde el receptor

Page 49: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 49

Nombrado de procesos

Dirección:

nombrado directo:

envía <msj> <proceso>

nombrado indirecto:

envía <msj> <buzón>

Simetría:

simétrico:si el emisor y el receptor se nombrar entre sí

envía <msj> <proceso>

espera <msj> <proceso>

asimétrico: acepta mensajes de cualquier proceso

espera <msj>

Page 50: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 50

Estructura del mensaje

• Idealmente: cualquier objeto.

• Cada lenguaje ha impuesto sus restricciones.

Page 51: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 51

Representación de procesos

• Depende del lenguaje:– Process Modula– Task Ada– Thread Java

Page 52: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 52

Acciones atómicas • Hasta aquí la comunicación entre dos

procesos se expreso como una comunicación simple.

No siempre ocurre así:Ej: extraccion por cajero automático

Necesito que todos vean un estado consistente del sistemaEstado: valores de las variables en un momento dado de tiempo

Page 53: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 53

Acciones atómicasTraspaso de fondos de una cuenta bancaria a otra:

Proceso de pedido de transferenciaProceso de autenticación de clienteProceso de autenticación de cuenta a la que se transfiereProceso de debitoProceso de Acreditación

Acción atómica

Page 54: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 54

Acciones atómicas• Una acción es atómica si los procesos que la

realizan no saben de la existencia de ningún otro proceso activo, y ningún otro proceso activo tiene constancia de las actividades de los procesos durante el tiempo en el que están realizando la acción.

• Una acción es atómica si los procesos que la realizan no se comunican con otros procesos mientras se está realizando la acción.

Page 55: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 55

Acciones atómicas

• Una acción es atómica si los procesos que la realizan no pueden detectar ningún cambio de estado salvo aquellos realizados por ellos mismos, y si no revelan sus cambios de estado hasta que la acción se haya completado.

• Las acciones son atómicas si, en lo que respecta a otros procesos, pueden ser consideradas indivisibles e instantáneas, de forma que los efectos sobre el sistema sean como si estuvieran entrelazadas y no en concurrencia.

Page 56: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 56

Acciones atómicas de dos fases

• Primer fase– Petición de recursos

• Segunda fase– Liberación de recursos

Si se liberan recursos antes que la acción atómica finalice puede existir problemas con la recuperación de un fallo

Page 57: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 57

Control de recursos

Tienen injerencia los procesos competitivos.Aunque no se comuniquen entre ellos, pueden comunicarse para coordinar el acceso a recursos.Muy pocos recursos admiten el acceso concurrente de procesos.

Page 58: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 58

Control de recursos

Cuando varios procesos que compiten necesiten recursos el modo de operación es el siguiente:

– Petición del recurso– Utilización – Liberación

Page 59: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 59

Petición de recursos

• Un recurso se puede solicitar con:– Acceso compartido: se puede utilizar

concurrentemente por más de un proceso.

– Acceso exclusivo: acceso en cada instante a un único proceso.

Algunos se pueden utilizar en cualquier modo

Page 60: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 60

Petición de recursos

• Si un proceso pide acceso compartido mientras otro lo está usando en forma exclusiva ,entonces debe esperar.

Si se estaba usando en forma compartida puede seguir.

Page 61: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 61

Petición de recursos

• Como los procesos pueden bloquearse al solicitar recursos, no deben pedirlos hasta que lo necesiten.

• Una vez asignados deben liberarse tan pronto como sea posible, una vez que la acción que se quería realizar con el recurso haya finalizado

Page 62: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 62

Interbloqueo ( deadlock, abrazo mortal)

• Dos procesos forman un interbloqueo cuando cada uno mantiene un recurso mientras que espera el recurso mantenido por el otro.

type Sem is ...;

X : Sem := 1; Y : Sem := 1;

task A;

task body A is

begin

...

Wait(X);

Wait(Y);

...

end A;

task B;

task body B is

begin

...

Wait(Y);

Wait(X);

...

end B;

Page 63: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 63

Interbloqueo activo

type Indicador is (Arriba, Abajo);

Indicador1 : Indicador := Arriba;

• Dos procesos forman un interbloqueo activo si cada uno se ejecuta, pero ninguno es capaz de avanzar.

task A;

task body A is

begin

...

while Indicador1 =

Arriba loop

null;

end loop;

...

end A;

task B;

task body B is

begin

...

while Indicador1 = Arriba loop

null;

end loop;

...

end A;

Page 64: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 64

Inanición

Varios procesos están intentando continuamente conseguir acceso exclusivo al mismo recurso. Si la política con que se asignan no es justa, puede que un proceso no acceda nunca al recurso.

Page 65: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 65

Ejecución concurrente en Java• Clase Thread

• Interfaz Runnable

Crear hilos:

Crear una subclase de Thread

Crear una clase que implemente Runnable

Page 66: Informática III 2009Ing. Estela D'Agostino1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de control.

Informática III 2009 Ing. Estela D'Agostino 66

Identificación de hilos