1. Fundamentos. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS

Tamaño: px
Comenzar la demostración a partir de la página:

Download "1. Fundamentos. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS"

Transcripción

1 Hilos 1. Fundamentos. Los procesadores y los Sistemas Operativos modernos permiten la multitarea, es decir, la realización simultánea de dos o más actividades. En la realidad, un ordenador con una sola CPU no puede realizar dos actividades a la vez. Sin embargo los Sistemas Operativos actuales son capaces de ejecutar varios programas simultáneamente aunque sólo se disponga de una CPU: reparten el tiempo entre dos (o más) actividades, o bien utilizan los tiempos muertos de una actividad (por ejemplo, operaciones de lectura de datos desde el teclado) para trabajar en la otra. En ordenadores con dos o más procesadores la multitarea es real, ya que cada procesador puede ejecutar un hilo o thread diferente. La siguiente figura muestra los esquemas correspondientes a un programa con uno o dos hilos. Un proceso es un programa ejecutándose de forma independiente y con un espacio propio de memoria. Un Sistema Operativo multitarea es capaz de ejecutar más de un proceso simultáneamente. Un hilo es un flujo secuencial simple dentro de un proceso. Un único proceso puede tener varios hilos ejecutándose. Un sistema multitarea da realmente la impresión de estar haciendo varias cosas a la vez y eso es una gran ventaja para el usuario. Sin el uso de hilos hay tareas que son prácticamente imposibles de ejecutar, particularmente las que tienen tiempos de espera importantes entre etapas. Los sistemas de un solo hilo utilizan un enfoque llamado bucle de suceso con sondeo. Cuando un hilo se bloquea deteniendo su ejecución, el programa completo se detiene. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS Permite a la computadora ejecutar más de un proceso concurrentemente. La unidad de código más pequeña es el proceso. Los procesos son tareas pesadas que necesitan su propio espacio de direccionamiento. La comunicación entre procesos es cara y limitada. Florentino Fdez. Riverola 1

2 BASADA EN HILOS Un programa simple puede realizar más de una tarea simultáneamente. La unidad de código más pequeña es el hilo. Los hilos (procesos ligeros) son más ligeros que los procesos (procesos pesados). Comparten el mismo espacio de direcciones y el mismo proceso pesado. La comunicación entre hilos es ligera y el cambio contexto de un hilo al siguiente es menos costoso. Java hace uso de entornos multitarea basados en procesos, pero la multitarea basada en hilos está bajo el control de Java. 2. El modelo de hilo de Java. El intérprete de Java utiliza las prioridades para determinar cómo debe tratar cada hilo con respecto a los demás. La prioridad de un hilo se utiliza para decidir cuándo se pasa a ejecutar otro hilo (cambio de contexto). Nacido start Listo expiración de cuantum despachar (asignar un procesador) notify / notifyall en Ejecución wait sleep suspend completar E/S emitir solicitud de E/S en Espera dormido suspendido bloqueado expira el intervalo de sueño stop completar resume muerto Ciclo de vida de un hilo Las reglas que determinan un cambio de contexto son las siguientes: Un hilo puede ceder voluntariamente el control por abandono explícito, al quedarse dormido o al bloquearse en espera de una operación de E/S pendiente. Florentino Fdez. Riverola 2

3 => Se examinan los hilos restantes y se selecciona aquel que tenga mayor prioridad. Un hilo que no libera la CPU puede ser desalojado por otro de mayor prioridad. => (multitarea por desalojo). En el caso de hilos de igual prioridad que compiten por la CPU, depende del S.O. ( precaución!). En Windows 95 los hilos de igual prioridad se reparten la CPU (time-slicing) mediante un algoritmo circular (round-robin). En Solaris 2.x los hilos de igual prioridad deben ceder el control voluntariamente, sino los demás hilos no se ejecutarán. SINCRONIZACIÓN Java implementa una versión de un modelo clásico de sincronización entre procesos, llamado monitor (definido inicialmente por Hoare, y que puede entenderse como una pequeña caja negra en la que sólo cabe un hilo). Los monitores se utilizan para proteger un recurso compartido y evitar que sea manipulado por más de un hilo simultáneamente. En Java cada objeto tiene su propio monitor, en el que se entra cuando se llama a uno de los métodos sincronizados del objeto. Una vez que un hilo está dentro de un método sincronizado, ningún otro hilo puede llamar a otro método sincronizado del mismo objeto. INTERCAMBIO DE MENSAJES Java proporciona métodos predefinidos que permiten que un hilo entre en un método sincronizado de un objeto, y espere ahí hasta que otro hilo le notifique explícitamente que debe salir de él. LA CLASE THREAD Y LA INTERFAZ RUNNABLE Para crear un nuevo hilo en Java, el programa debe heredar de la clase Thread o implementar la interfaz Runnable. Los métodos básicos para gestionar los hilos se enumeran a continuación: public final String getname() Obtiene el nombre de un hilo. public final int getpriority() Obtiene la prioridad de un hilo. public final native boolean isalive() Comprueba si un hilo se está ejecutando todavía. Devuelve true si todavía está ejecutándose o false en caso contrario. public final void join() throws InterruptedException Espera hasta que finalice el hilo sobre el que se llama. Florentino Fdez. Riverola 3

4 public final void resume() Reanuda la ejecucuión de un hilo suspendido public void run() Punto de entrada de un hilo. public static native void sleep(long millis) throws InterruptedException Suspende un hilo durante un período de tiempo public native synchronized void start() Comienza un hilo llamando a su método run(). public final void stop() Detiene la ejecución de un hilo. public final void suspend() Suspende un hilo. 3. El hilo principal. Creación de un hilo. Cuando se ejecuta un programa Java ya existe un hilo en ejecución, llamado hilo principal. Este hilo es especial por dos razones: Desde él se crearán el resto de hilos del programa. Debe ser el último hilo que termine su ejecución. Si un hilo principal finaliza antes que un hijo, Java puede bloquearse (hang). El método run() es el punto de entrada de un nuevo hilo de ejecución concurrente dentro de un programa. El hilo termina cuando finalice el método run(). Para que un hilo comience su ejecución se debe llamar a su método start(). La mayoría de los programadores en Java crean hilos heredando de la clase Thread cuando modifican o mejoran dicha clase. Si lo que se necesita es simplemente la funcionalidad de un hilo, lo normal es implementar la interfaz Runnable. 4. Creación de múltiples hilos. isalive(), join(), suspend(), resume(). Los programas en Java pueden generar tantos hilos como necesiten. Para asegurarse de que un hilo hijo ha terminado se pueden utilizar dos métodos: isalive() y join(). Se puede pasar un hilo que está ejecutándose al estado suspendido mediante la llamada al método suspend(), para reanudarlo se llama al método resume(). Esto Florentino Fdez. Riverola 4

5 puede ser útil por ejemplo, en el caso de un hilo que implemente un reloj en pantalla. Si el usuario no desea el reloj, el hilo puede suspenderse. 5. Prioridades. setpriority(), getpriority(). Los hilos realizan diferentes tareas dentro de nuestros programas, y estas tareas pueden tener adscritos diferentes niveles de importancia. Para reflejar la importancia de las tareas que realizan, cada hilo tiene asociada una prioridad utilizada por el sistema en tiempo de ejecución como ayuda para determinar qué hilo debe ejecutarse en un instante determinado. La manera en la que un S.O. implementa la multitarea puede afectar al tiempo de CPU disponible para cada hilo. Si se desea lograr un comportamiento predecible sobre distintas plataformas, se deben programar hilos que voluntariamente cedan el control a la CPU. En concreto, los hilos que comparten la misma prioridad deben ceder el control de vez en cuando para asegurar que todos los hilos tengan oportunidad de ejecutarse en un S.O. con multitarea no apropiativa (non-preemptive). Cuándo ocurre exactamente el desalojo depende de la máquina virtual que tengamos. No hay garantía, sino sólo la esperanza general de que la preferencia se dará generalmente a los hilos de mayor prioridad en ejecución. Es conveniente utilizar la prioridad sólo para afectar a la política de planificación con el objetivo de mejorar la eficiencia. No es conveniente basar el diseño de un algoritmo en la prioridad de los hilos. Para escribir código con múltiples hilos que se ejecute correctamente en diversas plataformas debemos asumir que un hilo puede ser desalojado en cualquier momento, por lo que hay que proteger siempre el acceso a los recursos compartidos. Tampoco se debe realizar suposiciones sobre el orden en que se conceden los bloqueos a los hilos ni sobre el orden en el que los hilos en espera recibirán las notificaciones, ya que todos esos aspectos dependen de cada sistema. Cuando está ejecutándose un hilo de baja prioridad y otro de mayor prioridad se despierta de su sueño o de la espera de cierta operación de E/S, el hilo de menor prioridad es desalojado. Para asignar una prioridad a un hilo se utiliza el método setpriority(). Los posibles valores están comprendidos entre MIN_PRIORITY (1) y MAX_PRIORITY (10). La constante NORM_PRIORITY (5) establece la prioridad por defecto. Para obtener la prioridad de un hilo se utiliza el método getpriority(). 6. Grupos de hilos. La clase THREADGROUP Todo hilo de Java debe formar parte de un grupo de hilos (ThreadGroup). Puede pertenecer al grupo por defecto o a uno explícitamente creado por el usuario. Los grupos de hilos proporcionan una forma sencilla de manejar múltiples hilos como un solo objeto. Así, por ejemplo es posible parar varios hilos con una sola llamada al Florentino Fdez. Riverola 5

6 método correspondiente. Una vez que un hilo ha sido asociado a un grupo de hilos, no puede cambiar de grupo. Representación de los grupos de hilos Cuando se arranca un programa, el sistema crea un ThreadGroup llamado main. Si en la creación de un nuevo hilo no se especifica a qué grupo pertenece, automáticamente pasa a pertenecer al threadgroup del hilo desde el que ha sido creado (conocido como current thread group y current thread, respectivamente). Si en dicho programa no se crea ningún ThreadGroup adicional, todos los hilos creados pertenecerán al grupo main (en este grupo se encuentra el método main()). Para conseguir que un hilo pertenezca a un grupo concreto, hay que indicarlo al crear el nuevo hilo, según uno de los siguientes constructores: public Thread (ThreadGroup grupo, Runnable destino) public Thread (ThreadGroup grupo, String nombre) public Thread (ThreadGroup grupo, Runnable destino, String nombre) A su vez, un ThreadGroup debe pertenecer a otro ThreadGroup. Como ocurría en el caso anterior, si no se especifica ninguno, el nuevo grupo pertenecerá al ThreadGroup desde el que ha sido creado (por defecto al grupo main). La clase ThreadGroup tiene dos posibles constructores: ThreadGroup (ThreadGroup parent, String nombre); ThreadGroup (String nombre); Donde el segundo de los cuales toma como padre al grupo de hilos al cual pertenezca el hilo desde el que se crea (Thread.currentThread()). En la práctica los grupos de hilos no se suelen utilizar demasiado. Su uso práctico se limita a efectuar determinadas operaciones de forma más simple que de forma individual. En cualquier caso, véase el siguiente ejemplo: ThreadGroup mithreadgroup = new ThreadGroup("Mi Grupo de Threads"); Thread mithread = new Thread(miThreadGroup, un thread para mi grupo"); Donde se crea un grupo de hilos (mithreadgroup) y un hilo que pertenece a dicho grupo (mithread). Florentino Fdez. Riverola 6

7 7. Sincronización. La sentencia synchronized. Cuando dos o más hilos necesitan acceder de manera simultánea a un recurso compartido, necesitan asegurarse de que sólo uno de ellos accede al mismo en un instante dado. El hecho de que varios hilos llamen al mismo método sobre el mismo objeto a la vez se denomina condición de carrera (race codition). En C/C++ la sincronización de procesos se realiza mediante llamadas a primitivas del Sistema Operativo. Java implementa la sincronización a través de elementos del propio lenguaje (métodos synchronized). En Java existen dos niveles de bloqueo de un recurso: a nivel de objetos y a nivel de clases BLOQUEO A NIVEL DE OBJETOS: MÉTODOS SYNCHRONIZED Una clase cuyos objetos se deben proteger de interferencias en un entorno con múltiples hilos declara generalmente sus métodos apropiados como synchronized. Si un hilo invoca a un método synchronized sobre un objeto, en primer lugar se adquiere el bloqueo de ese objeto, se ejecuta el cuerpo del método y después se libera el bloqueo. Otro hilo que invoque un método synchronized sobre ese mismo objeto se bloqueará hasta que el bloqueo se libere. La sincronización fuerza a que la ejecución de los dos hilos sea mutuamente exclusiva en el tiempo. Los accesos no sincronizados no esperan por ningún bloqueo, sino que proceden independientemente de los bloqueos que pueda haber en el objeto. La posesión de los bloqueos es por hilo, por lo que al invocar a un método sincronizado desde el interior de otro método sincronizado sobre el mismo objeto procederá sin bloqueo. El bloqueo se liberará sólo cuando el método sincronizado más externo retorne. Este comportamiento de posesión por hilo impide que un hilo se bloquee por un bloqueo que ya posee, y permite invocaciones recursivas a métodos e invocaciones de métodos heredados, que pueden estar sincronizados. Los constructores no necesitan ser synchronized porque se ejecutan sólo cuando se crea un objeto, y eso sólo puede suceder en un hilo para un objeto dado. De hecho, los constructores no pueden ser declarados synchronized. Cuando una clase extendida redefine a un método synchronized, el nuevo método puede ser synchronized o no. El método de la superclase será synchronized cuando se invoque. Si el método no sincronizado de la subclase utiliza super para invocar al método de la superclase, el bloqueo del objeto se adquirirá en ese momento y se liberará cuando se vuelva del método de la superclase. BLOQUEO A NIVEL DE CLASE: MÉTODOS ESTÁTICOS SINCRONIZADOS Florentino Fdez. Riverola 7

8 Los métodos estáticos también se pueden declarar synchronized. Todos los objetos tienen asociado un objeto Class. Los métodos estáticos sincronizados adquieren el bloqueo del objeto Class de su clase. Dos hilos no pueden ejecutar métodos estáticos sincronizados de la misma clase al mismo tiempo. Si se comparten datos estáticos entre hilos, su acceso debe ser protegido utilizando métodos estáticos sincronizados. La adquisición del bloqueo del objeto Class en un método estático sincronizado no afecta a los objetos de esa clase. Se puede seguir invocando a métodos sincronizados de un objeto mientras otro hilo tiene el bloqueo del objeto Class en un método estático sincronizado. Sólo se bloquean otros métodos estáticos sincronizados. Para sincronizar el acceso a objetos de una clase que no fue diseñada para acceso multihilo, se realizan las llamadas a los métodos dentro de un bloque sincronizado: synchronized(objeto) { // sentencias que deben ser sincronizadas; } 8. Comunicación entre hilos. Java proporciona un mecanismo de comunicación entre procesos a través de los métodos wait(), notify(), y notifyall() definidos en la clase Object (todas las clases disponen de ellos). Cualquiera de estos tres métodos sólo puede ser llamado desde dentro de un método synchronized. public final void wait() throws InterruptedException Le indica al hilo en curso que abandone el monitor y se vaya a dormir hasta que otro hilo entre en el mismo monitor (algún método sinchronized de la misma clase) y llame a notify(). Existen otras formas para este método donde se permite especificar un período de tiempo de espera. public final native void notify() Despierta al primer hilo que realizó una llamada a wait() sobre el mismo objeto. public final native void notifyall() Despierta todos los hilos que realizaron una llamada a wait() sobre el mismo objeto. El hilo con mayor prioridad de entre los que han sido despertados es el primero en ejecutarse. Un buen ejemplo es el problema del productor/consumidor modificado de forma que el productor tiene que esperar a que el consumidor haya terminado para empezar a producir más datos. 9. Bloqueos. deadlock. Florentino Fdez. Riverola 8

9 Este tipo de error está relacionado con la multitarea y es necesario evitarlo. Se produce cuando dos hilos tienen una dependencia circular en un par de objetos sincronizados. Siempre que tenemos 2 hilos y 2 objetos con bloqueo, puede producirse un deadlock. Se trata de una situación en la que cada uno de los hilos tiene el bloqueo de uno de los objetos y está esperando por el bloqueo del otro objeto. Si un objeto X tiene un método synchronized que invoca a un método synchronized del objeto Y, y éste a su vez tiene un método synchronized que invoca a un método synchronized del objeto X, puede suceder que dos hilos estén esperando a que el otro finalice para obtener el bloqueo, y ninguno de los dos podrá ejecutarse. Esta situación se denomina también abrazo mortal. El programador es el responsable de evitar que se produzcan deadlocks. El sistema en tiempo de ejecución no los detecta, ni los evita. Los deadlocks son un tipo de error difícil de resolver por dos razones: Ocurre en raras ocasiones, cuando los dos hilos intentan entrar a la vez. En el bloqueo pueden estar involucrados más de dos hilos y dos objetos sincronizados. Florentino Fdez. Riverola 9

Tema 6. Threads: programas multitarea

Tema 6. Threads: programas multitarea Tema 6. Threads: programas multitarea Procesos e hilos Creación de threads Ciclo de vida de un thread Sincronización Prioridades Grupos de threads Relación de métodos Ejemplo sincronización 1 Procesos

Más detalles

Tema 12: Programación multihilo

Tema 12: Programación multihilo Tema 12: Programación multihilo Antonio J. Sierra Índice 1. Modelo de hilo en Java. 2. El hilo principal. 3. Creación de un hilo. 4. Creación de múltiples hilos. Prioridades. 5. Comunicación entre hilos.

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

Laboratorio I Java Threads (Silberschatz Galvin)

Laboratorio I Java Threads (Silberschatz Galvin) Laboratorio I Java Threads (Silberschatz Galvin) Un proceso es un programa ejecutandose dentro de su propio espacio de direcciones. Java es un sistema multiproceso, esto significa que soporta varios procesos

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. Primitivas IPC con bloqueo Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región

Más detalles

Guía práctica de estudio 12: Hilos

Guía práctica de estudio 12: Hilos : Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 12: Objetivo: Implementar el concepto de multitarea utilizando

Más detalles

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia

Más detalles

Guillermo Román Díez

Guillermo Román Díez Concurrencia Creación de Procesos en Java Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia

Más detalles

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control Hilos BUAP Introducción Normalmente, los programas son ejecutados de forma secuencial Único flujo de control Un programa con un único flujo de control, ejecuta sólo una tarea (hilo) Dr. Ivan Olmos 2 Introducción

Más detalles

UPM Concurrencia en Java

UPM Concurrencia en Java UPM Concurrencia en Java Juan Antonio de la Puente DIT/UPM Hebras (threads) Una hebra es un objeto de una subclase de java.lang.thread o una implementación de la interfaz Runnable El código que ejecuta

Más detalles

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo Concurrencia Programación Concurrente Espera ocupada. Primitivas IPC con bloqueo Programación concurrente Los lenguajes concurrentes tienen elementos para: Crear procesos Sincronizar procesos Comunicar

Más detalles

Programación Concurrente Recopilación de teoría referente a la materia

Programación Concurrente Recopilación de teoría referente a la materia UNIVERSIDAD AMERICANA Programación Concurrente Recopilación de teoría referente a la materia Ing. Luis Müller Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente, a

Más detalles

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución.

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución. Threads o Hilos Los hilos son otra forma de crear la posibilidad de concurrencia de actividades; sin embargo, la gran diferencia es que los hilos comparten el código y el acceso a los datos. En cierta

Más detalles

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Ejecución de hebras En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Hebras vs. Procesos Los cambios de contexto son más costosos en

Más detalles

Programación concurrente en Java

Programación concurrente en Java Diseño Y Aplicaciones de Sistemas Distribuidos Programación concurrente en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Threads en

Más detalles

dit Programación concurrente Sincronización condicional UPM

dit Programación concurrente Sincronización condicional UPM 20151028 dit UPM Programación concurrente Sincronización condicional Juan Antonio de la Puente Algunos derechos reservados. Este documento se distribuye bajo licencia Crea9ve Commons

Más detalles

Programación Orientada a Eventos

Programación Orientada a Eventos Programación Orientada a Eventos Técnicas de Programación Santiago Pavón V:2012.03.13 Programas Secuénciales El flujo de ejecución del programa sigue la secuencia de sentencias que lo forman. El estado

Más detalles

CAPÍTULO 3. PROCESOS VS. HILOS

CAPÍTULO 3. PROCESOS VS. HILOS CAPÍTULO 3. PROCESOS VS. HILOS 3.1 Primitivas de sincronización en Java Java no tiene semáforos como primitivas de sincronización. Sin embargo, proporciona otras primitivas diferentes con las cuales sí

Más detalles

Unidad 1: Gestión de Procesos

Unidad 1: Gestión de Procesos Unidad 1: Gestión de Procesos Tema 1, Concurrencia: Exclusión mutua y sincronización. 1.1 Problema de la sección crítica, alternativas al uso de semáforos: - Regiones críticas, Monitores, Variables de

Más detalles

Ejemplo. class SiNoThread extends Thread { private String SiNo; static int Contador = 0; public SiNoThread(String s) { super(); SiNo = s; }

Ejemplo. class SiNoThread extends Thread { private String SiNo; static int Contador = 0; public SiNoThread(String s) { super(); SiNo = s; } Qué son los threads? Todos los programadores conocen lo que es un proceso, la mayoría diría que es un programa en ejecución: tiene un principio, una secuencia de instrucciones y tiene un final. Un thread

Más detalles

Cena de filosofos y sincronizacion java

Cena de filosofos y sincronizacion java Programación concurrente y Distribuída Curso 2011-12 Miguel Telleria, Laura Barros, J.M. Drake telleriam AT unican.es Computadores y Tiempo Real http://www.ctr.unican.es Objetivos Presentaros la aplicación

Más detalles

Unidad 3 Sistemas con memoria común

Unidad 3 Sistemas con memoria común Unidad 3 Sistemas con memoria común Definiciones Por concurrencia se entiende la existencia de varias actividades simultáneas o paralelas. La concurrencia de procesos puede verse como la ejecución simultánea

Más detalles

Threads LSUB. 30 de marzo de 2016 GSYC

Threads LSUB. 30 de marzo de 2016 GSYC Threads LSUB GSYC 30 de marzo de 2016 (cc) 2015 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada

Más detalles

Java Threads. Sistemas Distribuidos Rodrigo Santamaría

Java Threads. Sistemas Distribuidos Rodrigo Santamaría Java Threads Sistemas Distribuidos Rodrigo Santamaría Java Threads Hilos Sincronización Ejercicios FAQ 2 3 Hilos Un hilo (Thread) es un proceso en ejecución dentro de un programa java main Thread t t.start()

Más detalles

Tema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13

Tema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13 Tema III. Multihilo Desarrollo de Aplicaciones para Internet Curso 12 13 Índice 1.Introducción 2.Tipos de Concurrencia 3.Hilos en Java 4.Implementación de un SNB i. Sin Hilos ii. Con Hilos iii.con Pool

Más detalles

Hilos Secciones Stallings:

Hilos Secciones Stallings: Capítulo 4 Hilos Secciones Stallings: 4.1 4.3 Contenido Procesos e hilos. Hilos a nivel de núcleo y a nivel de usuario. Multiprocesador simétrico (SMP). Micronúcleos. 1 Proceso Unidad de propiedad de los

Más detalles

CAPÍTULO 2. PROCESOS VS. HILOS

CAPÍTULO 2. PROCESOS VS. HILOS CAPÍTULO 2. PROCESOS VS. HILOS El objetivo de este capítulo es el de discutir con un poco más de profundidad todo lo relacionado con el concepto de proceso que sea relevante para el estudio de la programación

Más detalles

Primitivas de Sincronización

Primitivas de Sincronización Primitivas de Sincronización JUAN CARLOS CONDE RAMÍREZ DISTRIBUTED COMPUTING Introducción Todas las soluciones previas al problema de mutex fueron un desperdicio de algún modo: Si un proceso es incapaz

Más detalles

Programación Concurrente en Java: Threads. Ejemplos de programación concurrente. Luis Fernando Llana Díaz. 24 de abril de 2008

Programación Concurrente en Java: Threads. Ejemplos de programación concurrente. Luis Fernando Llana Díaz. 24 de abril de 2008 Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid de abril de 00 Ejemplos de programación concurrente En un sistema operativo, diversos programas compiten por los recursos

Más detalles

Apuntes de Java. Tema 10: Threads. Uploaded by Ingteleco

Apuntes de Java. Tema 10: Threads. Uploaded by Ingteleco Apuntes de Java Tema 10: Threads Uploaded by Ingteleco http://ingteleco.webcindario.com ingtelecoweb@hotmail.com La dirección URL puede sufrir modificaciones en el futuro. Si no funciona contacta por email

Más detalles

1 HILOS (THREADS) EN JAVA

1 HILOS (THREADS) EN JAVA 1 HILOS (THREADS) EN JAVA 1.1QUÉ ES UN THREAD La Máquina Virtual Java (JVM) es un sistema multihilo. Es decir, es capaz de ejecutar varios hilos de ejecución simultáneamente. La JVM gestiona todos los

Más detalles

Uso de recursos compartidos

Uso de recursos compartidos Uso de recursos compartidos Cada proceso o hebra se ejecuta de forma independiente. Sin embargo, cuando varias hebras (o procesos) han de acceder a un mismo recurso, se ha de coordinar el acceso a ese

Más detalles

Java y JVM: programación concurrente. Adolfo López Díaz

Java y JVM: programación concurrente. Adolfo López Díaz Java y JVM: programación concurrente Adolfo López Díaz JVM Máquina virtual Ambiente de programación virtualizado Permite la ejecución de programas Java ejecutables multiplataforma Programación concurrente

Más detalles

Por ejemplo, el siguiente error conduce inmediatamente a un deadlock:

Por ejemplo, el siguiente error conduce inmediatamente a un deadlock: Monitores Los semáforos, son el equivalente a las instrucciones goto y el manejo de apuntadores en los lenguajes de programación imperativos: son muy susceptibles a errores. Su utilización exige disciplina.

Más detalles

Concurrencia Monitores. Guillermo Román Díez

Concurrencia Monitores. Guillermo Román Díez Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de

Más detalles

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores Programación Orientada a Objetos Resumen de Temas Unidad 3: Constructores y destructores 3.1 Conceptos de métodos constructor y destructor Java inicializa siempre con valores por defecto las variables

Más detalles

HILOS (Threads) Implementación en Java

HILOS (Threads) Implementación en Java HILOS (Threads) Implementación en Java Multitarea Sería bueno si pudiéramos concentrar nuestra atención en realizar una sola acción a la vez, y realizarla bien, pero por lo general, eso es difícil. El

Más detalles

Natalia Partera Jaime Alumna colaboradora de la asignatura

Natalia Partera Jaime Alumna colaboradora de la asignatura Programación Concurrente y de Tiempo Real Guión de prácticas 6: Programación en Java de algoritmos de control de la Exclusión Mutua con variables comunes Natalia Partera Jaime Alumna colaboradora de la

Más detalles

Programación concurrente Hebras

Programación concurrente Hebras 20151021 dit UPM Programación concurrente Hebras Juan Antonio de la Puente Algunos derechos reservados. Este documento se distribuye bajo licencia Crea9ve Commons Reconocimiento-NoComercial-Compar9rIgual

Más detalles

Java: Programación Multithread

Java: Programación Multithread Qué es un thread? Java: Programación Multithread Hasta el momento hemos desarrollado programas secuenciales con un único thread: en cualquier instante durante la ejecución de un programa hay un único punto

Más detalles

Procesamiento paralelo con hilos de Java

Procesamiento paralelo con hilos de Java Procesamiento paralelo con hilos de Java Tabla de contenidos 1. Soporte para hilos en Java... 1 2. Creación y control de un hilo... 2 2.1. Métodos de creación de un hilo... 2 2.2. Control de hilos mediante

Más detalles

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I Hilos Universidad Autónoma de Baja California Hasta el momento los programas que se han estado manejando en el curso han sido secuenciales. Esto es, inician en un punto y continuan su ejecución de manera

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona

Más detalles

2. Indica cuál de las siguientes afirmaciones es cierta:

2. Indica cuál de las siguientes afirmaciones es cierta: Nombre:. Indica cuál de las siguientes afirmaciones es cierta: El diseño de un programa procedural está guiado por la división en tareas a realizar, mientras que el diseño orientado a objetos está dirigido

Más detalles

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos Concurrencia Programación Concurrente Procesos Comunicación entre Procesos Introducción a Procesos Todas las computadoras moderas realizan varias cosas al mismo tiempo. En cada instante la CPU ejecuta

Más detalles

Ejercicios de Hilos. Índice

Ejercicios de Hilos. Índice Índice 1 Creación de hilos (0.5 puntos)...2 2 Prioridades (0.5 puntos)... 2 3 Productor/Consumidor (1 punto)...2 4 Pool de hilos (1 punto)... 3 1. Creación de hilos (0.5 puntos) En la clase Ej1 se crean

Más detalles

Lenguajes de Programación Curso Práctica Hilos Extendiendo Thread Implementando Runnable... 1

Lenguajes de Programación Curso Práctica Hilos Extendiendo Thread Implementando Runnable... 1 Objetivos Hilos y sincronización Índice 1. Hilos 1 1.1. Extendiendo Thread. 1 1.2. Implementando Runnable. 1 2. Sincronización y monitores 3 3. Tareas 3 3.1. Clases proporcionadas 5 3.2. Clases a realizar

Más detalles

ISO Tema 8,

ISO Tema 8, ISO Tema 8, 2017-2018 Pablo González Nalda Depto. de Lenguajes y Sistemas Informáticos 13 de abril de 2018 Modificado el 27 de abril de 2018 de la presentación 1 2 3 4 5 6 7 2 / 32 1 2 3 4 5 6 7 3 / 32

Más detalles

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos (IPC) con espera ocupada.

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos (IPC) con espera ocupada. Concurrencia Programación Concurrente Procesos Comunicación entre Procesos (IPC) con espera ocupada. Introducción a Procesos Todas las computadoras moderas realizan varias cosas al mismo tiempo. En cada

Más detalles

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

de Gran Canaria Centro de Tecnología Médica  Programación Concurrente Universidad de Las Palmas de Gran Canaria Centro de Tecnología Médica http://www.ctm.ulpgc.es Tema 1: Introducción a la Escuela Técnica Superior de Ingenieros de Telecomunicación Conceptos Fundamentales

Más detalles

Participantes: Avila Aida Betancourt Sioly Briceño Susana Rojas Alejandro

Participantes: Avila Aida Betancourt Sioly Briceño Susana Rojas Alejandro Participantes: Avila Aida Betancourt Sioly Briceño Susana Rojas Alejandro Es una instancia de un programa en ejecución (corriendo). A los procesos frecuentemente se les refiere como tareas. El contexto

Más detalles

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente.

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente. Threads (hilos) Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente. Conceptos: Proceso (thread o hilo): es un programa en ejecución

Más detalles

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Estructura de Datos Unidad 1: Repaso del Lenguaje Java Estructura de Datos Unidad 1: Repaso del Lenguaje Java Introducción Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de 1991, con el que se van a

Más detalles

Procesos Definición y Estados

Procesos Definición y Estados Procesos Definición y Estados Profesorado de Informática CeRP del Suroeste, Uruguay Contenidos Qué es un proceso Estructuras de datos para gestionar procesos API para trabajar con procesos Hilos (threads).

Más detalles

UNIDAD III.- Programación Concurrente

UNIDAD III.- Programación Concurrente UNIDAD III.- Programación Concurrente Sincronización Todo thread tiene una prioridad. Un thread hereda su prioridad, cuyo valor está entre 1 y 10 La prioridad puede modificarse con los métodos: setpriority()

Más detalles

CAPÍTULO III: Programación Concurrente en JAVA I: Programación con hilos

CAPÍTULO III: Programación Concurrente en JAVA I: Programación con hilos CAPÍTULO III: Programación Concurrente en JAVA I: Programación con hilos III. PROGRAMACION CON HILOS (THREADS) EN JAVA Java contiene una serie de clases y construcciones específicas para programar de forma

Más detalles

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos. Threads Un thread es un flujo de control secuencial dentro de un programa. A los threads también se los conoce como procesos livianos ó contextos de ejecución. Un thread es similar a un programa secuencial:

Más detalles

EXCLUSIÓN MUTUA ENTRE HILOS. TEMA 5: Control de la Concurrencia en Java (API Estándar) Sintaxis para Bloques de Código Sincronizado

EXCLUSIÓN MUTUA ENTRE HILOS. TEMA 5: Control de la Concurrencia en Java (API Estándar) Sintaxis para Bloques de Código Sincronizado TEMA 5: Control de la Concurrencia en Java (API Estándar) CONTENIDO Exclusión Mutua con código synchronized. Exclusión Mutua con métodos synchronized. Protocolos de Control de la Exclusión Mutua. Interbloqueos

Más detalles

Programación Concurrente en Java: Threads

Programación Concurrente en Java: Threads Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid 7 de mayo de 007 Ejemplos de programación concurrente En un sistema operativo, diversos programas compiten por los

Más detalles

Sistemas Operativos. Procesos

Sistemas Operativos. Procesos Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso

Más detalles

Tema 12: El sistema operativo y los procesos

Tema 12: El sistema operativo y los procesos Tema 12: El sistema operativo y los procesos Solicitado: Tarea 06 Arquitecturas de una computadora y el funcionamiento del software M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx

Más detalles

Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto

Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto Java y multiprogramación sobre red Sistemas Distribuidos ITInformática (UVA) César Llamas Bello 2003 Índice Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto 26/02/2003

Más detalles

Tema 4: Control del flujo de ejecución: Excepciones y Threads. Programación Orientada a Objetos. Marcos López Sanz

Tema 4: Control del flujo de ejecución: Excepciones y Threads. Programación Orientada a Objetos. Marcos López Sanz Tema 4: Control del flujo de ejecución: Excepciones y Threads Programación Orientada a Objetos Marcos López Sanz Máster en Informática Gráfica, Juegos y Realidad Virtual MARCOS LOPEZ SANZ Excepciones Def.:

Más detalles

Preguntas de autoevaluación tema 3

Preguntas de autoevaluación tema 3 2.20. Describir las principales configuraciones en función del número y tipo de hilos soportados por un sistema operativo. Múltiples hilos de usuario sin soporte de hilos del núcleo. Un hilo del núcleo

Más detalles

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA PRACTICA 8 MONITORES BASADOS EN SEMÁFOROS

Más detalles

Conceptos de Planificación

Conceptos de Planificación Conceptos de Planificación Conceptos de Planificación Planificación Planificación de Procesos de Procesos Algoritmos Algoritmos Estructura Estructura Propiedades Propiedades Tipos Tipos Evaluación Evaluación

Más detalles

Benemérita Universidad Autónoma del Estado de Puebla

Benemérita Universidad Autónoma del Estado de Puebla Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Practica de Laboratorio No. 2 Profr: María del Carmen Cerón Garnica Alumno: Roberto

Más detalles

Acceso coordinado a recursos compartidos

Acceso coordinado a recursos compartidos Programación Concurrente en Linux Acceso coordinado a recursos compartidos Alberto Lafuente, Dep. KAT/ATC de la UPV/EHU, bajo Licencia Creative Commons 1 Contenido 1. Recursos compartidos 2. Mecanismos

Más detalles

MULTIPROGRAMACIÓN. Introducción a al Multitarea

MULTIPROGRAMACIÓN. Introducción a al Multitarea MULTIPROGRAMACIÓN Introducción a al Multitarea Introducción a la Multitarea Conceptos básicos Se refiere a la capacidad de un sistema operativo de ejecutar múltiples procesos, también llamados tareas,

Más detalles

PARTE II PROGRAMACION CON THREADS EN C

PARTE II PROGRAMACION CON THREADS EN C PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. Primitivas IPC con bloqueo Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región

Más detalles

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A. SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:

Más detalles

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos Concurrencia Programación Concurrente Procesos Comunicación entre Procesos Introducción a Procesos Todas las computadoras moderas realizan varias cosas al mismo tiempo. En cada instante la CPU ejecuta

Más detalles

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas Programación concurrente en Java. Breve introducción Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas Concurrencia en Java Hilos de ejecución Clase Thread e interfaz Runnable Pausas Interrupciones

Más detalles

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++ Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202 Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase

Más detalles

Programación concurrente

Programación concurrente Programación concurrente Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Programación concurrente

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

Tarea 2. Descripción y Control de Procesos

Tarea 2. Descripción y Control de Procesos 1 Tarea 2. 1. En qué consiste una traza de instrucciones? Consiste en listar las secuencias de instrucciones que ejecuta cada proceso. El procesador puede caracterizarse mostrando la forma en que intercalan

Más detalles

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana Fundamentos de los Sistemas Operativos Tema 2. Procesos 1998-2015 José Miguel Santos Alexis Quesada Francisco Santana Contenidos del Tema 2 Qué es un proceso Estructuras de datos para gestionar procesos

Más detalles

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo) Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional () adicional () Preparado Preparado

Más detalles

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACION CONCURRENTE PARALELA Y PRACTICA 3 (PARTE 1 Y 2) HILOS POSIX NOMBRE:

Más detalles

Práctica 4 Concurrencia en Java

Práctica 4 Concurrencia en Java Práctica 4 Concurrencia en Java Escuela de Ingeniería y Arquitectura Depto. de Informática e Ingeniería de Sistemas 1. Objetivos 1. Crear y manipular hilos de ejecución en Java 2. Utilizar monitores en

Más detalles

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión

Más detalles

Concurrencia Espera Activa. Guillermo Román Díez

Concurrencia Espera Activa. Guillermo Román Díez Concurrencia Espera Activa Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2017-2018 Guillermo Román, UPM CC: Espera Activa 1/9 Espera Activa Espera Activa (busy-waiting)

Más detalles

Tema 1: Programación Multiproceso. Curso

Tema 1: Programación Multiproceso. Curso Tema 1: Programación Multiproceso. Curso 2012-2013 1 Patricia Hurtado Sayas Índice de contenidos: 1. Elementos funcionales de un SI. Repaso. 2. Concepto de Proceso o Tarea. 1. PCB, Bloque de Control de

Más detalles

Sistemas Operativos (Parte 2)

Sistemas Operativos (Parte 2) Sistemas Operativos (Parte 2) M. en C. Mario Farias-Elinos e-mail: elinos@ci.ulsa.mx web: http://www.ci.ulsa.mx/~elinos Maestría en Tecnologías de Información Contenido Proceso Scheduller Thread Sincronización

Más detalles

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

PARADIGMA y LENGUAJES DE PROGRAMACIÓN CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre

Más detalles

Concurrencia de Procesos

Concurrencia de Procesos Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)

Más detalles

dit Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM UPM Copyright 2007, Juan Antonio de la Puente

dit Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM UPM Copyright 2007, Juan Antonio de la Puente dit UPM Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM Copyright 2007, Juan Antonio de la Puente Objetivos Plantear los problemas básicos relacionados con el cumplimiento de los

Más detalles

Introducción a los Sistemas Operativos S.O.

Introducción a los Sistemas Operativos S.O. Introducción a los Sistemas Operativos S.O. Contenido 1. Conceptos 2. Evolución de los Sistemas Operativos 3. Administración del Entorno de Hardware 1. CONCEPTOS 1.1. Definición de Sistema Operativo Es

Más detalles

Sincronización de Threads

Sincronización de Threads Sincronización de Threads Herramientas y Lenguajes de Programación Universidad de La Laguna Programa de Doctorado de Física e Informática Escuela Técnica Superior Superior de Ingeniería Informática Dpto.

Más detalles

PRÁCTICO 3. Comprender la administración de procesos e hilos de los sistemas operativos. Comprender la tarea y la elección de un planificador.

PRÁCTICO 3. Comprender la administración de procesos e hilos de los sistemas operativos. Comprender la tarea y la elección de un planificador. Objetivos PRÁCTICO 3 Comprender la administración de procesos e hilos de los sistemas operativos. Comprender la tarea y la elección de un planificador. Ejercicio 1 (básico) Defina que es un proceso a nivel

Más detalles

12. Tipos de atributos

12. Tipos de atributos Programación orientada a objetos con Java 135 12. Tipos de atributos Objetivos: a) Profundizar en el concepto de atributo de una clase e indicar los tipos de atributos en Java b) Interpretar el código

Más detalles

Concurrencia. Concurrencia

Concurrencia. Concurrencia Concurrencia Procesos y hebras Concurrencia Programación concurrente Por qué usar hebras y procesos? Ejecución de procesos Ejecución de hebras Hebras vs. Procesos Creación y ejecución de hebras La prioridad

Más detalles

Aplicaciones Concurrentes

Aplicaciones Concurrentes PROGRAMACIÓN CONCURRENTE TEMA 6 Aplicaciones Concurrentes ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN PROGRAMACIÓN CONCURRENTE Aplicaciones Concurrentes

Más detalles

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE Los modificadores de acceso, como su nombre indica, determinan desde qué clases se puede acceder a un determinado elemento. En Java tenemos 4 tipos:

Más detalles

Informática I Threads

Informática I Threads Informática I Threads 28 de Setiembre 2010 1 Concepto de programación paralela. 2. 3 Concurrencia => Race Conditions. 4. 5 Funciones Concepto de Programación Paralela Computación paralela Técnica de programación

Más detalles

PRÁCTICO 3. Comprender la administración de procesos e hilos de los sistemas operativos Comprender la tarea y la elección de un planificador.

PRÁCTICO 3. Comprender la administración de procesos e hilos de los sistemas operativos Comprender la tarea y la elección de un planificador. Objetivos PRÁCTICO 3 Comprender la administración de procesos e hilos de los sistemas operativos Comprender la tarea y la elección de un planificador. Ejercicio 1 (básico) Defina que es un proceso a nivel

Más detalles

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de

Más detalles