1 / 32

INFORMATICA III

INFORMATICA III. ESCUELA DE INGENIERIA ELECTRONICA. DEPARTAMENTO DE SISTEMAS E INFORMATICA. CONCURRENCIA THREADS CONCEPTOS BÁSICOS SINCRONIZACIÓN PRIORIZACIÓN GRUPOS DE THREADS. Concurrencia. En el mundo real pasan muchas cosas a la vez

Télécharger la présentation

INFORMATICA III

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

  2. CONCURRENCIA • THREADS • CONCEPTOS BÁSICOS • SINCRONIZACIÓN • PRIORIZACIÓN • GRUPOS DE THREADS

  3. Concurrencia • En el mundo real pasan muchas cosas a la vez • En la modelizacion de software también pueden ocurrir muchas cosas concurrentemente: • Con varias computadoras se pueden ejecutar múltiples programas • Con una sola computadora se pueden simular la ejecución paralela de varias actividades • múltiples hilos de ejecución comparten el uso de un procesador INFORMATICA III - 2003

  4. THREAD / HILO Un thread Un thread es un flujo de control secuencial en un programa. Un programa INFORMATICA III - 2003

  5. MULTIPLES THREADS dos threads Un programa INFORMATICA III - 2003

  6. Concurrencia • 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 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) INFORMATICA III - 2003

  8. THREAD • Sirven para aislar tareas • Java.lang.Thread INFORMATICA III - 2003

  9. Programación concurrente OO • La concurrencia es natural en OO • Ada y Simula 67 ya soportaban concurrencia • Java es único entre los lenguajes de propósitos generales que pone primitivas de concurrencia a disposición del programador 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) 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 INFORMATICA III - 2003

  12. nacido listo ejecución dormido en espera bloqueado suspendido muerto Estados de hilos: ciclo de vida Invocación de un método ejecutable Cumplio condición Completar E/S Asignar procesador Termina quantum parado Solicitud E/S Invocación de métodos Invocación de un método Expìra el tiempo 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. INFORMATICA III - 2003

  14. PRODUCTOR - CONSUMIDOR • Problema tipo que ejemplifica la necesidad de sincronización INFORMATICA III - 2003

  15. Sincronización Escenarios productor /consumidor • Un thread escribe datos en un archivo • Otro thread lee datos del archivo Comparten recursos debo sincronizarlos INFORMATICA III - 2003

  16. Sincronización • Solo un thread por vez puede acceder a un objeto bloquea Thread Thread 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. 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. INFORMATICA III - 2003

  19. Métodos sincronizados 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; }} INFORMATICA III - 2003

  20. Métodos sincronizados Métodos sincronizados Instancia (bloquean objetos) Clase (bloquean clases) 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 run • cuando run devuelve el control el thread ha terminado. INFORMATICA III - 2003

  22. Creacion de threads Un thread se puede crear: • extendiendo una clase de Thread • implementando la interface Runnable 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 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) 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 INFORMATICA III - 2003

  26. Planificación de threads • 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. INFORMATICA III - 2003

  27. Planificación de threads • 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. INFORMATICA III - 2003

  28. Planificación de threads • 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. INFORMATICA III - 2003

  29. Sincronización de hilos Ejemplo: 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. INFORMATICA III - 2003

  31. Interface Runnable Ejemplo: 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. INFORMATICA III - 2003

More Related