TEMA 1 Introducción a la Programación Concurrente

Slides:



Advertisements
Presentaciones similares
LICENCIATURA EN SISTEMAS COMPUTACIONALES EN ADMINISTRACION
Advertisements

UNIX COMP 240.
Sistema operativo Componentes de un sistema operativo
Ing. Enrique Meneses. Son las instrucciones detalladas que controlan el funcionamiento de un sistema de computación. Funciones: 1. Administrar los recursos.
Computación PROGRAMACIÓN.
Administración de procesos y del procesador.
Subsistemas De un Sistema Operativo Celeste Domínguez Romo
Uno de los conceptos mas importantes que gira entorno a un sistema operativo es el de proceso. Un proceso es un programa en ejecución junto con el entorno.
Introducción al software
Modelo de procesos de dos estados
Estructuras en Sistemas Operativos
Detalles del sistema operativo
Administración de procesos y del procesador.
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
ConceptoDefiniciónCaracterísticas (palabra clave) Ejemplo/Aplicación Sistema operativo Un sistema operativo es un software, es decir, forma parte de la.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
TRADUCTOR DE UN PROGRAMA
CLASIFICACIÓN DEL SISTEMA OPERATIVO POR APLICACIÓN
Tema 10: Gestión de Memoria
Sistemas Operativos Procesos.
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Unidad III Administración de procesos
Software Sistemas Operativos
Clase 10: Estructuras de datos y arreglos.
Profesor: Rodrigo Sanhueza Figueroa
Tecnología de la información Unidad: 3 El software Profesor: Fernando J. Martini.
Secciones y Segmentos STARTUP
Sistemas Concurrentes: programación concurrente
PROGRAMACION CONCURRENTE
Programación I MC José Andrés Vázquez Flores
Hebras Cecilia Hernández. Qué es un proceso? Consiste Espacio de direccionamiento Código a ejecutar Datos estáticos y dinámicos Pila o stack CPU: PC,
EL SISTEMA OPERATIVO.
Características de un sistema operativo
Introducción a los Sistemas Operativos
Gestión de Procesos Gestión de Procesos Procesos Planificación CPU
SISTEMAS OPERATIVOS.
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
1 Descripción y control de procesos Capítulo 3. 2 Requerimientos de un SO relacionados con procesos Ejecutar concurrentemente múltiples procesos para.
Administrador de procesos
SISTEMAS OPERATIVOS 1.4 CLASIFICACIÓN DE LOS S.O
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
Integrante: Yohandry Cueto Carnet: # Contenido Kernel Linux Limitaciones del Kernel Linux Kernel Mach Que es Hurd Arquitectura Ventajas Distribuciones.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN Programación I MC Hilda Castillo Zacatelco.
Sistemas Operativos Oscar Bedoya
Sistema operativo Unix
Estructura de los Sistemas Operativos
Clasificación y estructura. Alejandra Rivero Esteban
Ing. Lionel Hendryk. Sistemas Embebidos Un sistema embebido es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas.
FLOR ALBA ACEVEDO COD JENNIFFER TATIANA TORRES COD
Unidad 2 – Gestión de Procesos
Sistemas Operativos.
SOFTWARE Jennifer Giselle De Diego Romero NL:9
Hilos Capítulo 5 Silberschatz Galvin. Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered.
ARQUICTECTURA DE SERVIDORES
LIA. SUEI CHONG SOL, MCE..  1.- SOFTWARE BÁSICO O DE SISTEMA. Conjunto de programas imprescindibles para el funcionamiento del sistema.  2.- SOTWARE.
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Programación I MC Beatriz Beltrán Martínez.
ARQUITECTURA ALTERNATIVA DE SERVIDORES SISTEMAS OPERTIVOS DE RED En un sistema operativo de red los usuarios saben que están conectados a la red y que.
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
UTFSM - Sistemas Operativos
Software.
Funciones principales!
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Software.
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
Historia de los sistemas operativos. Los Sistemas Operativos han sufrido una serie de cambios revolucionarios llamados generaciones. Hay cuatro generaciones:
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
Fundamentos de Programación Unidad I Conceptos Básicos.
Transcripción de la presentación:

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 (www.nievespavonpulido.com)

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 (www.nievespavonpulido.com)

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 (www.nievespavonpulido.com)

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 (www.nievespavonpulido.com)

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 (www.nievespavonpulido.com)

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 (www.nievespavonpulido.com)

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 (www.nievespavonpulido.com)

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 (www.nievespavonpulido.com)

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 (www.nievespavonpulido.com)

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

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

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.

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

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.

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

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.

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.

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

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