Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Técnicas de Programación Concurrente I Introducción Ing. Pablo A. Deymonnaz pdeymon@fi.uba.ar Facultad de Ingeniería Universidad de Buenos Aires mailto:pdeymon@fi.uba.ar Índice 1. Introducción 1) Definiciones 2. Modelos de Concurrencia 3. Threads Definiciones I Programa: conjunto de datos, asignaciones e instrucciones de control de flujo que compilan a instrucciones de máquina, las cuales se ejecutan secuencialmente en un procesador y acceden a datos almacenados en memoria principal o memorias secundarias. I Programa concurrente: conjunto de programas secuenciales que pueden ejecutarse en paralelo. I Proceso: cada uno de los programas secuenciales que conforman el programa concurrente. I Sistema paralelo: sistema compuesto por varios programas que se ejecutan simultáneamente en procesadores distintos. Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 1/10 Definiciones I Multitasking: ejecución de múltiples procesos concurrentemente en un cierto periodo de tiempo. El scheduler, parte del kernel del sistema operativo, se encarga de coordinar el acceso a los procesadores. I Multithreading: construcción provista por algunos lenguajes de programación que permite la ejecución concurrente de threads dentro del mismo programa. Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 2/10 Desafíos de la concurrencia Necesidad de sincronizar y comunicar procesos diferentes. I Sincronización: coordinación temporal entre distintos procesos I Comunicación: datos que necesitan compartir los procesos para cumplir la función del programa Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 3/10 Definiciones I Programa concurrente: consiste en un conjunto finito de procesos secuenciales. I Procesos: están compuestos por un conjunto finito de instrucciones atómicas. I Ejecución del programa concurrente: resulta al ejecutar una secuencia de instrucciones atómicas que se obtiene de intercalar arbitrariamente las instrucciones atómicas de los procesos que lo componen. Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 4/10 Ejecución del programa concurrente Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 5/10 Definiciones Una instrucción atómica puede: I Ejecutarse de principio a fin sin interrupciones. I No ejecutarse. Ing. Pablo A. Deymonnaz 1. Introducción Depto. de Computación 6/10 Índice 1. Introducción 2. Modelos de Concurrencia 1) Modelos 3. Threads Modelos I Estado mutable compartido I Paralelismo fork-join I Canales / mensajes I Programación asincrónica I Actores Ing. Pablo A. Deymonnaz 2.Modelos de Concurrencia Depto. de Computación 7/10 Estado compartido Serializar el acceso al estado compartido I Los procesos se ejecutarán al mismo tiempo, pero habrá ciertos conjuntos de procedimientos tales que solo una ejecución de un procedimiento en cada se permite que suceda a la vez. I Si se está ejecutando algún procedimiento en el conjunto, entonces cualquier otro proceso que intente ejecutar cualquier procedimiento en el conjunto será obligado a esperar hasta que la primera ejecución haya terminado I Serializar para controlar el acceso a las variables compartidas I Podemos marcar regiones de código que no pueden superponerse en la ejecución al mismo tiempo. Ing. Pablo A. Deymonnaz 2.Modelos de Concurrencia Depto. de Computación 8/10 Índice 1. Introducción 2. Modelos de Concurrencia 3. Threads 1) Threads Introducción Threads Introducción Los Threads comparten los recursos del proceso, entre ellos, el espacio de memoria. Cada thread mantiene su propia información de estado (stack, PC, registros). Ing. Pablo A. Deymonnaz 3. Threads Depto. de Computación 9/10 Bibliografía I Principles of Concurrent and Distributed Programming, M. Ben-Ari, Segunda edición (capítulos 1 y 2) I Operating System Concepts, Ninth Edition, Abraham Silberschatz, Greg Gagne, and Peter Baer Galvin, Cap. 4. Ing. Pablo A. Deymonnaz 3. Threads Depto. de Computación 10/10 Introducción Definiciones Modelos de Concurrencia Modelos Threads Threads Introducción
Compartir