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

Slides:



Advertisements
Presentaciones similares
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Advertisements

TEMA 1 Introducción a la Programación Concurrente
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
DIAGRAMA DE ACTIVIDAD Roberto Certain Leonardo Molina.
Programación Interactiva Introducción a Java
Programación Interactiva Hilos
Lenguaje de programación Java
TEMA 2: «CONFIGURACIÓN DE MÁQUINAS VIRTUALES»
Administración de procesos y del procesador.
Introducción a Programación Concurrente
Concurrencia En el mundo real pasan muchas cosas a la vez
RMI Remote Method Invocation
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (apunts de l’assignatura en format transparència) Multithreading and.
Tema 12: Programación multihilo
7a.1 Silberschatz, Galvin y Gagne ©2003 Sistemas Operativos 6ª edición Capítulo 7: Sincronización de procesos parte a.
 son segmentos de código de un programa que se ejecutan secuencialmente de modo independiente de las otras partes del programa.
10. Hilos Definición y ejecución Thread y Runnable
Java. Threads (Hebras) Los sistemas operativos actuales permiten la multitarea, aunque esta se de tiempo compartido cuando se trabaja con un solo procesador.
Modificadores.
Profesor: Miguel Angel Vidal
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
SCJP Sun Certified Programmer for Java 6
Un hilo es un único flujo de ejecución dentro de un proceso. Un proceso es un programa ejecutándose dentro de su propio espacio de direcciones. Los.
Deadlocks Abrazo Mortal Bloqueos mutuos
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Unidad III Administración de procesos
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Sincronización de Threads en Java Josep Joan.
Profesor: Rodrigo Sanhueza Figueroa
Sistemas en tiempo real (STR)
PROGRAMACION CONCURRENTE
Capítulo 9: THREADS Carlos Oñate Bravo. THREADS Start New Threads lRecognize Thread States and Transitions Use Object Locking to Avoid Concurrent Access.
Animación usando Threads (lógica) Tema 10. Threads Definición: Un thread es un flujo secuencial de control dentro de un programa. Definición: Un thread.
Introducción a los Sistemas Operativos
Monitores Mecanismo sincronización de nivel más alto que semáforos Construcción a nivel de lenguaje de programación que controla el acceso a datos compartidos.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
Paquetes e interfaces.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
TEMA 2. Programación Concurrente
Programación de Dispositivos Móviles “Conceptos de J2ME” Rogelio Ferreira Escutia.
Algoritmos y programación 3 - cátedra Fontela Concurrencia.
Informática III 2009 Ing. Estela D'Agostino 1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de.
FLOR ALBA ACEVEDO COD JENNIFFER TATIANA TORRES COD
Unidad 2 – Gestión de Procesos
EQUIPO 4 INTEGRANTES: ALVARADO LUNA AIDA ARACELI MENESES AGUILAR AXEL NESTOR CONTRERAS MONDRAGON ALAN HEMIR SANCHEZ MUÑIZ JOSE FRANCISCO.
Threads en Java  Threads: programas multitarea  Creación de threads  Ciclo de vida de un thread  Sincronización.
UTFSM - Sistemas Operativos
CRUCIGRAMA HORIZONTALES: VERTICALES:
THREADS JAVA Ing. Esp. Ricardo Cujar. HILO Un hilo es un proceso que se está ejecutando en un determinado momento en el sistema operativo. Se les define.
Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II.
Licenciatura Tecnologías de la Información y Comunicación
Elementos y tipos de sistemas operativos
Hilos y Multihilos Un thread (hilo, flujo de control del programa) representa un proceso individual ejecutándose en un sistema. A veces se les llama.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
Hilos Java Profesor Elian Rojas Berrocal
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
Historia de los sistemas operativos. Los Sistemas Operativos han sufrido una serie de cambios revolucionarios llamados generaciones. Hay cuatro generaciones:
Evelin Ramos Cabrera 1° B
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Tema 1: Concurrencia con Java
PROGRAMACION ORIENTADA A OBJETOS
Transcripción de la presentación:

INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA

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

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III THREAD / HILO Un programa Un thread Un thread es un flujo de control secuencial en un programa.

Ing. E. D'AgostinoINFORMATICA III MULTIPLES THREADS Un programa dos threads

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III 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)

Ing. E. D'AgostinoINFORMATICA III Sirven para aislar tareas Java.lang.Thread THREAD

Ing. E. D'AgostinoINFORMATICA III 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 Programación concurrente OO

Ing. E. D'AgostinoINFORMATICA III Aplicaciones concurrentes Descargas de grandes archivos de la WWW Construcción de interfases gráficas Recolección de basura de Java (garbage colector)

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III Estados de hilos: ciclo de vida nacidolisto ejecución muerto dormidosuspendidoen 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 Cumplio condición ejecutable parado

Ing. E. D'AgostinoINFORMATICA III 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.

Ing. E. D'AgostinoINFORMATICA III PRODUCTOR - CONSUMIDOR Problema tipo que ejemplifica la necesidad de sincronización

Ing. E. D'AgostinoINFORMATICA III Escenarios productor /consumidor Un thread escribe datos en un archivo Otro thread lee datos del archivo Comparten recursos debo sincronizarlos Sincronización

Ing. E. D'AgostinoINFORMATICA III Sincronización Thread bloquea Thread Solo un thread por vez puede acceder a un objeto

Ing. E. D'AgostinoINFORMATICA III 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.

Ing. E. D'AgostinoINFORMATICA III 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.

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III Métodos sincronizados Instancia (bloquean objetos) Clase (bloquean clases)

Ing. E. D'AgostinoINFORMATICA III 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.

Ing. E. D'AgostinoINFORMATICA III Un thread se puede crear: extendiendo una clase de Thread implementando la interface Runnable Creacion de threads

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III 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 )

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III 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

Ing. E. D'AgostinoINFORMATICA III Ejemplo: Sincronización de hilos

Ing. E. D'AgostinoINFORMATICA III Interface Runnable Otra forma de crear un thread es implementando la interface runnable, que nos provee el metodo run, para implementarlo en el thread.

Ing. E. D'AgostinoINFORMATICA III Ejemplo: Interface Runnable

Ing. E. D'AgostinoINFORMATICA III 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.