Programación Multiproceso
|
|
- María Pilar Morales Maidana
- hace 5 años
- Vistas:
Transcripción
1 Proyecto Universidad-Secundaria Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas Facultad Informática, Universidad de Murcia e Instituto de Enseñanza Secundaria Ingeniero Juan de la Cierva Programación Multiproceso
2 Posible utilización Módulo de Programación de servicios y procesos, segundo de Desarrollo de Aplicaciones Multiplataforma Parcialmente se podría usar en Tecnologías de la Información y de las Comunicaciones, primero de Bachillerato
3 Contenido Procesos 1 Procesos 2 3
4 Concepto de proceso Un proceso es una instancia de un programa que se ejecuta: Programa: Colección de instrucciones. Proceso: Ejecución de las instrucciones. se pueden ejecutar varias instancias (procesos) del mismo programa, varios procesos (del mismo o distinto programa) pueden colaborar en la resolución de un problema, compartiendo los recursos del sistema computacional, se necesitan mecanismos de comunicación y sincronización.
5 Recursos asociados a un proceso Cada proceso tiene asociados una serie de recursos del sistema: Una imagen del código máquina del programa Una parte de memoria, para almacenar el código, los datos del proceso, la pila de llamadas de sus rutinas... Descriptores de los recursos del sistema asociados al proceso (por ejemplo, descriptores de ficheros) El contexto del proceso: contenido de los registros, direcciones de memoria... El sistema operativo almacena la información de los procesos activos en bloques de control de procesos.
6 Estados de un proceso Inicialmente se crea el proceso: se carga de memoria secundaria a principal. Después pasa a estado de esperando, hasta que el scheduler del sistema lo asigna a un procesador. Pasa a estado de ejecutándose. Cuando necesita esperar a que un recurso esté disponible pasa a bloqueado, y cuando ya tiene el recurso pasa a esperando y de ahí a ejecutándose. Finalmente pasa a terminado.
7 Planificación de procesos El sistema operativo puede mantener varias instancias programas al mismo tiempo: puede haber programas de usuarios distintos, varias instancias del mismo programa... Un núcleo ejecuta sólo un proceso en un instante de tiempo. En sistemas con varios núcleos o procesadores se pueden asignar procesos distintos a núcleos distintos (ejecución concurrente). La asignación y desasignación de procesos a núcleos debe hacerla el sistema operativo de forma rápida. Los procesos pueden cambiar de estado por interrupciones software o hardware. Un cambio de contexto ocurre cuando un proceso en un núcleo para y se le asigna otro proceso.
8 Procesos versus hilos Un proceso puede tener subprocesos o hilos, que son secuencias independientes de ejecución dentro del código de un proceso. Los hilos son las secuencias más pequeñas de instrucciones que el sistema operativo puede manejar de forma independiente. Los hilos dentro de un proceso comparten más recursos que los procesos: la memoria, la última instrucción del código, valores de las variables... La gestión de hilos por el sistema operativo será más rápida que la de procesos.
9 Programación concurrente, paralela y distribuida Programación Concurrente Cuando varios elementos de proceso (hilos, procesos) trabajan de forma conjunta en la resolución de un problema. Puede ser en un único procesador o núcleo. Programación Paralela Es programación concurrente cuando se utiliza para acelerar la resolución de los problemas, normalmente usando varios procesadores o núcleos. Programación Distribuida Es programación paralela cuando los sistemas están distribuidos, por ejemplo una red de procesadores, con lo que hay que usar paso de mensajes.
10 Necesarios mecanismos de creación ejecución finalización comunicación sincronización de procesos.
11 Creación Procesos Se ordena al sistema poner en marcha procesos, y cada proceso tiene asociadas sus zonas de memoria: En C: Confork se crea un proceso hijo, que tiene una copia de las variables del proceso padre. En : Al lanzar la ejecución conmpicc -np X programa se ponen en marchax procesos que ejecutan el mismo códigoprograma y cada uno tiene en su memoria asociada copias distintas de las variables del programa. Los procesos pueden empezar a colaborar cuando se inicializa, con Init. En Java: Está la clase ProcessBuilder, y se inicializan con el método start. También se pueden poner en marcha desde otro proceso con Runtime.getRuntime().exec("programa"). Y se pueden usar RMI (Java Remote Method Invocation) para invocar métodos de forma remota, para aplicaciones cliente-servidor.
12 Ejecución Procesos Una vez puestos en marcha, los procesos trabajan de forma independiente, ejecutando el mismo o distinto programa, y cada uno con los datos a él asociados. Si ejecutan el mismo programa, aunque las variables se llaman igual, cada proceso trabaja con una copia distinta de ellas, por lo que la misma variable tiene valores distintos en procesos distintos. Hay mecanismos para sincronizar los procesos. Cuando un proceso necesita datos de otro proceso el acceso a esos datos se realiza con comunicaciones.
13 Finalización Procesos La finalización de un proceso supone la liberación de los recursos que se le asociaron (memoria, variables, descriptores de fichero...). En C: Conwait el proceso padre espera a que finalice un proceso hijo. En : Los procesos que se lanzaron conmpicc -np X programa acaban cuando llegan al final del programa. Al ejecutar Finalize se liberan los recursos generados para gestionar procesos a través de, y los procesos dejan de poder colaborar. En Java: En la clase ProcessBuilder se pueden usar los métodos finalize, wait, notify y notifyall heredados de la clase Object.
14 Comunicación Procesos Los procesos acceden a datos asociados a otros procesos por medio de comunicaciones. En C: Los procesos padre e hijo emparentados al ejecutar fork pueden comunicarse a través de una tubería usando la función pipe. En : Hay comunicaciones punto a punto ( Send, Recv, y otras versiones) y comunicaciones colectivas ( Bcast, Gather...) En Java: Ofrece multitud de posibilidades: colas de mensajes, canales, RMI, sockets, redireccionamiento de flujos de entrada/salida.
15 Sincronización Procesos Los procesos se sincronizan al comunicarse, pero también al acabar la ejecución, por ejemplo si un proceso espera a otro en unwait. En las comunicaciones puede haber sincronización entre dos procesos (comunicaciones punto a punto, o tuberías asociadas a dos procesos) o entre varios procesos (comunicaciones colectivas). Puede ser necesaria sincronización sin comunicar datos, por ejemplo para esperar que todos los procesos lleguen a un punto de la ejecución para seguir trabajando juntos. Se utilizan barreras, en con la función Barrier.
16 Veremos ejemplos básicos de programación multiproceso: veremos programación por paso de mensajes en con versiones nuevas de los ejemplos vistos en la Introducción a la Programación Paralela, y se podrá trabajar con la pruebapp-fp2014 de la página del Concurso de Programación Paralela.
17 Se crea una tubería con una llamada a la funciónpipe(td), dondetd es un array de dos enteros. Se escribe en la tubería con write(td[1],dir,tam), con dir la dirección de comienzo de los datos, ytam la cantidad de memoria a mandar. Se recibe a través de la tubería con read(td[0],dir,tam). Compilar y ejecutar el programa pipe-basico.c, que suma 10 números utilizando dos procesos. A diferencia del ejemplo anterior de uso defork, donde los procesos se comunicaban a través de la memoria, en este ejemplo se comunican con la tubería, con una especie de paso de mensajes.
18 Ejemplo: ordenación con dos procesos mandando mensajes por tubería El programa en programas/c/pipe-ordenacion.cpp realiza una ordenación con dos procesos, a diferencia del ejemplofork.cpp en este caso no se comparte memoria, sino que se usa una tubería para comunicar datos entre los procesos. Las tuberías tienen un tamaño por defecto, por lo que a partir de un tamaño de envío el programa no funcionaría. Para evitar esto, se usa la funciónfcntl para cambiar el tamaño máximo de los mensajes por la tubería.
19 En los programas maestro.java y esclavo.java tenemos un ejemplo básico de colaboración entre procesos, con comuniación a través de los flujos de I/O: El proceso que ejecuta el programa maestro pone en marcha la ejecución delesclavo con una llamada a Runtime.getRuntime().exec y declara un flujo de entrada para hacer lectura por buffer instream = new BufferedReader(new InputStreamReader(esclavo.getInputStream()) Compilar y ejecutar el programa: Compilar maestro.java y esclavo.java Ejecutar maestro N, que pone en marcha esclavo N (donde N será un número).
20 Ejemplo: ordenación con proceso maestro y esclavo Siguiendo el mismo esquema del ejemplo básico anterior, los programas maestroordenar.java y esclavo.ordenar.java realizan una ordenación de números enteros comunicándose con el flujo de entrada. El número de datos a ordenar se pasa como argumento al maestro. El esclavo es el que genera los datos, envía al maestro la primera mitad, ordena la segunda mitad y la pasa al maestro ordenada. El maestro ordena la primera mitad, recibe la segunda ordenada y mezcla las dos mitades. Los datos se pasan como cadenas de caracteres, por lo que se hace conversión de cadenas a enteros. Analizar la evolución de los tiempos de ejecución secuencial y paralelo aumentando el tamaño del problema. El alto coste de las comunicaciones hace que ahora sea necesario aumentar considerablemente el tamaño de problema para acercarnos a una aceleración de cuatro veces más rápida la versión paralela respecto a la secuencial.
21 (Message Passing Interface) es el estándar de facto actual para programación en sistemas de memoria distribuida. Es una especificación para paso de mensajes. La primera librería de paso de mensajes estándar y portable. Realizada por consenso ( Forum), con participación de unas 40 organizaciones. Acabado y publicado en mayo Actualizado en junio Hay varias versiones y variantes: 2, H, FT-... algunas de ellas libres: CH, LAM/, Open... Previamente PVM: Parallel Virtual Machine (aprox. 1993).
22 Características generales Recordamos los aspectos de vistos en el ejemplo codigo6-16.c: Se usa la libreríampi.h Es un programa C con llamadas a la librería. Las funciones empiezan con... Hay funciones de: inicialización ( Init) y finalización ( Finalize), para obtener el número de procesos (Commsize) y el identificador de proceso ( Comm rank), de sincronización ( Barrier), de envío (Send) y recepción (Recv) Se compila con mpicc -O3 codigo6-16.c Se ejecuta conmpirun -np X./a.out tam, dondexindica el número de procesos a usar, ytam el número de datos a ordenar.
23 Forma de las funciones Las funciones tienen la forma: error= nombre(parámetros) La de inicialización de es int Init ( int *argc, char ***argv ) y la de finalización int Finalize ( ) En algunas funciones aparece la constante COMM WORD. Varios procesos se agrupan en un comunicador, y COMM WORD identifica el comunicador formado por todos los procesos.
24 Funciones de identificación Procesos en el comunicador: Commsize ( Comm comm, int *size) devuelve en size el número de procesos en el comunicador comm. Si la llamamos con el comunicador COMM WORD devuelve el número de procesos puestos en marcha. Identificación de procesos: Commrank ( Comm comm, int *rank) devuelve en rank un identificador para cada proceso. Los procesos se numeran de 0 al número de procesos menos 1.
25 Mensajes Procesos En un mensaje se envía un cierto número de elementos de un tipo. Hay tipos básicos Tipo CHAR SHORT INT LONG UNSIGNED CHAR UNSIGNED SHOT UNSIGNED UNSIGNED LONG FLOAT DOUBLE LONG DOUBLE BYTE PACKED tipo C signed char signed short int signed int signed long int unsigned char unsigned short int unsigned int unsigned long int float double long double y derivados, que los construye el programador.
26 Mensajes punto a punto Interviene un proceso que envía y otro que recibe: Función de envío int Send ( void *buffer, int contador, Datatype tipo, int destino, int tag, Comm comunicador ) Función de recepción: int Recv ( void *buffer, int contador, Datatype tipo, int origen, int tag, Comm comunicador, Status *estado) Se envía el número de datos indicado porcontador, empezando en la zona de memoria señalada por el puntero buffer. Se indica el identificador de proceso que envía (origen) y que recibe (destino). Se puede indicar que se recibe de cualquiera poniendo como origen la constante ANY SOURCE. El parámetro tag sirve para diferenciar mensajes. Tiene que tener el mismo valor en el proceso que envía y en el que recibe. ConANYTAG se indica que se recibe un mensaje con cualquier valor en ese parámetro.
27 Comunicaciones síncronas Con las funciones de comunicación punto a punto anteriores las comunicaciones son síncronas: El proceso que envía sigue trabajando después de llamar a la función. El proceso que recibe lee el mensaje si ya ha sido enviado, pero si no queda a las espera de que se le envíe. La función de recepción es siempre Recv, pero hay varias funciones de envío según el grado de sincronización en el envío y dónde queden los datos una vez enviados: Send: el proceso que envía sigue cuando el buffer de salida está disponible para usarlo. Rsend: se ejecuta sólo si ya se ha realizado la llamada a recepción, si no da error. Ssend: el proceso que envía espera hasta que empieza la recepción. Bsend: cuando se sabe que hay espacio en el buffer de salida. Se puede reservar espacio con la función Buffer attach.
28 Comunicaciones asíncronas En las comunicaciones asíncronas no espera ninguno de los dos procesos. Las funciones son: int Isend ( void *buffer, int contador, Datatype tipo, int destino, int tag, Comm comunicador, Request *request ) int Irecv ( void *buffer, int contador, Datatype tipo, int origen, int tag, Comm comunicador, Request *request) Donde en request se guarda una etiqueta que identifica la operación. Se puede trabajar con ella: int Wait ( Request *request, Status *status ): espera hasta que está disponible la operación. int Test ( Request *request, int *flag, Status *status ): comprueba si está disponible.
29 Comunicaciones asíncronas - Ejemplo En el directorio programas//d-asincrono hay un ejemplo de uso de comunicaciones asíncronas. Se trata del ejemplo de multiplicación de matrices visto en la Introducción a la Programación Paralela y que corresponde al problema D de la pruebappfp1024 de la página del Concurso de Programación Paralela. Se puede analizar su funcionamiento y ejecutarlo en el concurso. Puede que se observe una ligera reducción en el tiempo de ejecución respecto a la versión síncrona, pero en cualquier caso la reducción no será importante debido a la clara estructura del programa. Se puede realizar una versión asíncrona del problema C, que corresponde a una ordenación, y probarla en el concurso.
30 Comunicaciones colectivas En ellas intervienen todos los procesos en el comunicador. En el ejemplo anterior hemos vistobcast, con la que se envían datos de un proceso (raíz) a todos los demás. Otras operaciones colectivas: Barrier: no comunica datos, pero bloquea los procesos hasta que la llaman todos. Gather: para recibir valores de todos los procesos. Scatter: para distribuir un buffer entre los procesos. Alltoall: para enviar datos de todos los procesos a todos. Reduce: combina valores de todos los procesos en un proceso. Reduce scatter: combina valores de todos los procesos y distribuye a todos. Las operaciones que se pueden hacer en las rutinas de reducción son: máximo ( MAX), mínimo (MIN), suma (SUM), producto (PROD), and lógico (LAND), and bit a bit (BAND), or lógico (LOR), or bit a bit (BOR), or exclusivo lógico (LXOR), or exclusivo bit a bit (BXOR), máximo y su posición (MAXLOC), mínimo y su posición ( MINLOC).
31 Comunicaciones colectivas - Ejemplo En el directorio programas//d-colectivas hay un ejemplo de uso de comunicaciones colectivas, donde se ve el funcionamiento de las funciones Scatter y Gather. Es el mismo ejemplo de multiplicación de matrices anterior. Se puede analizar su funcionamiento y ejecutarlo en el concurso. La principal ventaja de las comunicaciones colectivas es que facilitan la programación, y pueden acelerar la ejecución si se usa una implementación de que tenga optimizadas estas funciones para el sistema donde estamos trabajando. Se puede realizar una versión con comunicaciones colectivas del problema C y probarla en el concurso.
32 Empaquetamiento de datos Se pueden empaquetar datos para enviarlos juntos. Por cada dato a empaquetar se llama a: int Pack( void *datos, int contador, Datatype tipo, void *buffer, int tambuffer, int *posicion ptr, Comm comm) Se empaquetan enbuffercontador datos de tipotipo que se encuentran en datos. El tamaño del buffer (tambuffer) puede ser mayor al que se va a ocupar. posicionptr es de entrada-salida. A la entrada apunta a la posición del buffer donde se van a copiar los datos, y a la salida a la posición siguiente al último dato empaquetado. El proceso que recibe desempaqueta los datos en el mismo orden en que se empaquetaron, llamando por cada dato a la rutina int Unpack( void *buffer, int tambuffer, int *posicion ptr, void *datos, int contador, Datatype tipo, Comm comm)
33 Empaquetamiento de datos - Ejemplo En el directorio programas//d-empaquetar hay un ejemplo de uso de comunicación con empaquetamiento, donde se ve el funcionamiento de las funciones Pack y Unpack. Es el mismo ejemplo de multiplicación de matrices anterior. Se puede analizar su funcionamiento y ejecutarlo en el concurso. Empaquetar varios datos para transferirlos juntos permite reducir el número de comunicaciones, y puede producir una reducción del tiempo de ejecución, ya que las comunicaciones son muy costosas. Por otro lado, el empaquetamiento también tiene un coste de gestión de los datos, lo que produce una sobrecarga, y además mientras el proceso que envía está empaquetando el resto están a la espera. Por tanto no podemos asegurar que siempre sea mejor empaquetar varios datos para mandarlos juntos.
34 - Otras características Hemos visto las características principales de. Con las funciones estudiadas se puede realizar cualquier programa de paso de mensajes, pero ofrece muchas más funciones (más de 120). Otras posibilidades de : Tipos derivados: los crea el usuario en tiempo de ejecución. En el ejemplo anterior se podría crear un tipo formado por una porción de la matriz A y toda la matriz B, y a partir de ahí se podrían enviar elementos de ese tipo. Se pueden crear comunicadores con menos procesos de los que hay en marcha (menos que COMM WORLD) y hacer comunicaciones colectivas en ese comunicador, sin necesidad de que se participen el resto de procesos. Se pueden definir topologías, que son patrones de comunicación entre los procesos. Hay topologías más adecuadas que otras para distintos esquemas de programa y distintas conexiones de los procesadores, y una buena selección de la topología puede contribuir a reducir el tiempo de ejecución.
Message Passing Interface (MPI)
Message Passing Interface (MPI) INTRODUCCIÓN MPI (Message Passing Interface) como es un interfaz estandarizada para la realización de aplicaciones paralelas basadas en pasaje de mensajes. El modelo de
Más detallesSistemas distribuidos Message Passing Interface
Sistemas Operativos, primer cuatrimestre de 2013 Sistemas distribuidos N procesos corriendo en M equipos físicamente separados. Se acabó la memoria compartida en el caso general. Podría haberla en ciertos
Más detallesModelo de paso de mensajes
Modelo de paso de mensajes Miguel Alfonso Castro García mcas@xanum.uam.mx Universidad Autónoma Metropolitana - Izt 17 de noviembre de 2016 Contenido 1 Comunicación punto a punto 2 3 Comunicación punto
Más detallesInterfaz de Paso de Mensajes MPI. Christian Chinchilla Brizuela
Interfaz de Paso de Mensajes MPI Christian Chinchilla Brizuela Agenda Definición Objetivo principal MPI Historia Ventajas Desventajas Estructura MPI Programa MPI Llamadas de MPI Funciones Principales MPI
Más detallesTEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O
TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema
Más detallesProgramación Concurrente Recopilación de teoría referente a la materia
UNIVERSIDAD AMERICANA Programación Concurrente Recopilación de teoría referente a la materia Ing. Luis Müller Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente, a
Más detallesMultiprocesamiento en lenguaje C Introducción a MPI
Multiprocesamiento en lenguaje C Introducción a MPI Message Passing Interface Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías MPI MPI es un estándar de programación
Más detallesPROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela
PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela
Más detallesProgramación Paralela en MPI. Xavier Andrade V.
Programación Paralela en MPI Xavier Andrade V. Introducción A pesar del aumento exponencial de la capacidad de los procesadores, esta no es suficiente para el estudio de muchos sistemas. Es necesario entonces
Más detallesParadigma de paso de mensajes
Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:
Más detallesHilos Secciones Stallings:
Capítulo 4 Hilos Secciones Stallings: 4.1 4.3 Contenido Procesos e hilos. Hilos a nivel de núcleo y a nivel de usuario. Multiprocesador simétrico (SMP). Micronúcleos. 1 Proceso Unidad de propiedad de los
Más detallesDatos Elementales y formato de un programa en Java
Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:
Más detallesArquitecturas cliente/servidor
Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?
Más detallesProcesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)
Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional () adicional () Preparado Preparado
Más detalles6. Enumere tres ventajas de los ULT frente a los KLT.
1 Tarea 3 Hilos 1. Cuales bloques de control de proceso deberían pertenecer a un bloque de control de hilo y cuáles a un bloque de control de proceso en un sistema multihilo? Para modelos monohilo deben
Más detallesde Gran Canaria Centro de Tecnología Médica Programación Concurrente
Universidad de Las Palmas de Gran Canaria Centro de Tecnología Médica http://www.ctm.ulpgc.es Tema 1: Introducción a la Escuela Técnica Superior de Ingenieros de Telecomunicación Conceptos Fundamentales
Más detallesTEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (segunda parte)
TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (segunda parte) SISTEMAS PARALELOS Y DISTRIBUIDOS www.atc.us.es Dpto. de Arquitectura y Tecnología de Computadores. Universidad de Sevilla
Más detallesDefinición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.
Clases y Objetos Java es un lenguaje orientado a objetos que incorpora un gran número de clases predefinidas organizadas en paquetes. La programación en Java supone definir clases de forma jerárquica,
Más detallesDefinición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.
Clases y Objetos Java es un lenguaje orientado a objetos que incorpora un gran número de clases predefinidas organizadas en paquetes. La programación en Java supone definir clases de forma jerárquica,
Más detallesTEMA 1. Introducción a las arquitecturas distribuidas
TEMA 1. Introducción a las arquitecturas distribuidas Tema 1. ARQUITECTURAS DISTRIBUIDAS: CONCEPTOS BÁSICOS 1. Qué es un sistema distribuido? 2. Servicios 3. Arquitectura 4. Definición de AD 5. Modelos
Más detallesUnidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo
Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia
Más detallesCapítulo 3. Introducción a la programación. Continuar
Capítulo 3 Introducción a la programación Continuar Introducción Java es un lenguaje que tiene muchas ventajas frente a otros lenguajes de programación: es open source (código abierto), esto permite ver
Más detallesINTRODUCCIÓN A LA PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI SISTEMAS PARALELOS Y DISTRIBUIDOS
INTRODUCCIÓN A LA PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI 1 Y DISTRIBUIDOS GRADO EN INGENIERÍA INFORMÁTICA INGENIERÍA DE COMPUTADORES ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
Más detallesCurso de Java Introducción a la Programación II
Curso de Java Introducción a la Programación II Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Tipos Java 2 Decalaración de variables 3 Operadores aritméticos Índice
Más detallesSistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.
Tema 5 : Comunicación entre Procesos mediante Tuberías Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción Algunas
Más detallesParalelismo Relajado Paralelismo Síncrono
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelismo Relajado Paralelismo Síncrono Domingo Giménez (Universidad de Murcia) 1
Más detallesEscalabilidad: El desempeño del software y hardware debe ser eficiente desde un grupo pequeño de procesadores a un grupo muy grande de procesadores.
Página 1 de 8 Introducción a BSP La motivación para el modelo de computación paralela BSP (The Bulk-Synchronous Parallel Model) surge de una comparación con lo que se observa en el mundo de la computación
Más detallesParalelismo. MPI Paso de mensajes. Francisco García Sánchez Departamento de Informática y Sistemas
Paralelismo MPI Paso de mensajes Francisco García Sánchez Departamento de Informática y Sistemas Contenido Introducción 1) Uso de MPI 2) Multiplicación de matrices 3) Ordenación por mezcla 4) Programación
Más detallesTema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL
Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,
Más detallesSistemas Operativos. Procesos
Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso
Más detallesParalelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelización de problemas de recorrido de árboles Trabajadores replicados
Más detallesTema 7. Entrada / Salida
Tema 7 Entrada / Salida Problemática Entrada/Salida Elementos claves en un computador: Procesador, memoria y módulos de E/S Cada módulo de E/S se conecta al bus del sistema y controla a uno o a más periféricos
Más detallesTEMA 7. ARRAYS (LISTAS Y TABLAS).
TEMA 7. ARRAYS (LISTAS Y TABLAS). En capítulos anteriores se han descrito las características de los tipos de datos básicos o simples (carácter, entero y coma flotante). Asimismo, se ha aprendido a definir
Más detallesSistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos
Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión
Más detallesPrácticas de Sistemas operativos
Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Segunda Semana: Procesos, Procesos Padre y Procesos Hijo, familia exec() 1 Entregas
Más detallesSISTEMAS OPERATIVOS Manejo de procesos
SISTEMAS OPERATIVOS Manejo de procesos Amilcar Meneses Viveros ameneses@computacion.cs.cinvestav.mx Universidad de Occidente Presentación Concepto de proceso Despacho de procesos Operaciones sobre procesos
Más detallesUsando el Sistema Operativo
Sistemas Operativos Pontificia Universidad Javeriana Enero de 2010 Los sistemas operativos Los sistemas operativos Perspectivas del Computador Concepto general El sistema operativo es parte del software
Más detallesIntroducción a Sistemas Operativos: Ficheros
Introducción a Sistemas Operativos: Ficheros Clips Fr ancisco J Ballesteros 1. Entrada/Salida Es importante saber cómo utilizar ficheros. En UNIX, es aún más importante dado que gran parte de los recursos,
Más detallesProgramación Concurrente y Paralela. Unidad 1 Introducción
Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el
Más detallesSistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos
Sistema Operativo Repaso de Estructura de Computadores Capítulo 1 Explota los recursos hardware de uno o más procesadores Proporciona un conjunto de servicios a los usuarios del sistema Gestiona la memoria
Más detallesUNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN INGENIERÍA DE SOFTWARE UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 8 Material visual: Diapositivas Unidad de competencia
Más detallesLaboratorio I Java Threads (Silberschatz Galvin)
Laboratorio I Java Threads (Silberschatz Galvin) Un proceso es un programa ejecutandose dentro de su propio espacio de direcciones. Java es un sistema multiproceso, esto significa que soporta varios procesos
Más detallesProgramación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
Más detallesUNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una
Más detallesProcesos Definición y Estados
Procesos Definición y Estados Profesorado de Informática CeRP del Suroeste, Uruguay Contenidos Qué es un proceso Estructuras de datos para gestionar procesos API para trabajar con procesos Hilos (threads).
Más detallesMETODOLOGÍA DE LA PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela
METODOLOGÍA DE LA PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Tipos de paralelismo
Más detallesPráctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones
Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Más detallesDesde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
Más detallesClases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos Construyendo clases nuevas La forma más simple de una clase en Java es: Class Nombre_de_la_Clase { } /* constructores */ /* métodos
Más detallesBiblioteca de sistema
* Para la realización del presente examen se aconseja un tiempo de 2 horas. Teoría 1. Explique en detalle cómo se pasa una llamada al sistema operativo. El sistema operativo se activa cuando debe responder
Más detallesProgramación en Entornos Paralelos: MPI
1-11 Marzo de 2017 FACET -UNT Programación en Entornos Paralelos: MPI Graciela Molina mgracielamolina@gmailcom TRADICIONALMENTE Procesamiento secuencial 2 TRADICIONALMENTE Procesamiento secuencial Si ya
Más detallesJava Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.
Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo
Más detalles1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv
Introducción al lenguaje C Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Instrucciones del pre-procesador procesador 4. Tipos de datos
Más detallesTarea 2. Descripción y Control de Procesos
1 Tarea 2. 1. En qué consiste una traza de instrucciones? Consiste en listar las secuencias de instrucciones que ejecuta cada proceso. El procesador puede caracterizarse mostrando la forma en que intercalan
Más detallesENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda
Tipos de Dispositivos ENTRADA-SALIDA 1. Dispositivos de Bloque: Almacena información en bloques de tamaño fijo (512b hasta 32Kb) Se puede leer o escribir un bloque en forma independiente 2. Dispositivos
Más detallesEjercicios sobre tuberías
Boletín 3. Ejercicios sobre tuberías July 14, 016 1. Indica de manera justificada si las siguientes afirmaciones sobre la utilización de tuberías como mecanismo de sincronización entre dos procesos son
Más detallesDocente: Juan Carlos Pérez P. Alumno : Fecha : Nota:
Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Justificación: Se pretende con éste contribuir a que el alumno se inicie y conozca el entorno del IDE en la creación de pequeños programas en java Objetivos:
Más detallesINTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA
APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto
Más detallesLógica: Algoritmo: Archivo: Base de datos: Bit:
Lógica: Algoritmo: Archivo: Base de datos: Bit: 1 LÓGICA: Es una secuencia de operaciones realizadas por el hardware o por el software. Lógica del hardware, Son los circuitos y Chips que realizan las operaciones
Más detallesHoja de ejercicios del Tema 9
Facultad de Informática Universidad Complutense Fundamentos de la programación Curso 2013 2014 Hoja de ejercicios del Tema 9 1. Sin ejecutarlo, qué mostraría el siguiente código? int x = 5, y = 12, z;
Más detallesTema 4: Gestión de Procesos
Tema 4: Gestión de Procesos SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La Mancha Marzo
Más detallesPARADIGMA y LENGUAJES DE PROGRAMACIÓN
CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre
Más detallesIntroducción a la Programación
Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación
Más detallesInformática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.
Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el
Más detallesTema II. Descripción y control de procesos. UNED Manuel Fernández Barcell. Blog:
Tema II Descripción y control de procesos UNED Manuel Fernández Barcell http://www.mfbarcell.es Blog: http://prof.mfbarcell.es 2.2.1 CONCEPTO DE PROCESO Un programa es un archivo ejecutable que está en
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
V1.1 Informática Ingeniería en Electrónica y Automática Industrial Datos en lenguaje C Datos en lenguaje C Introducción Tipos de datos básicos y modificadores Tipos de datos enteros Tipos de datos reales
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Datos en lenguaje C V1.1 Datos en lenguaje C Introducción Tipos de datos básicos y modificadores Tipos de datos enteros Tipos de datos reales
Más detallesLaboratorio de Arquitectura de Redes. Datos en lenguaje C
Laboratorio de Arquitectura de Redes Datos en lenguaje C Datos en lenguaje C Introducción Tipos de datos básicos y modificadores Tipos de datos enteros Tipos de datos reales Tamaño y rango de los datos
Más detallesProgramación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.
Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor
Más detallesTipos de datos y Operadores Básicos
Módulo I: Conceptos Básicos Tema 1. Qué es un ordenador? Tema 2. Cómo se representan los datos en un ordenador? Tema 3. Qué es un lenguaje de programación? Tema 4. Cómo se hace un programa informático?
Más detallesPara C un chero no es más que una porción de almacenamiento
Ficheros en C Para C un chero no es más que una porción de almacenamiento de memoria. C representa un chero como una estructura, de hecho el chero stdio.h contiene la dención de un chero como si fuese
Más detallesCilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011
Un entorno de programación paralela Tomás Muñoz Rodríguez < tomas.munoz@um.es > 17 de noviembre de 2011 Profesor: Domingo Jiménez Cánovas Asignatura: Metodología de la Programación Paralela Facultad de
Más detallesProcesos. Procesos. Sistemas Operativos Procesos KMC 2017
Procesos Procesos Concepto de Proceso Planificación de Proceso Operaciones sobre Procesos Comunicaciones Interprocesos (IPC) Ejemplos de Sistemas de IPC Comunicación en un Sistema Cliente-Servidor 1 Concepto
Más detallesTema 6: Clases. Índice
Tema 6: Clases Antonio J. Sierra Índice 1. Fundamentos. 2. Declaración de objetos. 3. Asignación de objetos a variables referencia. 4. Métodos. 5. Constructores. 6. this. 7. Recogida de basura. 8. Modelado
Más detallesTema 2.- Objetos y mensajes
Tema 2.- Objetos y mensajes 1. Objetos y mensajes: mecanismo de envío de mensajes...2 2. SMALLTALK: EXPRESIONES...3 2.1. LITERALES: designan objetos constantes...3 2.2. NOMBRES DE VARIABLES: identifican
Más detallesMemoria en C++ Punteros - Referencias Clases Y ahora, a trabajar! Memoria Dinámica en C++
Qué es una variable? Variables Memoria Matemática: una etiqueta que representa a un valor en una expresión: f (y) = y 2 + 2y Programación: Nombre simbólico dado a un valor residente en la memoria. Propiedades
Más detallesProgramación Gráfica de Altas Prestaciones
rogramación Gráfica de Altas restaciones lataformas de altas prestaciones para Infomática Gráfica. Máster de Desarrollo de Software Depto. de Lenguajes y Sistemas Informáticos lsi.ugr.es/~jmantas/ga 1.
Más detallesFacultad de Informática Universidad Euskal Herriko del País Vasco Unibertsitatea Arquitectura de Computadores I Guión de los laboratorios de E/S 1
Arquitectura de Computadores I Guión de los laboratorios de E/S 1 Con el objetivo de afianzar los conceptos sobre entrada/salida estudiados en este tema, se proponen una serie de prácticas de laboratorio
Más detallesInformática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida.
Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Objetivos de la práctica: - Mostrar la sintaxis de los diferentes tipos de datos presentes en C/C++.
Más detallesEstructura Windows NT
Introducción - Uno de los objetivos principales del diseño de Windows NT fue tener un núcleo tan pequeño como fuera posible. - En este núcleo estarían integrados módulos que dieran respuesta a aquellas
Más detallesConcurrencia y paralelismo
Introducción a los Sistemas Operativos Concurrencia y paralelismo 1. Ejecución de programas. Procesos. 2. Multiprogramación Bibliografía Silberschatz and Galvin Sistemas Operativos. Conceptos fundamentales.
Más detallesPROCESAMIENTO DISTRIBUIDO
Pág. 1 INTRODUCCIÓN PROCESAMIENTO DISTRIBUIDO Arquitectura de comunicaciones: Software básico de una red de computadoras Brinda soporte para aplicaciones distribuidas Permite diferentes Sistemas Operativos
Más detallesFacultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS
PROCESOS DISTRIBUIDOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen El proceso cliente servidor es la clave para comprender el potencial de los sistemas de información y las redes
Más detallesAlgoritmo, Estructuras y Programación I Ing. Marglorie Colina
Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona
Más detallesSISTEMAS OPERATIVOS INTRODUCCIÓN. Pedro de Miguel Anasagast
SISTEMAS OPERATIVOS INTRODUCCIÓN Pedro de Miguel Anasagast INTRODUCCIÓN AL SISTEMA OPERATIVO MÁQUINA DESNUDA Máquina desnuda: Término que se aplica a un computador carente de sistema operativo. El término
Más detallesTema 4: Gestión de Procesos
Tema 4: SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La Mancha Marzo de 2006 Índice Concepto
Más detallesLaboratorio de Arquitectura de Redes. Punteros en lenguaje C
Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones
Más detallesRMI. Aplicaciones Distribuidas
RMI Aplicaciones Distribuidas Contenido Objetos Distribuidos y RMI. Interface Remota. Clase Implementación. Referencias Remotas. Registro RMI. Paso de parámetros. Descarga dinámica de código. Desarrollo
Más detallesSISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 9 Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla
SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 9 Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI. PREPARACIÓN
Más detallesPUNTEROS (Apuntadores)
PUNTEROS (Apuntadores) Unidad III INTRODUCCIÓN A PUNTEROS. CONCEPTOS BÁSICOS. DECLARACIÓN DE PUNTEROS. PUNTEROS Como una colección de posiciones de memoria consecutivas. En ella se almacenan los distintos
Más detallesEsquemas de comunicación
Esquemas de comunicación tipos de comunicación Maestro-esclavo o comunicación global Esquema SPMD o comunicación local Maestro-esclavo o comunicación global Consiste en la implementación de un componente
Más detallesUna expresión es una combinación de uno o más operandos y operadores para obtener un resultado.
1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.
Más detallesIntroducción general al Lenguaje C (2010/2011)
Luis Valencia Cabrera lvalencia@us.es (http://www.cs.us.es/~lvalencia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Introducción general al Lenguaje C (2010/2011) Universidad de Sevilla Índice
Más detallesConcurrencia de Procesos
Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)
Más detallesQué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
Más detalles