informatica iii escuela de ingenieria electronica departamento de sistemas e informatica

32
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Upload: moises-calzada

Post on 23-Jan-2016

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

INFORMATICA III

ESCUELA DE INGENIERIA ELECTRONICA

DEPARTAMENTO DE SISTEMAS E INFORMATICA

Page 2: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

• CONCURRENCIA

• THREADS– CONCEPTOS BÁSICOS– SINCRONIZACIÓN – PRIORIZACIÓN– GRUPOS DE THREADS

Page 3: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 3

Concurrencia

En el mundo real pasan muchas cosas a la vezEn la modelizacion de software también pueden

ocurrir muchas cosas concurrentemente:Con varias computadoras se pueden ejecutar múltiples

programasCon una sola computadora se pueden simular la

ejecución paralela de varias actividadesmúltiples hilos de ejecución comparten el uso de un procesador

Page 4: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 4

THREAD / HILO

Un programa

Un thread

Un thread es un flujo de control secuencialen un programa.

Page 5: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 5

MULTIPLES THREADS

Un programa

dos threads

Page 6: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 6

Java soporta la ejecución paralela de varios threads (hilos)múltiples threads ejecutándose en una máquina

pueden compartir recursos (memoria)múltiples threads ejecutándose en varias

máquinas necesitan capacidades de comunicación

Concurrencia

Page 7: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 7

Manejo de la Concurrencia

• Dos formas de implementación:

• Ejecución de un hilo hasta que termine o se autobloquee (actividades de E/S) (deja el control)

• Ejecución de un hilo hasta que termine, se autobloquee o le saquen el control (cantidad de tiempo)(es desalojado)

Page 8: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 8

Sirven para aislar tareas

Java.lang.Thread

THREAD

Page 9: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 9

La concurrencia es natural en OOAda y Simula 67 ya soportaban concurrenciaJava es único entre los lenguajes de propósitos

generales que pone primitivas de concurrencia a disposición del programador

Programación concurrente OO

Page 10: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 10

Aplicaciones concurrentes

Descargas de grandes archivos de la WWW

Construcción de interfases gráficas

Recolección de basura de Java (garbage colector)

Page 11: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 11

Inicio de la ejecución de un hilo

Se invoca al método start. Este crea los recursos necesarios del sistema para ejecutar el thread, y llama al método run del thread.

El invocador se ejecuta en paralelo con el thread

Page 12: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 12

Estados de hilos: ciclo de vidanacido

listo

ejecución

muerto

dormido suspendidoen espera bloqueado

Solicitud E/S

Completar E/S

Expìra el tiempo

Termina quantum

Asignar procesador

Invocación de métodos

Invocación de un método

Invocación de un método

Cumplio condición

ejecutable

parado

Page 13: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 13

Sincronización

•Pueden operar en forma independiente. Cada uno tiene todos los datos y métodos que necesita.

•Comparten datos y deben considerar el estado y las actividades de otros threads.

Page 14: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 14

PRODUCTOR - CONSUMIDOR

• Problema tipo que ejemplifica la necesidad de sincronización

Page 15: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 15

Escenarios productor /consumidorUn thread escribe datos en un archivoOtro thread lee datos del archivo

Comparten recursos debo sincronizarlos

Sincronización

Page 16: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 16

Sincronización

Thread

bloquea

Thread

•Solo un thread por vez puede acceder a un objeto

Page 17: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 17

Sincronización de hilos

• Java usa monitores para la sincronización de hilos.

• Todo objeto con métodos “synchronized” es un monitor.

• El monitor sólo permite a un hilo por vez ejecutar un método “synchronized” sobre el objeto.

Page 18: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 18

Métodos sincronizados

• Los métodos que tengan que acceder al mismo objeto, se deben declarar “synchronized” para lograr el bloqueo.

• La ejecución de dos métodos sincronizados es mutuamente excluyente.

Page 19: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 19

class Account {

private double balance

public Account ( double inicial) {

balance=inicial; }

public synchronized double getBalance{

return balance; }

public synchronized void deposito (double amount) { balance += amount; }}

Métodos sincronizados

Page 20: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 20

Métodos sincronizados

Métodos sincronizados

Instancia(bloquean objetos)

Clase(bloquean clases)

Page 21: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 21

Creacion de threads

Crear un thread Configurarlo : nombre, prioridad,etc.Ejecutarlo :

invocar el método start, éste invoca al método runcuando run devuelve el control el thread ha

terminado.

Page 22: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 22

Un thread se puede crear:extendiendo una clase de Threadimplementando la interface Runnable

Creacion de threads

Page 23: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 23

Prioridades De Los threads

• La prioridad de un thread lo afecta cuando se está ejecutando en relación a otros threads.

• Ejecución de múltiples threads

• scheduling

• algoritmo de scheduling de prioridad fija

Page 24: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 24

Prioridades de los Threads

• Todo thread en Java tiene una prioridad en el intervalo :• Thread.MIN_PRIORITY (constante que vale 1)• Thread.MAX_PRIORITY (constante que vale 10)

• Thread.NORM_PRIORITY (constante que vale 5)

Page 25: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 25

Planificación de threads

• Mantener un hilo de máxima prioridad ejecutándose en todo momento, de acuerdo a la forma en que maneje la concurrencia.

• La aparición de hilos de alta prioridad puede posponer indefinidamente la ejecución de hilos de prioridades bajas

Page 26: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 26

• Un hilo puede llamar al método yield para dar oportunidad a otros hilos de su misma prioridad a ejecutarse, esto se usa siempre que el manejo de la concurrencia no este basada en quantum.

Planificación de threads

Page 27: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 27

• Un hilo se ejecuta hasta que ocurre alguna de las situaciones siguientes:• muere.• se bloquea para entrada/salida.• invoca a sleep.• invoca a yield.• es desalojado por un hilo de mayor prioridad.• hasta que expira su quantum.

Planificación de threads

Page 28: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 28

• Un hilo con prioridad más alta que el que se está ejecutando, puede desalojar a éste si:• si invoca a resume.• si se acaba el período de sleep.• si se completa la E/S por la cual se bloqueo.• si se invoca notify o notifyAll para un hilo que

había invocado wait.

Planificación de threads

Page 29: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 29

Ejemplo:

Sincronización de hilos

Page 30: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 30

Interface Runnable

• Otra forma de crear un thread es implementando la interface runnable, que nos provee el metodo run, para implementarlo en el thread.

Page 31: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 31

Ejemplo:

Interface Runnable

Page 32: INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

Ing. E. D'Agostino INFORMATICA III - 2003 32

Grupos de hilos

Permite identificar varios hilos como pertenecientes a un grupo de hilos.

La clase ThreadGroup contiene los métodos necesarios para crear y manipular grupos de hilos.

El grupo tiene un nombre único.Los grupos se pueden tratar colectivamente.