La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a la Programación Concurrente 1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema.

Presentaciones similares


Presentación del tema: "Introducción a la Programación Concurrente 1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema."— Transcripción de la presentación:

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.

2 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.

3 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: PilaMontó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.

4 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.

5 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. PilaMontón Variables globales Código del programa Direcciones relativas Direcciones absolutas PC SP CS

6 Proceso 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. Intérprete de comandos Programa Interpretación del comando Sistema operativo Programa CP Control retorna cuando programa finaliza

7 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.

8 Sistemas monotarea 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. Intérprete de comandos Pascal FC Interpretación del comando Sistema operativo Programa CP Control retorna cuando programa finaliza Lectura del archivo Simulación de concurrencia

9 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.

10 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. Hardware Kernel S.O. Espacio de usuario Kernel S.O. Espacio de usuario Hardware Kernel S.O. Espacio de usuario Hardware Microkernel (Organización por capas): MINIX Monolítico : LINUX

11 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. Programa 1Programa 2 S.O. Planificador Pr1P1Pr2P1Pr2P2Pr3P3 Memoria compartida

12 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 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. Programa 1Programa 2 S.O. Planificador Pr1P1Pr2P1Pr2P2Pr3P3 Memoria compartida H1 H2 H3H4H5H6H7 Planificación posible en espacio de usuario

14 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 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 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. Leer matrices Dividir en filas Sum filas 0 Sum filas 1 Sum filas 2 Formar matriz resultado Zona concurrente for (i=0; i<3; i++) filares0[i]=filam1[i]+filam2[i] return(filares0) Secuencial


Descargar ppt "Introducción a la Programación Concurrente 1.- Conceptos básicos. (a) Programa. (b) Proceso. (c) Sistemas monotarea. (d) Sistemas multitarea. (e) Sistema."

Presentaciones similares


Anuncios Google