Sistemas Concurrentes: programación concurrente

Slides:



Advertisements
Presentaciones similares
TEMA 1 Introducción a la Programación Concurrente
Advertisements

1.3. PROGRAMACION PARALELA
DIAGRAMA DE ACTIVIDAD Roberto Certain Leonardo Molina.
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
SOFTWARE DE PROGRAMACIÓN
UNIDAD II: ALGORITMOS Y LENGUAJES
Computación PROGRAMACIÓN.
¿ Que es la complejidad de un algoritmo ?
Combinadores SK.
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
Programación Concurrente DAI - UNSAAC.
Inter bloqueo DeadLock.
Teoría de lenguajes y compiladores
Programas Son una serie o secuencia de instrucciones entendibles por los ordenadores que permiten la realización de las acciones o tareas para las que.
Mejoras a las Máquinas Von Neumann
Tema 3. Optimización de Código
Alejandro Ledezma Milanez Sonia Lizbeth Hernández Martinez Zaira Samara Chavez Hernandez Gilberto Saduj Castañeda Garcia.
METODOLOGIA DE LA PROGRAMACION
Conceptos Fundamentales
Introducción a los SSOO Sebastián Sánchez Prieto.
Elemento Lógico (Software)
TRADUCTOR DE UN PROGRAMA
Concurrencia: interbloqueo e inanición
FORMULACIÓN DE ALGORITMOS
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Sistemas Concurrentes: el problema de la exclusión mutua I.T. Informática de Sistemas Curso
UNIDAD 3 Conceptos de Sistemas Operativos.
Unidad III Administración de procesos
SOFTWARE DE PROGRAMACIÓN
SISTEMAS OPERATIVOS INTRODUCCIÓN Definición de Sistema Operativo
Programación I MC José Andrés Vázquez Flores
Características de un sistema operativo
Gestión de Procesos Gestión de Procesos Procesos Planificación CPU
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
SISTEMAS OPERATIVOS.
Sistemas Concurrentes: Conceptos fundamentales
Sincronización de Procesos
TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS
Programación de Sistemas
Programación 1 (01y 05) Prof. Flor Narciso
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
Administrador de procesos
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.
Estructura de los Sistemas Operativos
Programación Básica con NQC Patricio A. Castillo 12/04/2008.
Edward Barrera Barrera Cristian Anderson Isacc
Proyecto Grupal #1 Análisis Sensorial de Alimentos Fernando Pérez 8 de septiembre de 2006.
UNIDAD 7 “OTROS PARADIGMAS DE PROGRAMACIÓN“ LI & MSC OSCAR RAMIREZ CORTÉS Universidad de la Huasteca Veracruzana.
Elaboración de algoritmos usando lógica de programación
UTFSM - Sistemas Operativos
INTERRUPCIONES – ABRAZO MORTAL
Microsoft Office Project INTRODUCCIÓN A LA GESTIÓN DE PROYECTOS Microsoft Office Project 2010.
Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II.
Algoritmos Programación
Funciones principales!
UNIDAD I INTRODUCCION A LOS S.O.
TIPOS DE DATOS ABSTRACTOS
Programación de Sistemas
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,
INGENIERIA EN SISTEMAS FUNDAMENTOS DE COMPUTACION B ACHILLERATO EN I NGENIERÍA I NFORMÁTICA L IC. C ARLOS H. G UTIÉRREZ L EÓN.
Especificación del Problema Partimos del hecho de un programador no puede resolver un problema que no entiende. Por esta razón, la primera etapa en todo.
SOFTWARE DE COMPUTADORAS
Planificación de CPU Conceptos Básicos Criterios de Planificación Algoritmos de Planificación Planificación con Múltiples Procesadores Planificación Real-Time.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Este material ha sido desarrollado para alumnos que cursan la asignatura de Programación Básica impartida en el primer semestre en la Facultad de Ingeniería.
ARCHIVO Es una colección de información o bien es una secuencia de bits, bytes, líneas o registros definida por su creador.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar los.
Transcripción de la presentación:

Sistemas Concurrentes: programación concurrente I.T. Informática de Sistemas Curso 2002-2003

Cómo implementar la concurrencia El propio hardware multiprocesadores (máqs. de memoria compartida) sistemas distribuidos Multiprogramación No hay paralelismo. Los procesos se reparten el procesador: entrelazado (interleaving) ¿Quién planifica los procesos? el sistema operativo el propio ejecutable (gracias al compilador) -> runtime scheduler (RTSS)

Planificadores Nuestro programa se ejecutará de manera diferente según la política de planificación empleada. Algunos programas funcionarán adecuadamente con un planificador, pero con otros pueden fracasar.

“Granularidad” del paralelismo ¿cuáles son las acciones que se pueden ejecutar en paralelo? instrucciones de máquina sentencias de un lenguaje de programación objetos concurrentes dentro de un programa programas ejecutables completos Grano fino --> grano grueso Cada ‘grano’ propicia unas herramientas y técnicas de programación diferentes

La abstracción de la programación concurrente

Abstracción de la concurrencia Nuestro programa expresa acciones concurrentes (procesos o hilos), pero éstas no tienen por qué ejecutarse en paralelo. Cada proceso concurrente se ejecuta sobre un procesador virtual. El compilador y el s.o. serán responsables de ejecutar nuestros procesos como consideren más oportuno.

Procesadores virtuales Supondremos que nuestro programa concurrente consiste en un conjunto de procesos secuenciales que se ejecutan en paralelo, cada uno de ellos corriendo sobre un procesador virtual. Nos deben dar igual las velocidades relativas de los procesadores virtuales.

Orden parcial -> no determinismo La programación secuencial define un orden total de las instrucciones Un programa concurrente define un orden parcial de ejecución El orden parcial implica el no determinismo de los programas concurrentes

No determinismo Un programa secuencial es determinista: si se le presenta el mismo conjunto de datos de entrada, siempre producirá la misma salida. Un programa concurrente es no determinista: un mismo conjunto de datos de entrada puede producir diferentes datos de salida, según el orden de ejecución de los procesos.

No determinismo El no determinismo es una propiedad inherente a la concurrencia. Por culpa del no determinismo, es más difícil analizar y verificar un algoritmo concurrente. Ojo, que existan varias posibilidades de salida NO significa necesariamente que un programa concurrente sea incorrecto.

Acciones atómicas Por culpa del no determinismo, la ejecución del programa puede ser incorrecta e inesperada. Surge la conveniencia de imponer que ciertas piezas de código se ejecuten de forma atómica. ¡¡el resultado podría ser x=65538!! cobegin x := 2; x := 65536; coend;

cobegin <x:=x+1> <x:=x+2> coend Acciones atómicas (2) En el análisis de algoritmos concurrentes, se permite declarar que una sentencia se ejecuta de forma atómica. cobegin <x:=x+1> <x:=x+2> coend Así se facilita el análisis y verificación de estos algoritmos. No nos incumbe (por ahora) cómo se consigue la ejecución atómica.

Historias / secuencias de ejecución Una historia o la secuencia de ejecución es una secuencia temporal de acciones que ocurren durante la ejecución de un programa. Un programa concurrente puede tener múltiples secuencias de ejecución (y todas ellas pueden ser correctas) a -> b -> c c -> a -> b ...

Verificación de programas ¿Cuándo un programa (secuencial) se considera correcto? Parcialmente correcto. Dadas unas precondiciones correctas, si el programa termina se cumplen las postcondiciones previstas. Totalmente correcto. Dadas unas precondiciones correctas, el programa termina y se cumplen las postcondiciones.

Peculiaridades de los programas concurrentes Los programas concurrentes pueden no terminar nunca y al mismo tiempo ser correctos. Un pr.c. puede tener múltiples secuencias de ejecución. Cuando se dice que un pr.c. es correcto, se entiende que se refiere a todas sus posibles secuencias de ejecución.

Seguridad y progreso (safety and liveness) Dos tipos de propiedades útiles en los sistemas concurrentes Propiedades de seguridad (safety) una propiedad que debe ser cierta siempre ejs. exclusión mutua, no interbloqueo Propiedades de progreso (liveness) una propiedad que se cumplirá con toda seguridad en algún momento de la ejecución ejs. propiedades de justicia (fairness), evitación de inanición

Ejemplos de justicia (fairness) Justicia débil. Si un proceso realiza continuamente una petición, terminará siendo atendido. Justicia fuerte. Si un proceso realiza una petición con frecuencia infinita, terminará siendo atendido. Espera lineal. Si un proceso realiza una petición, ningún otro proceso puede ser atendido dos veces antes que él. Espera FIFO. Si un proceso realiza una petición, será atendido antes que cualquier otra solicitud posterior.

Análisis de algoritmos concurrentes Usar invariantes y lógica proposicional Usar métodos inductivos Usar historias de ejecución (a->b) Usar predicados posicionales: at(I), in(I), after(I) Usar lógica temporal ...