Procesamiento Paralelo

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Procesamiento Paralelo"

Transcripción

1 Procesamiento Paralelo OpenCL - Introducción Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina 5 de junio de 2017

2 Marco general

3 Qué es OpenCL? OpenCL (Open Computing Language) Estándar para programar plataformas heterogéneas: CPUs, GPUs, DSPs, Consta de un lenguaje basado en C99 para armar y una especificación de la API Es soportado por la mayoría (sino todos) en la industria: AMD, Intel, NVIDIA, Apple, Android

4 Características Código portable :) Se define en cuatro partes Modelo de la plataforma Modelo de ejecución Modelo de memoria Modelo de programación

5 Arquitecturas

6 Una computadora contemporánea

7 Arquitecuta GPU AMD Radeon 6970

8 Arquitecuta GPU NVIDIA GTX 580

9 Modelo de la plataforma

10 Modelo de la plataforma Una unidad central (host) y varios dispositivos de procesamiento Los dispositivos de de procesamiento se dividen en unidades de procesamiento Las unidades de procesamiento se dividen en uno o varios elementos de procesamiento Cada elemento de procesamiento tiene su contador de programa!!!

11 Quien es quien Los host son procesadores de propósito general: x86 o similares Los dispositivos son los procesadores especializados: GPUs o DSPs Dependiendo de las implementaciones, los cores pueden ser considerados de diversas formas

12 Seleccionando una plataforma Usualmente, esta función se llama dos veces La primera llamada se usa para ver la cantidad de plataformas disponibles en la implementación Luego hacemos espacio para los objetos de la plataforma En la segunda llamada obtenemos los objetos de la plataforma

13 Seleccionando un dispositivo Una vez que seleccionamos la plataforma, consultamos por los dispositivos Se puede especificar el tipo de dispositivo que estamos buscando: todos, solo GPUs, solo CPUs Usualmente usamos dos veces a esta función como el caso anterior

14 Modelo de ejecución

15 Contexto Un contexto es un espacio para manejar los objetos y recursos de OpenCL En un programa OpenCL los siguientes conceptos están asociados a un contexto: Dispositivos Objetos de programa: implementación de los objetos de cómputo Kernels: Funciones que corren en dispositivos OpenCL (el código de los threads) Objetos de memoria: los datos operados en el dispositivo (los datos de los threads) Colas de comandos: mecanismos de interacción de dispositivos (transferencia de datos, ejecución de kernels y sincronización)

16 Contexto Cuando se crea un contexto, el programador provee una lista de dispositivos a asociar

17 Creando un contexto Con esta función creamos un contexto, se debe pasar la lista de dispositivos cl_context_properties especifica que plataforma a usar (NULL indica que se usa el provisto por el vendedor por defecto) Se provee un mecanismo de callback para reportar errores al usuario

18 Colas de comandos La cola de comandos es el mecanismo por el cual el procesador central (host) le pide una acción a un dispositivo (device) Hay transferencia de datos a la memoria y ejecución de tarea Cada dispositivo tiene su cola de comandos Los comandos pueden ser sincrónicos o asincrónicos Los comandos se pueden ejecutar en orden o no (out-of-order)

19 Creando un cola de comandos Hay relacion entre la cola de comandos y el contexto En las propiedades se especifica la ejecución fuera de orden y el sensado de desempeño (profilling)

20 Colas de comandos dentro del contexto Las colas de comandos asocian a los dispositivos con el contexto Contexto cola comandos

21 Objetos de memoria Los objetos de memoria es la forma de manejar los datos Se clasifican en buffers o imágenes Buffers Trozos de memoria contíguos (arreglos, punteros, estructuras) Se pueden leer y escribir en ellos Imágenes Objetos 2D o 3D Solo se acceden como read_image() y write_image() Por cada kernel solo se puede leer o escribir

22 Creando buffers Con esta función creamos un buffer para un contexto dado Con los flags especificamos: La combinación de lectura/escritura permitida en los datos El uso de host pinter para guardar los datos La copia de los datos desde el host pointer

23 Objetos de memoria Los objetos de memoria están asociados con un contexto Deben ser explícitamente transferidos a los dispositivos antes de realizar la ejecución Contexto Objetos OpenCL no-inicializados (se debe transefir los datos)

24 Transfiriendo datos Los comandos para transferir hacia y desde los dispositivos son: clenqueueread/writebuffer/image Copiando datos desde el anfitrión (host) al dispositivo (device) es una escritura Copiar desde el dispositivo al host es una lectura El comando de escritura inicializa el objeto de memoria y lo ubica en un dispositivo OpenCL tiene directivas para mapear directamente objetos de memoria a un puntero en el host

25 Transfiriendo datos La función inicializa el objeto de memoria y escribe los datos en el dispositivo asociado con la cola de comandos El comando va a escribir datos desde un puntero del host (ptr) al dispositivo El parámetro blocking_write especifica si el comando retorna antes que la transferencia de datos sea completada Los eventos especifica que comandos deben ser completados antes que este se ejecute

26 Transfiriendo datos Los objetos de memoria se transfieren a los dispositivos especificando una acción (lectura/escritura) y una cola de comandos La especificación de OpenCL deja abierta la validez de objetos en múltiples dispositivos (depende el proveedor) Contexto Las imágenes están en el dispositivo pero son parte del contexto y las ve el host!!

27 Programas En terminos generales, un objeto programa es una colección de Kernels OpenCL Puede ser código fuente (texto) o un binario compilado previamente Puede contener datos constantes o funciones auxiliares Para crear un objeto programa se requiere leer un archivo de texto (código fuente) o un binario compilado Para compilar son necesarios los siguientes requerimientos: Especificar el dispositivo destino (hay compilación para cada dispositivo) Pasar parámetros al compilador (opcional) Manejar errores de compilación (opcional)

28 Programas Un objeto de programa es creado y compilado cuando se provee los fuentes o un binario Contexto Objeto programa

29 Creando un programa La función crea un objeto programa usando un archivo de texto conteniendo fuentes count especifica la cantidad de líneas en el archivo fuente El programador debe crear una función para leer el código Si nos las cadenas de caracteres no terminan en NULL, los campos lengths especifican los largos

30 Compilando un programa Esta función compila y linkea un ejecutable desde el objeto programa a cada dispositivo en el ambiente En caso de proveer una lista de dispositivos, solo se envía el ejecutable a los dispositivos en la lista El el argumento opcional se puede especificar preprocesador y optimizaciones entre otros

31 Reportando errores de compilación Si hay un error de compilación, OpenCL requiere que el programador adquiera la salida del compilador El error se determina por el valor de error retornado por clbuildprogram() Para obtener el mensaje como una cadena de caracteres se debe llamar a clgetprogrambuildinfo() con el objeto programa y el parámetro CL_PROGRAM_BUILD_STATUS

32 Kernels Un kernel es una función declarada en un programa que es ejecutada en un dispositivo OpenCL Un objeto kernel esta compuesto por la función y los argumentos asociados Un objeto kernel es creado desde un programa compilado El programa debe asociar explícitamente argumentos (objetos de memoria y primitivas entre otras) con el objeto kernel

33 Kernels El objeto kernel es creado por el objeto programa Contexto Objeto kernel

34 Creando un Kernel Esta función crea un kernel a partir de un objeto programa dado El objeto kernel creado es especificado por una cadena de caracteres que coincide con el nombre de la función dentro del programa

35 Compilación en tiempo de ejecución Es costoso compilar programas y crear kernels en tiempo de ejecución Lo ideal es hacer estas operaciones una sola vez al comienzo del programa Los objetos kernel pueden ser reusados con diferentes argumentos de entrada cargar código fuente en un arreglo clcreateprogramwithsource clbuildprogramm clcreatekernel clcreateprogramwithbinary

36 Definiendo argumentos del kernel Se debe llamar la función clsetkernelargs Se debe especificar el índice del argumento como aparece en la función, el tamaño y el puntero a los datos

37 Ejemplos argumentos del kernel / / primer ejemplo clsetkernelarg ( kernel, 0, s i z e o f ( cl_mem ), ( void )& d_iimage ) ; / / segundo ejemplo clsetkernelarg ( kernel, 1, s i z e o f ( i n t ), ( void )&a ) ;

38 Imágenes como argumentos de kernels Los objetos de memoria y datos individuales pueden se pasados como argumentos de kernels Contexto argumentos de kernel

39 Estructura de threads En los programas masivamente paralelos cada thread computa una parte del problema En el caso de una suma de vectores, cada thread va a sumar un elemento del arreglo Si lo pensamos de una manera visual, los threads se van a ordenar en la misma forma que los datos

40 Estructura de threads Hagamos una suma simple de vectores de 16 elementos C=A+B índices vectores suma vectores A + B = C

41 Estructura de threads Creamos una estructura de threads 1D para resolver el problema threads suma vectores A + B = C

42 Estructura de threads Cada thread suma un componente del vector threads suma vectores A + B = C

43 Estructura de threads La estructura de threads esta diseñada para ser escalable Cada instancia de un kernel es llamada un ítem de trabajo (puede ser thread) Los ítems de trabajo se organizan en grupos de trabajo Los grupos de trabajo son independientes entre si (esto permite escalar) Un espacio de índices define una jerarquía grupos de trabajo e ítems de trabajo

44 Estructura de threads

45 Estructura de threads OpenCL permite identificar a los threads en si mismo y a sus datos Los threads pueden determinar el ID global en cada dimensión get_global_id(dim) get_global_size(dim) Los threads pueden determinar el ID del grupo de trabajo y el ID dentro del grupo get_group_id(dim) get_num_groups(dim) get_local_id(dim) get_local_size(dim) get_global_id(0) = column, get_global_id(1) = row get_num_groups(0) * get_local_size(0) == get_global_size(0)

46 Modelo de memoria

47 Modelo de Memoria OpenCL define varios tipos de memoria Esta muy relacionada con la arquitectura del hardware Memoria global: accesible a todos los ítems de trabajo Memoria constante: solo lectura y global Memoria local: local a el grupo de trabajo Memoria privada: privada a un ítem de trabajo

48 Modelo de memoria

49 Modelo de Memoria El manejo de memoria es explicito Se debe mover datos desde el host al dispositivo Dentro del dispositivo hay que mover los datos desde la memoria global a la local Los grupos de trabajo son asignados a ejecutar sobre unidades de cómputo No hay garantía de coherencia de datos entre dos grupos de trabajo (no hay mecanismo de software en la especificación de opencl)

50 Escribiendo un kernel Una instancia de kernel es creada por cada thread Los kernels tienen las siguientes características: Deben comenzar con la palabra clave kernel Deben tener tipo de retorno void Debe declarar el espacio de memoria para cada argumento que es un objeto de memoria (ahora lo vemos) Debe usar las funciones de la API (por ejemplo get_global_id()) para determinar sobre que datos que cada thread va a trabajar

51 Identificadores de espacios de memoria kernel toma memoria desde el espacio global de memoria constant un tipo especial de memoria solo lectura local memoria compartida por el grupo de trabajo private privado a cada ítem de trabajo read_only read_only usado en imágenes Los argumentos del kernel que son objetos de memoria deben ser globales, locales o constantes

52 Ejemplo de kernel Suma simple de dos vectores kernel void sumavectores ( global i n t A, global i n t B, global i n t C) { i n t t i d = g e t _ g l o b a l _ i d ( 0 ) ; C[ t i d ] = A [ t i d ] + B [ t i d ] ; }

53 Modelo de ejecución

54 Ejecutando el kernel Se necesita definir las dimensiones del espacio de índices y los tamaños de los grupos de trabajo Los kernels se ejecutan asincónicamente clenqueuendrangekernel lo agrega a la cola de ejecución, no garantiza el momento de comienzo

55 Ejecutando el kernel La estructura de los threads es definida por el espacio de índices que es creado Cada thread ejecuta el mismo kernel sobre una parte diferente de los datos Contexto se crea un espacio de índices relacionado a las dimensiones de los datos

56 Ejecutando el kernel La estructura de los threads es definida por el espacio de índices que es creado Cada thread ejecuta el mismo kernel sobre una parte diferente de los datos Contexto se crea un espacio de índices relacionado a las dimensiones de los datos

57 Ejecutando el kernel La función le dice al dispositivo asociado con una cola de comandos que comience a ejecutar el kernel El espacio global debe ser especificado y el tamaño de los grupos de trabajo local es opcional Se puede proveer una lista de eventos que deben cumplirse antes que la operación se ejecute

58 Copiando datos al anfitrión El último paso es copiar los datos desde el dispositivo al CPU Similar a la escritura de datos, pero en este caso hay transferencia del dispositivo al CPU

59 Copiando datos al anfitrión Contexto

60 Liberando recursos La matoría de los objetos OpenCL son deben ser liberados luego de ser usados Hay una función clrelease{recurso} para la mayoría de los tipos OpenCL Algunos ejemplos son clreleaseprogramm() o clreleasememobject()

61 Verificado errores Los comandos OpenCL retornan errores como enteros negativos El valor cero significa ejecución exitosa CL_SUCCESS Una breve lista de errores: -1 CL_DEVICE_NOT_FOUND -2 CL_DEVICE_NOT_AVAILABLE -3 CL_COMPILER_NOT_AVAILABLE -4 CL_MEM_OBJECT_ALLOCATION_FAILURE -5 CL_OUT_OF_RESOURCES

62 Todo en una foto

63 Modelo de programación Paralelismo de datos Mapeo uno-a-uno entre ítems de trabajo y elementos en objetos de memoria Los grupos de trabajo pueden ser definidos explícitamente o implícitamente (se definen los ítems de trabajo y OpenCL crea los grupos de trabajo) Paralelismo de tareas El kernel es ejecutado independientemente del espacio de índices Otras formas de paralelismo: enviar a la cola tareas múltiples, usar tipos de vectores específicos para algún dispositivo particular Sinconización Es posible entre ítems en un grupo de trabajo Es posible entre comandos en una cola de comandos del mismo contexto

64 Resumiendo OpenCL provee herramientas para operar entre el CPU y GPU Se necesita crear un contexto para contener toda la información y datos requeridos en un programa OpenCL Se crean objetos de memoria para moverlos hacia y desde los dispositivos Los programas y los kernels contienen el código que los dispositivos ejecutan

65 Compilando

66 Compilando el primer programa # Compilando : gcc I / usr / i n c l u d e / CL / lopencl \ o a p p l i c a t i o n V e c t o r A d d i t i o n. cpp # Ejecutando :. / a p p l i c a t i o n

67 En detalle : ~ / Downloads / lec02_03_code$ l l t o t a l 16 rw r r 1 j a v i e r j a v i e r 176 Jan vectoradd. c l rw r r 1 j a v i e r j a v i e r Jan V e c t o r A d d i t i o n. cpp javier@orca : ~ / Downloads / lec02_03_code$ gcc I / usr / include /CL / lopencl o f i r s t application o javier@orca : ~ / Downloads / lec02_03_code$ l l t o t a l 32 rwxr xr x 1 j a v i e r j a v i e r Oct 13 15:32 f i r s t a p p l i c a t i o n opencl rw r r 1 j a v i e r j a v i e r 176 Jan vectoradd. c l rw r r 1 j a v i e r j a v i e r Jan V e c t o r A d d i t i o n. cpp javier@orca : ~ / Downloads / lec02_03_code$. / f i r s t application opencl Running Vector A d d i t i o n program 1 p l a t f o r m s detected Platform 0: Vendor : NVIDIA Corporation Name: NVIDIA CUDA 1 devices detected Device 0: Device : NVIDIA Corporation Name: GeForce GTS 450 No b u i l d e r r o r s Output i s c o r r e c t javier@orca : ~ / Downloads / lec02_03_code$

68 Comparando con CUDA

69 Conceptos en OpenCL y CUDA

70 Relación de índices entre OpenCL y CUDA

71 Profiling en NVIDIA

72 NVIDIA Visual Profiler En Linux se ejecuta como nvvp

73 Comienzo

74 Profiler

75 Contacto

76 Muchas gracias! Preguntas?

77 Referencias

78 A. Munshi, B. Gaster, T. G. Mattson, J. Fung, D. Ginsburg, OpenCL Programming Guide, Addison-Wesley Professional, B. Gaster, L. Howes, D. R. Kaeli, P. Mistry, D. Schaa, Heterogeneous Computing with OpenCL, Morgan Kaufmann, AMD OpenCL University Kit NVIDIA CUDA Toolkit

Procesamiento Paralelo

Procesamiento Paralelo Procesamiento Paralelo OpenCL - Introducción Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar

Más detalles

Computación Heterogénea con OpenCL. Flores, Facundo UNSA Fac. Cs. Exactas

Computación Heterogénea con OpenCL. Flores, Facundo UNSA Fac. Cs. Exactas Computación Heterogénea con Flores, Facundo UNSA Fac. Cs. Exactas Introducción COMPUTACION HETEROGENEA Introducción COMPUTACION HETEROGENEA Qué es? Introducción COMPUTACION HETEROGENEA Qué es? Un poco

Más detalles

Introducción a Cómputo Paralelo con CUDA C/C++

Introducción a Cómputo Paralelo con CUDA C/C++ UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a Cómputo Paralelo con CUDA C/C++ Laboratorio de Intel y Cómputo de alto desempeño Elaboran: Revisión: Ing. Laura Sandoval Montaño

Más detalles

Primeros pasos con CUDA. Clase 1

Primeros pasos con CUDA. Clase 1 Primeros pasos con CUDA Clase 1 Ejemplo: suma de vectores Comencemos con un ejemplo sencillo: suma de vectores. Sean A, B y C vectores de dimensión N, la suma se define como: C = A + B donde C i = A i

Más detalles

CUDA (Compute Unified Device Architecture)

CUDA (Compute Unified Device Architecture) CUDA (Compute Unified Device Architecture) Alvaro Cuno 23/01/2010 1 CUDA Arquitectura de computación paralela de propósito general La programación para la arquitectura CUDA puede hacerse usando lenguaje

Más detalles

CUDA: MODELO DE PROGRAMACIÓN

CUDA: MODELO DE PROGRAMACIÓN CUDA: MODELO DE PROGRAMACIÓN Autor: Andrés Rondán Tema: GPUGP: nvidia CUDA. Introducción En Noviembre de 2006, NVIDIA crea CUDA, una arquitectura de procesamiento paralelo de propósito general, con un

Más detalles

PROGRAMACIÓ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 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 detalles

GPGPU ( GENERAL PURPOSE COMPUTING ON GRAPHICS PROCESSING UNITS)

GPGPU ( GENERAL PURPOSE COMPUTING ON GRAPHICS PROCESSING UNITS) 26 GPGPU ( GENERAL PURPOSE COMPUTING ON GRAPHICS PROCESSING UNITS) Técnica GPGPU consiste en el uso de las GPU para resolver problemas computacionales de todo tipo aparte de los relacionados con el procesamiento

Más detalles

Introducción a la Arquitectura y Plataforma de Programación de Cómputo Paralelo CUDA (36 hrs) Instructor M. en C. Cristhian Alejandro Ávila-Sánchez

Introducción a la Arquitectura y Plataforma de Programación de Cómputo Paralelo CUDA (36 hrs) Instructor M. en C. Cristhian Alejandro Ávila-Sánchez Introducción a la Arquitectura y Plataforma de Programación de Cómputo Paralelo CUDA (36 hrs) I Presentación: Instructor M. en C. Cristhian Alejandro Ávila-Sánchez CUDA (Compute Unified Device Architecture)

Más detalles

Alejandro Molina Zarca

Alejandro Molina Zarca Compute Unified Device Architecture (CUDA) Que es CUDA? Por qué CUDA? Dónde se usa CUDA? El Modelo CUDA Escalabilidad Modelo de programación Programación Heterogenea Memoria Compartida Alejandro Molina

Más detalles

Usando el Sistema Operativo

Usando 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 detalles

Plan 95 Adecuado DEPARTAMENTO: ELECTRÓNICA CLASE: ELECTIVA DE ESPECIALIDAD ÁREA: TÉCNICAS DIGITALES HORAS SEM.: 4 HS. HORAS / AÑO: 64 HS.

Plan 95 Adecuado DEPARTAMENTO: ELECTRÓNICA CLASE: ELECTIVA DE ESPECIALIDAD ÁREA: TÉCNICAS DIGITALES HORAS SEM.: 4 HS. HORAS / AÑO: 64 HS. Plan 95 Adecuado ASIGNATURA: COMPUTACIÓN PARALELA CON PROCESADORES GRÁFICOS CODIGO: 95-0409 DEPARTAMENTO: ELECTRÓNICA CLASE: ELECTIVA DE ESPECIALIDAD ÁREA: TÉCNICAS DIGITALES HORAS SEM.: 4 HS. HORAS /

Más detalles

Francisco J. Hernández López

Francisco J. Hernández López Francisco J. Hernández López fcoj23@cimat.mx 2 Procesadores flexibles de procesamiento general Se pueden resolver problemas de diversas áreas: Finanzas, Gráficos, Procesamiento de Imágenes y Video, Algebra

Más detalles

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++ Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202 Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase

Más detalles

Francisco J. Hernández López

Francisco J. Hernández López Francisco J. Hernández López fcoj23@cimat.mx Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Sistema de Cómputo Paralelo Hardware Parallel programming:

Más detalles

Arquitecturas GPU v. 2015

Arquitecturas GPU v. 2015 v. 2015 http://en.wikipedia.org/wiki/graphics_processing_unit http://en.wikipedia.org/wiki/stream_processing http://en.wikipedia.org/wiki/general-purpose_computing_on_graphics_processing_ units http://www.nvidia.com/object/what-is-gpu-computing.html

Más detalles

Francisco Javier Hernández López

Francisco Javier Hernández López Francisco Javier Hernández López fcoj23@cimat.mx http://www.cimat.mx/~fcoj23 Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Arquitecturas que hay

Más detalles

14 de Junio. Titulació: Centre: Facultat d Informàtica de Barcelona (FIB) Universitat: Universitat Politècnica de Catalunya (UPC) BarcelonaTech

14 de Junio. Titulació: Centre: Facultat d Informàtica de Barcelona (FIB) Universitat: Universitat Politècnica de Catalunya (UPC) BarcelonaTech Títol: Autor: Data: OmpSsCL: Entorno para la programación automática de aplicaciones OpenCL Filgueras Izquierdo, Antonio 14 de Junio Director: Jiménez González, Daniel Departament del director: Departament

Más detalles

Programación de Multitareas utilizando Hilos

Programación de Multitareas utilizando Hilos Programación de Multitareas utilizando Hilos Enero/2012 Programación de Multitareas utilizando Hilos Origen de los hilos como elementos necesarios en la programación de multitareas Multihilos en un solo

Más detalles

Sistemas Complejos en Máquinas Paralelas

Sistemas Complejos en Máquinas Paralelas Sistemas Complejos en Máquinas Paralelas Clase 1: OpenMP Francisco García Eijó Departamento de Computación - FCEyN UBA 15 de Mayo del 2012 Memoria compartida Las mas conocidas son las máquinas tipo Symmetric

Más detalles

Clases y Objetos en C++

Clases y Objetos en C++ Informática II Clases y Objetos en C++ Introducción Las variables de los tipos fundamentales de datos no son suficientes para modelar adecuadamente objetos del mundo real. alto, ancho y longitud para representar

Más detalles

METODOLOGÍ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 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 detalles

Sistemas Operativos. Procesos

Sistemas 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 detalles

Clases 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 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 detalles

INTRODUCCIÓN A LA PROGRAMACIÓN EN CUDA. Francisco Javier Hernández López

INTRODUCCIÓN A LA PROGRAMACIÓN EN CUDA. Francisco Javier Hernández López INTRODUCCIÓN A LA PROGRAMACIÓN EN CUDA Francisco Javier Hernández López http://www.cimat.mx/~fcoj23 Guanajuato, Gto. Noviembre de 2012 Introducción a la Programación en CUDA 2 Qué es el Cómputo Paralelo

Más detalles

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

Más detalles

Procesamiento Paralelo

Procesamiento Paralelo Procesamiento Paralelo Arquitecturas de Computadoras Paralelas Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar

Más detalles

Capítulo 3. Introducción a la programación. Continuar

Capí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 detalles

PARTE II PROGRAMACION CON THREADS EN C

PARTE II PROGRAMACION CON THREADS EN C PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.

Más detalles

Organización del Sistema Operativo

Organización del Sistema Operativo del Sistema Operativo Sistemas Operativos Pontificia Universidad Javeriana Febrero de 2010 del Sistema Operativo Funciones Básicas Funciones Básicas Perspectivas del Computador Responsabilidades del SO

Más detalles

Tema: Clases y Objetos en C#. Parte II.

Tema: Clases y Objetos en C#. Parte II. Programación II. Guía No. 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C#. Parte II. Objetivos Implementar clases, objetos, propiedades, métodos y

Más detalles

Taller de Sistemas Operativos. Procesos 2012

Taller de Sistemas Operativos. Procesos 2012 Taller de Sistemas Operativos Procesos 2012 Agenda Introducción PCB (task_struct) Agrupaciones de procesos Estado de un proceso Cambio de proceso (task switch) Creación y destrucción de un proceso Threads

Más detalles

Lógica: Algoritmo: Archivo: Base de datos: Bit:

Ló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 detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 4 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas

Más detalles

directamente indirectamente

directamente indirectamente PUNTEROS EN C PUNTEROS Permiten simular el pasaje de parámetros por referencia. Permiten crear y manipular estructuras de datos dinámicas. Su manejo es de fundamental importancia para poder programar en

Más detalles

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria 1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo

Más detalles

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)

Procesos 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 detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

DESARROLLO DE APLICACIONES EN CUDA

DESARROLLO DE APLICACIONES EN CUDA DESARROLLO DE APLICACIONES EN CUDA Curso 2014 / 15 Procesadores Gráficos y Aplicaciones en Tiempo Real Alberto Sánchez GMRV 2005-2015 1/30 Contenidos Introducción Debugging Profiling Streams Diseño de

Más detalles

Programación de Aplicaciones de Escritorio

Programación de Aplicaciones de Escritorio ENSAMBLADOS Entorno de ejecución común de los lenguajes El proceso de ejecución de cualquier aplicación incluye los pasos siguientes: 1.- Diseñar y escribir el código fuente. 2.- Compilar el código fuente

Más detalles

Modelo de aplicaciones CUDA

Modelo de aplicaciones CUDA Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas

Más detalles

Taller de Sistemas Operativos. Módulos del kernel

Taller de Sistemas Operativos. Módulos del kernel Taller de Sistemas Operativos Módulos del kernel Módulos El kernel de Linux es modular ya que permite la inserción y eliminación dinámica de código en el kernel en tiempo de ejecución. Las subrutinas asociadas,

Más detalles

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Febrero 2016 [Curso de programación en C] - Archivos & Cadenas 1/17 Archivos

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

Tema 3 GPUs: Introducción

Tema 3 GPUs: Introducción Tema 3 GPUs: Introducción Alberto Ros Bardisa Tema 3 GPUs Alberto Ros Bardisa 1 / 15 Agenda 1 GPUs: Introducción 2 GP-GPU 3 Ejemplos comerciales 4 Conclusiones Tema 3 GPUs Alberto Ros Bardisa 2 / 15 Agenda

Más detalles

Taller de Sistemas Operativos. System Calls 2012

Taller de Sistemas Operativos. System Calls 2012 Taller de Sistemas Operativos System Calls 2012 Agenda Conceptos generales La API POSIX y las System Calls Syscalls System Call Handler Como implementar una System Call Contexto de una System Call Utilizar

Más detalles

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java Dr. (c) Noé Alejandro Castro Sánchez Programas Java Applets Pueden correr en navegadores Web Agregan funcionalidad a páginas Web Se llega a restringir su funcionalidad (e. g., no pueden:

Más detalles

Universidad de Costa Rica

Universidad de Costa Rica Universidad de Costa Rica Escuela de Computación e Informática Trabajo sobre Sistema Operativo Mach Sistemas Operativos I Profesor: Diego Villalba Alumno: Daniel Rivera Solano A85274 13-noviembre-2013

Más detalles

roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. Nociones básicas de programación

roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. Nociones básicas de programación There are no translations available. Introducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C.

Más detalles

Procesos e Hilos en C

Procesos e Hilos en C Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.

Más detalles

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 0. Entorno de programación: atcgrid y gestor TORQUE

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 0. Entorno de programación: atcgrid y gestor TORQUE 2º curso / 2º cuatr. 2º curso / 2º cuatr. Grado en Ing. Informática Arquitectura de Computadores Seminario 0. Entorno de programación: atcgrid y gestor TORQUE 2 Contenidos Cluster de prácticas (atcgrid)

Más detalles

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 05 Funciones en lenguaje C Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 1 Temario Programación funcional Declaración (prototipos) y definición de funciones

Más detalles

CUDA 5.5 y Visual Studio Express 2012 para Escritorio. Primeros pasos.

CUDA 5.5 y Visual Studio Express 2012 para Escritorio. Primeros pasos. CUDA 5.5 y Visual Studio Express 2012 para Escritorio. Primeros pasos. La nueva versión de CUDA 5.5 es completamente compatible con la plataforma de desarrollo Visual Studio Express 2012 para escritorio

Más detalles

Asignación Dinámica de Memoria. Agustín J. González Versión original de Kip Irvine ELO 326: Seminario II 2do. Sem. 2001

Asignación Dinámica de Memoria. Agustín J. González Versión original de Kip Irvine ELO 326: Seminario II 2do. Sem. 2001 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 326: Seminario II 2do. Sem. 2001 1 Asignación Dinámica Asignación Dinámica es la creación de un objeto mientras el

Más detalles

04 Como se crea un programa ejecutable de un lenguaje compilado Compiladores - Profr. Edgardo Adrián Franco Martínez

04 Como se crea un programa ejecutable de un lenguaje compilado Compiladores - Profr. Edgardo Adrián Franco Martínez 2 Contenido Compilador Compilación Generación de código ejecutable Generación de un código ejecutable de C/C++ Preprocesado Compilador Ensamblador Enlazador Opciones útiles del compilador gcc 3 Definición

Más detalles

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

Más detalles

Programación Básica Estructuras de Datos y Funciones en C

Programación Básica Estructuras de Datos y Funciones en C Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 8 Universidad de Guanajuato, DCI, Campus León 1 / 33 Contenido 1 Estructuras de Datos

Más detalles

Tipos de Datos Recursivos

Tipos de Datos Recursivos 1/1 Tipos de Datos Recursivos Josefina Sierra Santibáñez 15 de mayo de 2018 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones), sino

Más detalles

Arquitecturas GPU v. 2013

Arquitecturas GPU v. 2013 v. 2013 Stream Processing Similar al concepto de SIMD. Data stream procesado por kernel functions (pipelined) (no control) (local memory, no cache OJO). Data-centric model: adecuado para DSP o GPU (image,

Más detalles

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1 TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1- Cuáles son las principales funciones de un sistema operativo? Los Sistemas Operativos tienen como objetivos o funciones principales lo siguiente; Comodidad;

Más detalles

Informática Electrónica Manejadores de Dispositivos (Device Drivers)

Informática Electrónica Manejadores de Dispositivos (Device Drivers) Informática Electrónica Manejadores de Dispositivos (Device Drivers) DSI-EIE-FCEIA 2015 Que es un DD? Es una pieza de software que interactúa con (entre) el sistema operativo y con uno o mas dispositivos

Más detalles

OpenCL. Rubén Akagi Universidad Católica - Nuestra Señora de la Asunción

OpenCL. Rubén Akagi Universidad Católica - Nuestra Señora de la Asunción OpenCL Rubén Akagi maestrokame@gmail.com Universidad Católica - Nuestra Señora de la Asunción Abstract. Una breve introducción al OpenCL framework. Analiza la estructura interna de la plataforma, las memorias,

Más detalles

Nombre alumno: Ventajas: La ventaja es que desaparecería la fragmentación interna ya que podríamos ajustar los bloques al tamaño que necesitemos.

Nombre alumno: Ventajas: La ventaja es que desaparecería la fragmentación interna ya que podríamos ajustar los bloques al tamaño que necesitemos. Preguntas cortas (justifica todas las respuestas) (2 puntos) 1. Define qué es la buffer cache, qué tipo de información encontramos y cuál es su objetivo La buffer cache es una cache de bloques de disco.

Más detalles

Universidad Rey Juan Carlos. JavaOpenCL Binding Java para OpenCL

Universidad Rey Juan Carlos. JavaOpenCL Binding Java para OpenCL Universidad Rey Juan Carlos Escuela Técnica Superior de Ingeniería Informática Departamento de Ciencias de la Computación INGENIERÍA INFORMÁTICA CURSO ACADÉMICO 2009/2010 JavaOpenCL Binding Java para OpenCL

Más detalles

Sistemas Operativos. MODULO I. ANTECEDENTES 1.2 introducción a los ordenadores

Sistemas Operativos. MODULO I. ANTECEDENTES 1.2 introducción a los ordenadores Sistemas Operativos MODULO I. ANTECEDENTES 1.2 introducción a los ordenadores Sistema Operativo Un S.O. explota los recursos hardware de uno o mas procesadores para proporcionar un conjunto de servicios

Más detalles

Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU. Clase 0 Lanzamiento del Curso. Motivación

Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU. Clase 0 Lanzamiento del Curso. Motivación Computación de Propósito General en Unidades de Procesamiento Gráfico () Pablo Ezzatti, Martín Pedemonte Clase 0 Lanzamiento del Curso Contenido Evolución histórica en Fing Infraestructura disponible en

Más detalles

Mejoras en el planificador de procesos de Linux en la versión 2.6.0

Mejoras en el planificador de procesos de Linux en la versión 2.6.0 Mejoras en el planificador de procesos de Linux en la versión 2.6.0 Linux 2.6.0 he hecho mejoras significativas en el planificador de procesos en la versión 2.6.0. No solamente los procesos son planificados

Más detalles

Programación : C (3)

Programación : C (3) Programación : C (3) Dr. J.B. Hayet CENTRO DE INVESTIGACIÓN EN MATEMÁTICAS Agosto 2013 J.B. Hayet Programación Agosto 2013 1 / 45 Outline 1 Modificadores de tipos variables 2 Arreglos 3 Tipos compuestos

Más detalles

Informática I para Bachillerato

Informática I para Bachillerato CIMAT C/C++ Cadenas de caracteres, I/O. CIMAT Sesión 14 Recordatorio de Cadenas A diferencia de otros lenguajes de programación que emplean un tipo denominado cadena string para manipular un conjunto de

Más detalles

Preparación y Adaptación de Códigos Científicos para su Ejecución Paralela TICAL 2018

Preparación y Adaptación de Códigos Científicos para su Ejecución Paralela TICAL 2018 Preparación y Adaptación de Códigos Científicos para su Ejecución Paralela TICAL 2018 Gilberto Díaz gilberto.diaz@uis.edu.co Universidad Industrial de Santander Centro de Súper Computación y Cálculo Científico

Más detalles

Entrada/Salida. Alexis Tcach. Sistemas Operativos, 1c DC - FCEyN - UBA

Entrada/Salida. Alexis Tcach. Sistemas Operativos, 1c DC - FCEyN - UBA DC - FCEyN - UBA Sistemas Operativos, 1c-2016 Menú del día Menú del día Recordar que es un device driver Recordar tipos de device drivers Programación básica (pseudocódigo). Más real en el taller Recordando

Más detalles

Tema 1: Introducción a las Computadores y Lenguajes de. Programa

Tema 1: Introducción a las Computadores y Lenguajes de. Programa Tema 1: Introducción a las Computadores y Lenguajes de programación: Paradigmas de la programación. Programa Arquitectura del Computador Input Células de memoria Información (words) Dirección Output w

Más detalles

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos Contenido Introducción...1 Objeto...2 Atributo...2 Métodos...2 Clase...3

Más detalles

José Luis Alonzo Velázquez

José Luis Alonzo Velázquez UG Introducción Universidad de Guanajuato Temario Sobre la clase: Preguntas Sobre la clase: Tareas Objetivo del Curso Inicio de curso Temario: 1 Introducción a la Programación 1 Karel el Robot El robot

Más detalles

Hilos. Hilos. Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux

Hilos. Hilos. Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux Hilos Hilos Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux 1 Objetivos Introducir la noción de hilo una unidad fundamental de la utilización

Más detalles

Introducción a la programación

Introducción a la programación Introducción a la programación PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Introducción 1 Introducción a la programación Computador: aparato electrónico capaz de interpretar

Más detalles

La secuencia de referencias a páginas para el proceso B es:

La secuencia de referencias a páginas para el proceso B es: SISTEMAS OPERATIVOS (Código: 71902048) Enero 2017 Material permitido: Solo calculadora no programable Tiempo: 2 horas N1 Aviso 1: Todas las respuestas deben estar debidamente razonadas. Aviso 2: Escriba

Más detalles

Universidad Autónoma de Sinaloa Facultad de Informática Culiacán Maestría en Ciencias de la Información

Universidad Autónoma de Sinaloa Facultad de Informática Culiacán Maestría en Ciencias de la Información Universidad Autónoma de Sinaloa Facultad de Informática Culiacán Maestría en Ciencias de la Información Curso Propedéutico Introducción al Lenguaje C MC. Diego Alonso Gastélum Chavira Junio-2011 Historia

Más detalles

UNIDAD II. Software del Computador. Ing. Yesika Medina Ing. Yesika Medina

UNIDAD II. Software del Computador. Ing. Yesika Medina Ing. Yesika Medina UNIDAD II Software del Computador SOFTWARE Se denomina software a todos los componentes intangibles de una computadora, formados por el conjunto de programas y procedimientos necesarios para hacer posible

Más detalles

Procesamiento Paralelo

Procesamiento Paralelo Procesamiento Paralelo Arquitecturas de Computadoras Paralelas Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina jiparraguirre@frbb.utn.edu.ar

Más detalles

Clases 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 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 detalles

Capitulo 3. Remote Method Invocation: RMI

Capitulo 3. Remote Method Invocation: RMI Capitulo 3 Remote Method Invocation: RMI En este capitulo mencionamos los aspectos principales de RMI, capas y componentes, entre otras características. 3. Remote Method Invocation (RMI) Los sistemas distribuidos

Más detalles

LABORATORIO DE GESTIÓN DE REDES (I)

LABORATORIO DE GESTIÓN DE REDES (I) UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE GESTIÓN DE REDES (I) 1. PRESENTACIÓN El laboratorio de Gestión de Redes constará de un conjunto de prácticas

Más detalles

CÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS

CÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS CÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS Leopoldo N. Gaxiola, Juan J. Tapia Centro de Investigación y Desarrollo de Tecnología Digital Instituto Politécnico Nacional Avenida

Más detalles

Sistemas Distribuidos. Soporte de Sistemas Operativos

Sistemas Distribuidos. Soporte de Sistemas Operativos Soporte de Sistemas Operativos Soporte de Sistemas Operativos Soporte de Sistemas Operativos Soporte de Sistemas Operativos Tareas principales de un SO: Administrar recursos Proveer abstracciones de los

Más detalles

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación.

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación. Capitulo 3 Introducción a las aplicaciones de C# Resumen: Item using System; espacios de nombres: Las palabras clave estilo de mayúsculas/minúsculas Pascal public class Bienvenido1 Definición Es una directiva

Más detalles

Java 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 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 detalles

ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda

ENTRADA-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 detalles

Scientific Programming with Python

Scientific Programming with Python Scientific Programming with Python Felipe Zapata Reactivity and Molecular Structure Group of the University of Alcala 9 de marzo, 2011 Contenido Porque que programar? Introducción a Python Características

Más detalles

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos. Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es

Más detalles

Sistemas Operativos. Daniel Rúa Madrid

Sistemas Operativos. Daniel Rúa Madrid Sistemas Operativos Daniel Rúa Madrid Qué es? Es un programa que administra el hardware de una computadora. También proporciona las bases para los programas de aplicación y actúa como intermediario entre

Más detalles

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi Concurrencia, exclusión mutua y sincronización Capítulo 5 HungriaBerbesi 1 Concurrencia Múltiples aplicaciones Aplicaciones estructuradas Estructura del sistema operativo 2 Concurrencia 3 Sección Crítica:

Más detalles

Procesos e hilos: el downloader

Procesos e hilos: el downloader Departamento de Automática 1 / 8 Descarga de archivos con procesos en paralelo Objetivo principal: descarga de un archivo de gran tamaño de forma eficiente desde Internet Otros objetivos: Utilizar la biblioteca

Más detalles

Diseño Computarizado 15023

Diseño Computarizado 15023 Diseño Computarizado 15023 PROGRAMACIÓN: FORTRAN Profesor: Claudio García Herrera Departamento de Ingeniería Mecánica Universidad de Santiago de Chile Índice 1 Introducción 2 Estructura 3 Sentencias y

Más detalles

Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Hilos Módulo 4 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Chapter 4: Threads Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de

Más detalles

Facultad de Ingeniería Industrial y de Sistemas v1.1 MA781U CONCEPTOS INICIALES CASOS DE USO

Facultad de Ingeniería Industrial y de Sistemas v1.1 MA781U CONCEPTOS INICIALES CASOS DE USO CONCEPTOS INICIALES CASOS DE USO Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Se presenta el analisis funcional basico del sistema operativo desarrollado en RationalRose. I. PAQUETES

Más detalles