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

Documentos relacionados
Sistemas Operativos. Procesos

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

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

Hilos Secciones Stallings:

ESCUELA DE INGENIERIA Informática Y Sistemas

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

SISTEMAS OPERATIVOS:

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

Granularidad y latencia

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Tema 12: El sistema operativo y los procesos

Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

Clases 02 & 03: Revisión de conceptos

Tecnología de software para sistemas de tiempo real

Tema 1: Programación Multiproceso. Curso

INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos

Threads, SMP y Microkernels. Proceso

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

PROGRAMACIÓN CONCURRENTE

Procesos Definición y Estados

Arquitecturas cliente/servidor

Concurrencia y paralelismo

Tipos de Diseño. Ing. Elizabeth Guerrero V.

Concurrencia. Concurrencia

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

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

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

TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS

Universidad Autónoma de Baja California Facultad de Ciencias Administrativas Unidad Mexicali

Tópicos de programación Concurrente y Paralela

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

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

Planificación multiprocesador. Niveles de granularidad. Niveles de granularidad. Niveles de granularidad. Planificación multiprocesador - SSOO I

Hilos (threads) Realizado por M. Curiel

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Sistemas Operativos. Curso Página Web: Asignaturas de programación en el plan de estudios

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

Usando el Sistema Operativo

Unidad 1: Gestión de Procesos

1. Introducción 2. S.O. de Red. NFS 3. S.O. Distribuidos 4. Características de Diseño. Tema5: Sistemas Operativos Distribuidos

Diseño arquitectónico 1ª edición (2002)

Asignaturas antecedentes y subsecuentes

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

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Aplicaciones Concurrentes

Tema 6. Threads: programas multitarea

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

Master en Java Certificación para Programadores

Sobre la programación concurrente

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

MULTIPROGRAMACIÓN. Introducción a al Multitarea

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

Definición de S. Tiempo Real

CAPÍTULO 3. PROCESOS VS. HILOS

Sistemas Distribuidos. Soporte de Sistemas Operativos

Evolución del software y su situación actual

Práctica 4 Concurrencia en Java

DIAGRAMAS DE ACTIVIDAD SESION 9. Cap. 9 Kendall & Kendall Cap 5 Jacobson

Sistemas Operativos. Introducción. Tema 6

Introduccion a Sistemas Operativos. Ej: Linux

Sistemas Operativos Distribuidos

CONSTRUCION DE UN BRAZO ROBÓTICO E INTERFACE DE CONTROL PARA UN SISTEMA EMPOTRADO BASADO EN EL SISTEMA OPERATIVO RTEMS

Introducción a los Sistemas Operativos

Estructura Windows NT

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

Problemas que resuelve un S.O. (2)

Concurrencia. Primitivas IPC con bloqueo

Organización del Sistema Operativo

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

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

Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9)

PROGRAMA DE ASIGNATURA DE

1 ( 3,5 puntos) Responda, justificando sus respuestas, a las siguientes cuestiones:

Tiempo real. Juan Antonio de la Puente DIT/UPM. Tiempo real. Comprender el papel del tiempo en el diseño y realización de sistemas de tiempo real

Sincronización de Threads

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura

Modelos de Programación Paralela Prof. Gilberto Díaz

SOLUCIONES. SISTEMAS OPERATIVOS Convocatoria de septiembre, 12 de septiembre de 2007

Conceptos y Estructuras de Sistemas Operativos

ANX-PR/CL/ GUÍA DE APRENDIZAJE. ASIGNATURA Concurrencia. CURSO ACADÉMICO - SEMESTRE Segundo semestre

Programación Orientada a Objetos

PROGRAMA INSTRUCCIONAL FUNDAMENTO PARA EL DISEÑO DE SISTEMAS CON MICROPROCESADORES

Funcionamiento de la computadora

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Modelado Dinámico Básico. Diseño de Software Avanzado Departamento de Informática

Pontificia Universidad Católica del Ecuador

Tema 6: Clases. Índice

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación

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

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

Arquitectura de Computadoras. Clase 9 Procesamiento paralelo

Ingeniería Informática

Unidad IV: Arquitectura de los Sistemas de Bases de Datos (Tema 5) GESTIÓN DE BASES DE DATOS GRADO EN INGENIERÍA INFORMÁTICA UNED

UPM Gestión del tiempo real

T5-multithreading. Indice

Programación concurrente

Grado en Ingeniería de Computadores Universidad de Alcalá 2015/2016 3º Curso 2º Cuatrimestre

Herramientas Informáticas I Software: Sistemas Operativos

Transcripción:

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 ser estudiada en clases con los alumnos, y que servirá como base para su aplicación también en clases en ejercicios prácticos en el lenguaje de programación Java.

Contenido Introducción... 3 Sistemas Concurrentes... 3 Objetivos... 4 Ejecución concurrente... 4 Núcleo de ejecución (RTS)... 5 Procesos e hilos... 5 Lenguajes concurrentes... 6 Clasificación de los procesos... 6 Procesos anidados... 7 Los procesos y la programación orientada a objetos... 7 Representación de procesos... 8 Declaración explícita de procesos... 8 Sincronización... 8 Exclusión mutua y Sincronización condicional... 9 Sincronización en Java... 9 Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 2

Programación Concurrente y Sincronización Introducción La mayoría de los sistemas de tiempo real son concurrentes por naturaleza Las actividades del entorno evolucionan en paralelo Paralelismo físico Programación concurrente: Marco para expresar de forma abstracta la ejecución de actividades potencialmente paralelas y sin ocuparse de los detalles de implementación Sistemas Concurrentes Un sistema concurrente se compone de un conjunto de procesos autónomos que se ejecutan, desde un punto de vista lógico, en paralelo Los lenguajes de programación concurrente incorporan la noción de proceso: Cada proceso tiene un flujo de control independiente Las instrucciones de los procesos se ejecutan intercalándose unas con otras Paralelismo lógico Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 3

Objetivos Ilustrar los principios de la programación concurrente Repasar los diferentes modelos de creación y ejecución de procesos concurrentes Mostrar cómo crear procesos concurrentes en Java y C/POSIX Ejecución concurrente En la práctica, la implementación de una colección de procesos puede tomar diversas formas: - Multiprogramación si multiplexan sus ejecuciones en un solo procesador - Multiproceso en un multiprocesador con memoria compartida (fuertemente acoplado) - Procesamiento distribuido en un sistema con varios procesadores que no comparten memoria (débilmente acoplado) Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 4

Núcleo de ejecución (RTS) estrategia en tiempo real o RTS (siglas en inglés de real-time strategy) Los procesos concurrentes se ejecutan con la ayuda de un núcleo de ejecución (run-time support system) del sistema Planificador (scheduler) del sistema operativo Se encarga de la creación, terminación y multiplexado de los procesos Opciones del núcleo: Desarrollado como parte de la aplicación (Modula-2) Incluido en el entorno de ejecución del lenguaje (Ada, Java) Parte de un sistema operativo de tiempo real (POSIX) Microprogramado en el procesador (occam2) El método de planificación utilizado afecta al comportamiento temporal Procesos e hilos Todos los sistemas operativos soportan procesos Cada proceso se ejecuta en una máquina virtual distinta Algunos sistemas operativos soportan procesos ligeros (hilos o threads) Todos los hilos de un proceso comparten la misma máquina virtual Tienen acceso al mismo espacio de memoria El programador o el lenguaje deben proporcionar mecanismos para evitar interferencias La concurrencia puede estar soportada por el lenguaje: Java, Ada, occam2 Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 5

Lenguajes concurrentes Tienen elementos de lenguaje para: Crear procesos concurrentes Sincronizar su ejecución Comunicarse entre sí Las procesos pueden: Ser independientes Cooperar para un fin común Competir por el uso de los recursos Si cooperan o compiten necesitan comunicarse y/o sincronizar sus actividades Clasificación de los procesos Estructura: Estática Dinámica Granularidad Gruesa Fina Iniciación: Paso de parámetros Terminación Al completar la ejecución Auto-terminación Aborto explícito Excepción no prevista Si ya no es necesario Nunca Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 6

Procesos anidados Es posible establecer jerarquías de procesos y establecer relaciones entre procesos Relación padre-hijo: Un proceso crea otro proceso El padre puede tener que esperar mientras el hijo es creado e inicializado Relación tutor-pupilo: (guardian-dependent) Un proceso es afectado por la terminación de otro proceso El tutor no puede terminar hasta que lo hayan hecho todos sus pupilos Los procesos y la programación orientada a objetos Objetos activos: Ejecutan acciones espontáneamente Contienen uno o más hilos Objetos reactivos: Sólo ejecutan acciones cuando son invocados por otros objetos Objetos pasivos: Sin control de acceso (se ejecutan sin restricciones) Recursos: Con control de acceso según su estado interno Necesitan un agente de control: Recursos protegidos: agente pasivo» Ej: semáforo Servidores: agente activo Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 7

Representación de procesos Hay varias formas de expresar la ejecución concurrente en los lenguajes de programación: Corrutinas Bifurcación y unión (fork/join) cobegin/coend Declaración explícita de procesos Declaración implícita de procesos (ej: Ada) Declaración explícita de procesos Los procesos son unidades de programa (como los procedimientos) Esto permite que la estructura del programa sea más clara Nótese que esto no indica cuándo se ejecutarán Ejemplos: Java, Ada, C/POSIX Sincronización El comportamiento correcto de un programa concurrente formado por procesos que compiten y/o cooperan depende de la sincronización y comunicación entre dichos procesos La comunicación es el paso de información entre procesos La sincronización es la satisfacción de restricciones en el orden en que se ejecutan algunas de sus acciones Ambos conceptos están relacionados Formas de abordarlos: Datos compartidos Mensajes Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 8

Exclusión mutua y Sincronización condicional Una secuencia de instrucciones que se debe ejecutar de forma aparentemente indivisible se denomina región crítica atómico las operaciones de dos regiones críticas sobre unos mismos datos no se entremezclan la forma de sincronización que se usa para proteger una región crítica se llama exclusión mutua suponemos que el acceso a una celda individual de memoria es Cuando una acción de un proceso sólo se puede realizar de forma segura si otros procesos están en determinado estado o han ejecutado ciertas acciones, se usa la sincronización condicional Ej: productor/consumidor con búfer limitado No se debe hacer Put cuando el búfer está lleno No se debe hacer Get cuando el búfer está vacío Además, hay exclusión mutua en el acceso al búfer Sincronización en Java Exclusión mutua: - en Java, cada objeto tiene asociado un bloqueo que no es accesible directamente desde el programa pero se utiliza de forma indirecta mediante: - el modificador de método synchronized» sólo se puede acceder al método si se ha obtenido el bloqueo asociado con el objeto» los métodos tiene acceso mutuamente exclusivo a los datos encapsulados por el objeto - la sincronización de bloque Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 9

Sincronización condicional: public void wait (); bloquea al hilo invocador y libera el bloqueo sobre el objeto public void notify (); despierta a un hilo de los que esperan pero no libera el bloqueo public void notifyall (); despierta a todos los hilos que esperan los 3 métodos sólo se pueden llamar desde métodos que mantienen el objeto bloqueado si no, lanzan la excepción IllegalMonitorStateException Universidad AMERICANA 5º semestre - Programación Concurrente Ing. Luis Müller 10