La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

TEMA 1 Introducción a la Programación Concurrente

Presentaciones similares


Presentación del tema: "TEMA 1 Introducción a la Programación Concurrente"— Transcripción de la presentación:

1 TEMA 1 Introducción a la Programación Concurrente
Tema 1. Programación Concurrente. TEMA 1 Introducción a la Programación Concurrente 1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema operativo LINUX. 2.- Características de la programación concurrente. (a) Definición. (b) Propiedades de los programas concurrentes. Profesora Teoría: Nieves Pavón Pulido (

2 TEMA 1 Introducción a la Programación Concurrente
Tema 1. Programación Concurrente. TEMA 1 Introducción a la Programación Concurrente 1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema operativo LINUX. 2.- Características de la programación concurrente. (a) Definición. (b) Propiedades de los programas concurrentes. Profesora Teoría: Nieves Pavón Pulido (

3 Tema 1. Programación Concurrente.
Programa: Conjunto de instrucciones que una computadora puede interpretar o ejecutar. Normalmente, los programas son escritos usando un lenguaje de alto nivel y guardados en un archivo de texto para ser posteriormente interpretados o compilados, de modo que se obtiene un código de nivel intermedio (por ejemplo, bytecodes de java) o un código máquina (ejecutables). Un programa compilado y guardado en un archivo ejecutable puede ser ejecutado en el entorno del Sistema Operativo para el que ha sido diseñado. El mapa de memoria de un programa en ejecución dependerá del Sistema Operativo para el que se ha compilado. El mapa de memoria conceptual de un programa depende del compilador y del tipo de compilación con el que se trabaja. El mapa conceptual de un programa en C es el siguiente: Pila Montón Variables globales Código del programa Mantiene las direcciones de vuelta para las llamadas a funciones. Mantiene las variables locales. Región de memoria libre que puede usar el programa mediante las funciones de asignación dinámica. Profesora Teoría: Nieves Pavón Pulido (

4 TEMA 1 Introducción a la Programación Concurrente
Tema 1. Programación Concurrente. TEMA 1 Introducción a la Programación Concurrente 1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema operativo LINUX. 2.- Características de la programación concurrente. (a) Definición. (b) Propiedades de los programas concurrentes. Profesora Teoría: Nieves Pavón Pulido (

5 Proceso: Instancia ejecutada de un programa.
Tema 1. Programación Concurrente. Proceso: Instancia ejecutada de un programa. Cuando un programa se ejecuta, las direcciones relativas se convierten en direcciones absolutas. El contador de programa apunta a la primera instrucción del programa. Direcciones absolutas SP CS PC Direcciones relativas Variables globales Código del programa Pila Montón Profesora Teoría: Nieves Pavón Pulido (

6 Proceso Tema 1. Programación Concurrente.
El sistema operativo consiste en un conjunto de programas que permiten la manipulación de los recursos hardware del sistema, así como su gestión. Cuando un programa se ejecuta, el intérprete de comandos resuelve el nombre del programa, dicho nombre corresponde normalmente a un archivo ejecutable cuya información está contenida en un dispositivo de almacenamiento secundario. Dicha información es volcada a la memoria, las direcciones relativas son resueltas y se convierten en direcciones absolutas, los registros almacenan los valores de las direcciones de los diferentes segmentos del programa: pila, datos, código, contador de programa, etc. El sistema operativo sigue ejecutándose junto con el programa: sistemas monotarea y sistemas multitarea. Sistema operativo CP Intérprete de comandos Programa Programa Control retorna cuando programa finaliza Interpretación del comando Profesora Teoría: Nieves Pavón Pulido (

7 TEMA 1 Introducción a la Programación Concurrente
Tema 1. Programación Concurrente. TEMA 1 Introducción a la Programación Concurrente 1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema operativo LINUX. 2.- Características de la programación concurrente. (a) Definición. (b) Propiedades de los programas concurrentes. Profesora Teoría: Nieves Pavón Pulido (

8 Sistemas monotarea Tema 1. Programación Concurrente.
Sólo puede ejecutarse una tarea simultáneamente. MS – DOS. No es necesaria la planificación de procesos. Posibilidad de crear entornos de programación concurrente mediante interpretación o simulación: PASCAL FC. Lectura del archivo Simulación de concurrencia Sistema operativo CP Intérprete de comandos Programa Pascal FC Control retorna cuando programa finaliza Interpretación del comando Profesora Teoría: Nieves Pavón Pulido (

9 TEMA 1 Introducción a la Programación Concurrente
Tema 1. Programación Concurrente. TEMA 1 Introducción a la Programación Concurrente 1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema operativo LINUX. 2.- Características de la programación concurrente. (a) Definición. (b) Propiedades de los programas concurrentes. Profesora Teoría: Nieves Pavón Pulido (

10 Microkernel (Organización por capas):
Sistemas multitarea Se pueden ejecutar varias tareas simultáneamente (varios procesos). Versiones de Windows a partir del 95, Unix, Minix, Linux, etc. Es necesaria la planificación de procesos. Posibilidad de crear entornos de programación concurrente en el espacio de usuario. Por ejemplo, planificación en máquina virtual de JAVA. Espacio de usuario Kernel S.O. Hardware Espacio de usuario Kernel S.O. Microkernel (Organización por capas): MINIX Hardware Monolítico : LINUX Espacio de usuario Kernel S.O. Hardware

11 Memoria compartida S.O. Sistemas multitarea
Si existen varios procesadores, y el S.O. es capaz de distribuir la carga computacional entre los mismos, hablamos de un sistema operativo multiprocesamiento. Dos tipos de sistemas multitarea: Memoria compartida Memoria distribuida Sistemas multitarea de memoria compartida La memoria es un recurso compartido por todos los procesos  HILOS en java o en POSIX. Los procesos en memoria compartida son instancias de un programa que realizan tareas sobre datos comunes. Memoria compartida Pr1P1 Pr2P1 Pr2P2 Pr3P3 S.O. Planificador Programa 1 Programa 2

12 TEMA 1 Introducción a la Programación Concurrente
1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema operativo LINUX. 2.- Características de la programación concurrente. (a) Definición. (b) Propiedades de los programas concurrentes.

13 Planificación posible en espacio de usuario
Sistema operativo LINUX Creación de procesos pesados: fork(). Posibilidad de crear procesos ligeros (threads) usando librerías adecuadas: POSIX Threads. Los procesos creados con fork() tienen un espacio de direccionamiento propio. Sólo comparten el código. Los hilos creados con Pthreads comparten una parte del espacio de direccionamiento además del código, teniendo un contador de programa específico así como el espacio de pila, donde se almacenan llamadas y variables locales entre otras cosas. Memoria compartida Planificación posible en espacio de usuario H1 H2 H3 H4 H5 H6 H7 Pr1P1 Pr2P1 Pr2P2 Pr3P3 S.O. Planificador Programa 1 Programa 2

14 TEMA 1 Introducción a la Programación Concurrente
1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema operativo LINUX. 2.- Características de la programación concurrente. (a) Definición. (b) Propiedades de los programas concurrentes.

15 Definición formal de programación concurrente
Programación secuencial: Las acciones se ejecutan una tras otra, en un sentido estricto, esto es una acción posterior no se inicia hasta que se haya completado la anterior. Programación paralela: Las acciones se ejecutan de forma independiente, obviamente por diferentes elementos de procesos, y al final los resultados parciales se unen formando la solución global. Ventajas: Reducción del tiempo para completar el trabajo. Reducción del esfuerzo individual. Inconvenientes: Necesidad de compartir el trabajo. Necesidad de compartir los recursos. Necesidad de esperas en puntos clave. Necesidad de comunicación. Necesidad de resolución de posibles errores. Programación Concurrente: Las acciones se ejecutan por único elementos de procesos capaz de seleccionar una de ellas según una determinadas características. Ventajas • No depende de la arquitectura o nº de elementos de proceso • Menos necesidad de compartir el trabajo • Menos necesidad de resoluciones de errores • Permite resolver problemas que no sería posible con un procesamiento secuencial

16 TEMA 1 Introducción a la Programación Concurrente
1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema operativo LINUX. 2.- Características de la programación concurrente. (a) Definición. (b) Propiedades de los programas concurrentes.

17 Características de los programas concurrentes
Orden: Orden en que se ejecutan las instrucciones. Parcial: No se conoce exactamente la secuencia en la que serán ejecutadas las instrucciones. Total: Se conoce exactamente el orden en el que se deben ejecutar todas las instrucciones. ORDEN TOTAL => DETERMINISMO ORDEN PARCIAL => INDETERMINISMO Requisitos para la Programación Concurrente: Situación de los procesos en un sistema: Independientes. Colaborando o Compitiendo son necesarias normas o protocolo. Requisitos Sincronización Capacidad de informar de la situación de un proceso a otro. Objetivo: Establecer la secuencialidad correcta del programa Exclusión Mutua. Asegurar que un solo proceso tiene acceso a un recurso compartido único. Por condición. Asegurar que un proceso no progrese hasta que se cumpla una determinada condición. Comunicación Capacidad de transmitir información desde un proceso a otro. Objetivo: Intercambio de información entre procesos. Prioridad Capacidad de establecer una ordenación de importancia en los procesos. Objetivo: Permitir la ejecución de procesos más importantes (prioritarios) antes que otros.

18 Problemas de la programación concurrente
Interbloqueos: Espera de un proceso por un evento que nunca va a suceder. Violación de la exclusión mutua: Acceso simultáneo a un recurso por 2 o más procesos, cuando dicho recurso sólo puede ser accedido por un único proceso cada vez. Postergación indefinida o inanición: Uno o más procesos nunca son seleccionados para ejecutarse en la CPU. Propiedades de los programas concurrentes Seguridad (safety): Asegurar que nada no permitido ocurrirá durante la ejecución. El programa no llegará a un estado inconsistente, debido a posibles problemas por un mal uso de los recursos compartidos. Ejemplo: Asegurar la exclusión mutua. Viveza (liveness): Asegurar que lo deseado ocurrirá finalmente en la ejecución del programa. El programa no se bloqueará o provocará que un proceso no se pueda ejecutar. Ejemplo: No permitir la postergación indefinida. Corrección Parcial (propiedad de seguridad) – Si el programa termina, la salida es la deseada Corrección Total (propiedad de seguridad y viveza) – El programa termina y la salida es la correcta

19 Zona concurrente Ejemplo de problema y solución concurrente
Sumar dos matrices de 3 x 3. Usamos 3 procesos para sumar cada fila, un proceso que lea las matrices y un último proceso que genere la matriz resultado. Sum filas 0 Leer matrices Dividir en filas Sum filas 1 Formar matriz resultado for (i=0; i<3; i++) filares0[i]=filam1[i]+filam2[i] return(filares0) Sum filas 2 Secuencial Zona concurrente


Descargar ppt "TEMA 1 Introducción a la Programación Concurrente"

Presentaciones similares


Anuncios Google