Algoritmos y programación 3 - cátedra Fontela Concurrencia
A3F Concurrencia La Real Academia Española dice: Concurrencia. 1. f. Acción y efecto de concurrir. 2. f. Conjunto de personas que asisten a un acto o reunión. 3. f. Coincidencia, concurso simultáneo de varias circunstancias. En computación: Capacidad de los sistemas de realizar mas de una tarea al mismo tiempo
A3F Concurrencia Proceso Programa en ejecución Tiene recursos propios Hilo Subproceso Utiliza los recursos del proceso
A3F Tipos de concurrencia Multiprogramación Un solo procesador Multiprocesamieto Mas de un procesador Computación distribuida Los procesos corren en máquinas distintas
A3F Ademas... Varios procesos en paralelo Ej: Varias instancias de un programa Comparten recursos externos (archivos) Varios hilos (multithreading) Dentro del mismo proceso, mas de un hilo Comparten recursos externos e internos (objetos, clases)
A3F Usos Optimización de tiempos Operaciones de E/S son lentas Hago cosas “en background” mientras el usuario sigue trabajando. Ejemplo, eclipse compila todo el tiempo sin que yo tenga que dejar de escribir Diseño
A3F Concurrencia en Java Interfaz Runnable y clase Thread Manejada por la JVM Scheduler basado en prioridades
A3F Concurrencia en Java class Hilo extends Thread { public void run() { //codigo del hilo }... Hilo unHilo = new Hilo(); unHilo.start();//start invoca a run()...
A3F Concurrencia en Java class Hilo implements Runnable { public void run() { //codigo del hilo }... Thread t = new Thread(new Hilo()); t.start();...
A3F Concurrencia en C# public class Hilo { public void run() { //codigo del hilo }... Hilo unHilo = new Hilo(); Thread t = new Thread (new ThreadStart(unHilo.run)); t.start();
A3F Problemas de la concurrencia No-determinismo No tenemos control sobre el flujo de ejecución Recursos críticos No pueden ser accedidos por varios objetos al mismo tiempo Necesitamos exclusión mutua Semaforos Cerrojos Monitores
A3F Problemas de la concurrencia Deadlock (interbloqueo)
A3F Problemas de la concurrencia Starvation (inanición) Proceso que nunca obtiene recursos Inversion de prioridades
A3F Ejercicios