Concurrencia. Concurrencia

Documentos relacionados
Concurrencia y distribución

Programación Concurrente y Paralela. Unidad 1 Introducción

Concurrencia de Procesos

TEMA 10 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS. Introducción Hardware Software Aspectos de diseño

TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS

Sobre la programación concurrente

Simultaneidad + Sincronización

Arquitectura de Computadoras. Clase 9 Procesamiento paralelo

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

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

Uso de recursos compartidos

Guillermo Román Díez

MULTIPROGRAMACIÓN. Introducción a al Multitarea

MULTIPROCESADORES TIPOS DE PARALELISMO

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

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez.

Tema 7. Mejora del rendimiento: introducción a la segmentación y a las arquitecturas paralelas

Concurrencia y paralelismo

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

Historia Logros. Sistemas Operativos. Introducción a los Sistemas Operativos. Esteban De La Fuente Rubio L A TEX

Sistemas Operativos. Introducción. Tema 6

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

Granularidad y latencia

15 de Octubre Crowne Plaza Ciudad de México. Simposio Técnico de Medición y Automatización. ni.com/mexico

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

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Sistemas Operativos. Dr. Wenceslao Palma M.

Introduccion a Sistemas Operativos. Ej: Linux

PREGUNTAS INFORMÁTICA MONITOR UPB EXAMEN 1

Aspectos avanzados de arquitectura de computadoras Multithreading. Facultad de Ingeniería - Universidad de la República Curso 2017

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad

Tema 1: Introducción a los Sistemas Operativos

SISTEMAS OPERATIVOS Introducción. Amilcar Meneses Viveros

Taxonomía de las arquitecturas

Con estas consideraciones, Flynn clasifica los sistemas en cuatro categorías:

Programación concurrente

Acceso coordinado a recursos compartidos

FUNDAMENTOS DE SISTEMAS OPERATIVOS

Sistemas Operativos. Sistemas Operativos II ITS EMT CETP 2014 Prof. L. Carámbula

6. Enumere tres ventajas de los ULT frente a los KLT.

Aplicaciones Concurrentes

Paralelismo _Arquitectura de Computadoras IS603

SISTEMAS OPERATIVOS:

INFORMÁTICA 4º ESO. Qué es un Sistema Operativo (O.S.)?

Depto. Sistemas I.O. y Computación. informáticos y Computación Univ. La Laguna

Programación de Multitareas utilizando Hilos

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

Lusitania. Pensando en Paralelo. César Gómez Martín

Introducción a los sistemas operativos. Ing Esp Pedro Alberto Arias Quintero

Introducción a los Sistemas Operativos

Informática 4º ESO. J. Javier Esquiva Mira

TEMA 1: EJECUCIÓN PARALELA: FUNDAMENTOS(I)

Características Ventajas Desventajas Tipo de Núcleo Shell Gui. Para algunas cosas se debe de saber usar UNIX, muchos juegos no corren en Linux.

Sistemas Operativos- Evolución Histórica

Computación 1. Conociendo la herramienta de cálculo La Computadora (II)

Clústeres y procesamiento en paralelo XE1GNZ J O R G E F BARBOSA J ACOBO F E B R E R O DE 20 17

Preguntas de autoevaluación tema 1

UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA

Clasificación n de los Sistemas Operativos. Clasificación de los SO Estructuras de los SO Modos de procesamiento

TEMA 1: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

Programación Gráfica de Altas Prestaciones

Introducción a los Sistemas Operativos

Conceptos generales de sistemas distribuidos

PROCESAMIENTO DISTRIBUIDO

S2 SO Componentes. Objetivos de sesión. Computadora Sistema operativo 12/06/2013

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA. Ingeniería en Informática Curso

Clases 02 & 03: Revisión de conceptos

Capítulo 3. Procesos concurrentes 3.1. Conceptos de programación concurrente La computación concurrente es la simultaneidad en la ejecución de

Contenidos. Contenidos. Bibliografía. Paralelismo vs concurrencia. Qué es la concurrencia? Ingeniería en Informática Curso

EL SISTEMA OPERATIVO. Dónde estamos?

Cena de filosofos y sincronizacion java

Interfaz interfaz textual gráficos

12/06/2013 USUARIO. /dev /bin /usr /usr/bin /usr/lib /usr/spool /sbin y /usr/sbin /stand /var

CONCEPTO. Actúa de intermediario entre el hardware y los programas de aplicación.

Programación concurrente

Tema 1: Arquitectura de ordenadores, hardware y software

UNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

TEMA II: ALMACENAMIENTO DE LA INFORMACIÓN

Computación 1. Roles en la interconexión

Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas

Sistemas Operativos. Un sistema operativo es un conjunto de programas de computadora diseñados especialmente para cubrir los siguientes objetivos:

Ingeniería en Computación

Transacciones y Control de concurrencia

Nombre del estudiante: Giovanna Kristhel Mendoza Castillo Gustavo Antonio González Morales Eduardo Solis Lara Francisco Javier Merodio Molina

Parte I:Teoría. Tema 3:Introducción a los Sistemas operativos. Instalación

Arquitectura de Computadoras para Ingeniería

Ejercicio 1: Windows En este primer ejercicio primero vamos a ver que es el Sistema Operativo Windows, qué es un Sistema Operativo y para que sirve.

Instrumentación n / Ing. Quirino Jimenez D.

Ahora vamos a hablar de la CPU, la Unidad Central de Procesamiento.

SISTEMAS OPERATIVOS: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. Introducción y conceptos básicos

Administración de Sistemas Operativos ACI495

Sistemas Operativos. MODULO I. ANTECEDENTES 1.1 Componentes lógicos del ordenador. Resumen preparado por Miguel Cotaña

SISTEMAS OPERATIVOS. Ing. Raúl Alberto Rojas Reátegui

ARQUITECTURA DE LOS SUBSISTEMAS DE BUSES Y ENTRADA/SALIDA

Consiste en un conjunto de circuitos impresos y conectores integrados en una única placa donde se alojan todos los componentes internos del ordenador

Sistemas Operativos Tema 2: Estructura del computador José Miguel Santos Alexis Quesada Francisco Santana

Tema III: Componentes de un Sistema Operativo

Transcripción:

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 de las hebras Finalización de la ejecución de una hebra Uso de recursos compartidos Mecanismos de exclusión mutua synchronized Hebras e interfaces de usuario SwingUtilities.invokeLater() javax.swing.timer Más información

Procesos y hebras Hoy en día, cualquier usuario espera poder hacer varias cosas a la vez y no verse forzado a ejecutar los programas secuencialmente. Los sistemas operativos multitarea, como Windows o UNIX, se encargan de que varios programas se puedan ejecutar a la vez (concurrentemente) incluso cuando sólo se dispone de una única CPU. Concurrencia Dos tareas se dice que son concurrentes si transcurren durante el mismo intervalo de tiempo. Se entiende por programación concurrente el conjunto de técnicas y notaciones que sirven para expresar el paralelismo potencial en los programas, así como resolver problemas de comunicación y sincronización. Cuando se trabaja en entornos distribuidos o con máquinas con múltiples procesadores, se suele hablar de programación distribuida o paralela, respectivamente. NOTA: En un PC, el sistema operativo pasa el control de la CPU de una tarea a otra cada pocos milisegundos, algo conocido como cambio de contexto. Al realizar los cambios de contexto en intervalos de tiempo muy cortos, el usuario tiene la percepción de que las distintas tareas se ejecutan en paralelo (algo que, obviamente, sólo sucede si disponemos de un multiprocesador o de un multicomputador). Concurrencia - 1 - Fernando Berzal

Cuando decidimos descomponemos un programa en varias tareas potencialmente paralelas, estas tareas las podemos implementar en el ordenador como procesos o como hebras: Un PROCESO es un programa en ejecución con un estado asociado. o Las distintas aplicaciones que se pueden ejecutar en un sistema operativo multitarea son procesos independientes. o Cada proceso ocupa un espacio de memoria independiente (para no interferir con la ejecución de otros procesos). o Una aplicación puede implementarse como un conjunto de procesos que colaboren entre sí para lograr sus objetivos, para lo que se pueden emplear distintos mecanismos de comunicación entre procesos. Los sistemas operativos actuales permiten un nivel adicional de paralelismo dentro de un proceso: En un proceso pueden existir varias HEBRAS de control independientes [threads]. o Cada hebra es una vía simultánea de ejecución dentro del espacio de memoria del proceso. o La comunicación entre las distintas hebras se puede realizar a través del espacio de memoria que comparten, aunque habrá que utilizar mecanismos de sincronización para controlar el acceso a este recurso compartido por todas las hebras de un proceso. Se denomina APLICACIÓN CONCURRENTE a una aplicación que se descompone en un conjunto de procesos y/o hebras. Del mismo modo, una APLICACIÓN MULTIHEBRA está constituida por distintas hebras que comparten el espacio de memoria de un proceso. Concurrencia - 2 - Fernando Berzal

Programación concurrente Independientemente de si utilizamos procesos o hebras, el desarrollo de aplicaciones concurrentes involucra el uso de técnicas específicas y la superación de dificultades que no se presentan en la implementación de programas secuenciales. A la hora de crear aplicaciones concurrentes, distribuidas o paralelas, deberemos tener en mente ciertas consideraciones: El diseño de aplicaciones concurrentes es más complejo que el de aplicaciones secuenciales, ya que hemos de descomponer el programa en un conjunto de tareas con el fin de aprovechar el paralelismo que pueda existir. Si no existe ese paralelismo potencial, no tiene sentido que intentemos descomponer nuestra aplicación en tareas independientes. La implementación de aplicaciones concurrentes es también más compleja que la de aplicaciones secuenciales convencionales porque hemos de garantizar la coordinación de las distintas hebras o procesos. La depuración de las aplicaciones concurrentes es extremadamente difícil, dado que la ejecución de los distintos procesos/hebras se entrelaza conforme el sistema operativo les va asignando la CPU (algo que no podemos prever por completo). En tiempo de ejecución, además, cada hebra o proceso supone una carga adicional para el sistema, por lo hay que tener en cuenta la eficiencia de la implementación resultante. Deberemos ser cuidadosos para asegurar que se aprovecha el paralelismo para mejorar el rendimiento de la aplicación. Este rendimiento puede medirse en función del tiempo de respuesta del sistema o de la cantidad de trabajo que realiza por unidad de tiempo [throughput]. Concurrencia - 3 - Fernando Berzal

Por qué usar hebras y procesos? El no determinismo introducido por el entrelazado de las operaciones de las distintas hebras o procesos de una aplicación concurrente provoca la aparición de errores difíciles de detectar y más aún de corregir: la vida del programador resultaría mucho más sencilla si no hiciese falta la concurrencia. Sin embargo, existen razonas por las cuales es aconsejable utilizar procesos y hebras: 1. De cara al usuario Hebras y procesos permiten la creación de interfaces que respondan mejor a las órdenes del usuario. Cuando una aplicación tiene que realizar alguna tarea larga, su interfaz debería seguir respondiendo o La ventana de la aplicación debería refrescarse y no quedarse en blanco (como pasa demasiado a menudo). o Los botones existentes para cancelar una operación deberían cancelar la operación de un modo inmediato (y no al cabo de un rato, cuando la operación ya ha terminado de todos modos). Si nuestra aplicación ha de atender las peticiones de distintos usuarios (como sucede, por ejemplo, en un servidor web), el uso de hebras o procesos permite que varios usuarios accedan simultáneamente a la aplicación sin tener que esperar turno. Concurrencia - 4 - Fernando Berzal

2. Aprovechamiento de los recursos del sistema Cualquier operación que pueda bloquear nuestra aplicación durante un período de tiempo apreciable es recomendable que se realice de forma independiente. La CPU es el dispositivo más rápido del ordenador: Desde su punto de vista, todos los demás dispositivos del ordenador son lentos, desde una impresora hasta un disco duro con Ultra-DMA. En un entorno distribuido, las operaciones de E/S son aún más lentas, ya que el tiempo necesario para acceder a un recurso disponible en otra máquina a través de una red depende, entre otros factores, de la carga de la máquina a la que accedemos y del ancho de banda del que dispongamos. Paralelismo real Su aprovechamiento requiere el uso de hebras y procesos Un sistema multiprocesador dispone de varias CPUs. Un cluster de ordenadores está compuesto por un conjunto de ordenadores conectados entre sí, a los que se accede como si se tratase de un único ordenador. Algunas versiones del Pentium 4 de Intel incorporan Simultaneous MultiThreading (SMT), que Intel denomina comercialmente Hyper-Threading, con lo que un único microprocesador puede funcionar como si tuviésemos un multiprocesador. Concurrencia - 5 - Fernando Berzal

3. Modularización: Paralelismo implícito A veces, los motivos que nos llevan a utilizar hebras o procesos no tienen una justificación física, sino que un programa puede diseñarse con más comodidad si lo descomponemos en un conjunto de tareas independientes. Un ejemplo mundano El problema de perder peso puede verse como una combinación de dos actividades: hacer ejercicio y mantener una dieta equilibrada. Ambas deben realizarse durante el mismo período de tiempo, aunque no necesariamente a la vez. En situaciones de este tipo, la concurrencia de varias actividades es la solución adecuada para un problema: la solución natural al problema implica concurrencia, mientras que una solución secuencial sería extremadamente difícil. Ejemplos: Simulaciones, videojuegos IMPORTANTE El objetivo principal del uso de paralelismo es mejorar el rendimiento del sistema. El uso de paralelismo (hebras o procesos) permite mejorar el tiempo de respuesta de una aplicación o la carga de trabajo que puede soportar el sistema. No obstante, un número excesivo de hebras o procesos puede llegar a degradar el rendimiento del sistema (debido al tiempo de CPU requerido por los cambios de contexto): hay que analizar hasta qué punto compensa utilizar hebras y procesos. Concurrencia - 6 - Fernando Berzal