Curso LINUX. AREA 1: Entornos de programación
|
|
|
- Daniel Hidalgo Cuenca
- hace 9 años
- Vistas:
Transcripción
1 Curso LINUX AREA 1: Entornos de programación
2 Entornos de programación Unix / Linux dispone de todas las herramientas necesarias como línea de comando Pero también dispone de entornos integrados Son front-ends a los comandos que ya vimos La elección de IDE es un tema importante al plantear el desarrollo
3 Elección de un IDE Un IDE debe elegirse en base a estos parámetros: Soporte para el lenguaje que utilicemos Facilidades para la generación de código Facilidades para la integración con el entorno de versionado Compatibilidad con otras herramientas Sencillez de uso
4 IDEs linux (C/C++) emacs (si, no es broma) Anjuta Kdevelop Eclipse CDT Code Dragon Geany... y muchos más
5 No existe el IDE ideal Cada IDE se ha desarrollado inicialmente para una cosa Los IDEs suelen ampliarse para converger La evolución propia de cada IDE hace que sea más o menos atractivo en un momento dado Las constumbres de los programadores también influyen en la adopción de un IDE u otro
6 Anjuta es un IDE para C/C++ y otros lenguajes en Linux. Se ha desarrollado para Gtk/Gnome Incluye facilidades para gestión de proyecto, wizards y depuración Tiene un editor de código con sourcebrowsing y reconocimiento de sintaxis.
7 Anjuta - Versiones La versión estable para muchas distribuciones es la 1.2.X Las versiones 2.X aportan muchas novedades, pero no está incluida en todas las distribuciones El desarrollo es muy activo por lo que se preven nuevas versiones en poco tiempo.
8 Anjuta Nuevo proyecto
9 Anjuta - Nuevo proyecto (2)
10 Anjuta Nuevo Proyecto (3)
11 Anjuta Nuevo proyecto (4)
12 Anjuta Nuevo proyecto (5)
13 Anjuta Nuevo proyecto (6)
14 Anjuta Nuevo proyecto (7)
15 Anjuta - Entorno
16 Anjuta - Autoconf Anjuta se encarga de preparar todo para el autoconf ~/Projects/HolaMundo$ ls acconfig.h config.h.in acinclude.m4 config.log aclocal.m4 config.status AUTHORS config.sub autogen.sh configure autom4te.cache configure.in ChangeLog COPYING config.guess HolaMundo.prj config.h HolaMundo.prj.bak HolaMundo.pws INSTALL install sh libtool ltmain.sh Makefile Makefile.am Makefile.in missing mkinstalldirs NEWS po README setup gettext src stamp h stamp h.in TODO
17 Anjuta Class Builder
18 Anjuta Visor Simbolos
19 Anjuta - Compilación
20 Anjuta - Construcción
21 Anjuta - Depuración Permite puntos de ruptura Ejecución paso a paso Permite inspeccionar variables y evaluar expresiones
22 Anjuta GTK Anjuta dispone de una integración con el generador de interfaces glade El generador es invocado en el momento que seleccionamos Proyecto ->Editar GUI de la aplicación
23 Anjuta Ejemplo GTK
24 Anjuta Ejemplo GTK (2)
25 Anjuta Ejemplo GTK (3)
26 Anjuta Ejemplo GTK (4) Creamos una tabla 2x2
27 Anjuta Ejemplo GTK (5) Creamos 2 botones, un label y un entry BT_OK, BT_EXIT, label y ENTRY Propiedad de la ventana homogeneus = si
28 Anjuta Ejemplo GTK (6) Por cada botón añadimos una señal para clicked (on_bt_ok_clicked, on_bt_cancel_clicked) Guardar Construir Salir
29 Anjuta Ejemplo GTK (7) Editar callbacks.c void on_bt_cancel_clicked (GtkButton gpointer { gtk_main_quit(); } void on_bt_ok_clicked (GtkButton gpointer *button, user_data) *button, user_data) { GtkWidget *entry = lookup_widget (GTK_WIDGET(button), "ENTRY"); gchar *text1; text1 = gtk_entry_get_text (GTK_ENTRY(entry)); GtkWidget *msgbox = gtk_message_dialog_new( NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,"Hola %s",text1); gtk_widget_show_all (msgbox); }
30 Anjuta Ejemplo GTK (8) Guardar Construir -> Construir todo Construir -> Ejecutar
31 Anjuta - Conclusiones Buen editor para C / C++ / GTK Integración con glade para interfaces Integración con autoconf / autotools Integración con CVS Depuración integrada Asistente para expresiones / funciones / métodos Integración con ayuda devhelp
32 Kdevelop es el entorno más completo de desarrollo genérico de linux Surgió en 1998 para crear un entorno de desarrollo sencillo para KDE KDE está basado en QT, por eso Kdevelop integró primero esas librerías Actualmente soporta hasta 12 lenguajes distintos (inc. C, C++, PHP, Ruby, Java, etc.)
33 Kdevelop - Versiones Versión estable KDE >= 3.4, < 4 Qt >= 3.3, < Versión en desarrollo 4.0 KDE >= 4 QT >= 4 Sin fecha de lanzamiento
34 Kdevelop Nuevo Proyecto
35 Kdevelop Nuevo proyecto (2)
36 Kdevelop Nuevo proyecto (3) Permite elegir el sistema de control de versiones CVS SVN... Permite elegir plantillas para la construcción de los archivos fuente
37 Kdevelop - Entorno
38 Kdevelop - Autoconf
39 Kdevelop Class builder Project New Class
40 Kdevelop Visor clases
41 Kdevelop - Construcción Permite compilar selectivamente Indica errores de sintaxis diréctamente sin compilar Permite invocar el configure Permite invocar las autotools Permite instalar el programa Permite generar la documentación (formato doxygen)
42 Kdevelop - depuración Permite puntos de ruptura Permite depuración paso a paso Permite añadir watches y evaluar expresiones Permite unirse a un proceso en marcha Resultados por ventana del editor Inspección de memoria Uso de valgrind y Kcachegrid para profiling
43 Kdevelop - Gráfico Para su integración con QT incrusta el QTdesigner como parte de su UI Permite crear e importar proyectos gtk Pero la integración con glade es muy pobre (hay que salir del entorno para editar con glade).
44 Kdevelop - Ayuda Ayuda muy completa Fácil de localizar en la barra lateral Ampliable con más paquetes Permite búsquedas e incluir marcas
45 Kdevelop - Conclusiones El mejor IDE para desarrollar en KDE Un buen editor C/C++ y otros lenguajes Buena integración con QT Más sistemas de control de versiones Integración con autoconf / autotools Depuración integrada mejorada Integración con profilers Ayuda integrada
46 Eclipse CDT Eclipse es un entorno de programación diseñado en Java Permite plugins de todo tipo CDT significa C/C++ development tooling Consiste en una serie de plugins y editores para el lenguaje C/C++ Es multiplataforma (tantas como java) y tiene una comunidad muy amplia alrededor.
47 Eclipse CDT - Versiones Versión actual / 11 / 2007 Eclipse 3.3 Parte de eclipse europa CDT / 2 /2007 Eclipse 3.2 Parte de eclipse callisto
48 Eclipse CDT Nuevo proyecto
49 Eclipse CDT Nuevo proyecto
50 Eclipse CDT Nuevo proyecto
51 Eclipse CDT Entorno
52 Eclipse CDT Class Builder
53 Eclipse CDT Visor de clases
54 Eclipse CDT asistente código
55 Eclipse CDT - Construcción No usa autoconf Sistema compatible con visual studio o con makefile Permite generar tantas configuraciones como necesitemos (Debug, Release, etc.) Intenta ser portable a más plataformas
56 Eclipse CDT - Depuración
57 Eclipse CDT - Ayuda Ayuda contextual Ayuda externa (configurable)
58 Eclipse CDT - Conclusiones Muy buen entorno multilenguaje Editor de código muy depurado Multiplataforma Pobre integración con autoconf Futura integración con QT, actualmente no se integra con ningún sistema gráfico
59 Curso LINUX AREA 1: Multitarea - multihilo
60 Multitarea Multitarea es un método donde varios procesos comparten recursos del ordenador Estrategias de multitarea: Multiprogramming Tiempo compartido cooperativo Tiempo compartido preferente (preemptive) Real
61 Linux Multitasking Una tarea en linux puede estar en uno de estos estados: TASK_RUNNING TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE TASK_ZOMBIE TASK_STOPPED
62 Transición de estados CPU disponible RUNNING REAL RUNNING CPU ocupada Esperando Recurso INTERRUMPIBLE / NO INTERRUMPIBLE Recurso Disponible
63 Partición de tiempo En Linux, las timeslice suelen ser de 10ms Cada timeslice se genera una interrupción IRQ0 Se interrumpe la ejecución del proceso en marcha y se realizan operaciones internas El Scheduler (planificador) es el encargado de decidir que tarea se ejecutará la próxima vez.
64 Task Switching El intercambio de tareas es necesario cuando: Termina el timeslice y necesitamos dar acceso a otra tarea Cuando una tarea decide acceder a un recurso y se queda en espera, hay que dar paso a otra Cuando una tarea espera en una tubería (pipe) hay que dar paso a otra que podría escribir en el pipe.
65 FORK Cuando se necesita crear una tarea nueva, se utiliza fork fork copia todos los datos del proceso padre con las siguientes diferencias: EL PID (identificador de proceso) el resultado de la función fork es 0 en el hijo y PID en el padre Las páginas de datos del hijo se copian en solo lectura
66 Procesos en linux Podemos observar los procesos con el comando ps Podemos ver el estado de ejecución general de la máquina con el comado top Podemos enviar señales a los procesos con el comando kill Si un proceso no puede tratar una señal, simplemente muere (de ahí el nombrecito)
67 ps ps muestra información sobre los procesos en ejecución ps : muestra solo los procesos del usuario ps ax : muestra todos los procesos ps axjf : muestra los árboles de proceso Existen múltiples opciones (man ps)
68 ps axu
69 ps : Códigos de estado D Uninterruptible sleep (usually IO) R Running or runnable (on run queue) S Interruptible sleep (waiting for an event to complete) T Stopped, either by a job control signal or because it is being traced. W paging (not valid since the 2.6.xx kernel) X dead (should never be seen) Z Defunct ("zombie") process, terminated but not reaped by its parent.
70 top
71 Práctica Crear un programa en c que: Cree un proceso hijo El proceso hijo se quede en un bucle infinito o duerma durante cierto tiempo El proceso padre volverá a lanzar al hijo si detecta que este ha muerto. (wait o waitpid) Monitorizar el proceso con ps Matar el proceso hijo (kill -9) y observar cómo se levanta
72 Threads El intercambio de procesos conlleva una carga pesada al tener que realizar un cambio de contexto de todos los datos del proceso que abandona y el nuevo Los threads (hilos) son elementos de ejecución independiente con datos compartidos, que, por tanto, no requieren de un cambio de contexto completo.
73 Multithreading El modelo de ejecución multihilo permite a varios hilos existir dentro del mismo contexto de un único proceso. Los hilos comparten todos los recursos del proceso en el que existen Esto permite, entre otras cosas, permitir paralelismo dentro de un único proceso.
74 Implementaciones de hilos Light weight kernel threads (BSD) POSIX Threads (pthreads) Apple Multiprocessing Services GNU portable Threads (GNU Pth) Windows Threads
75 Programación de hilos Librería pthread #include <pthread.h> int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg); int pthread_join(pthread_t thread, void **value_ptr); pthread_t pthread_self(void); compilar con lpthread
76 #include <stdio.h> #include <stdlib.h> #include <pthread.h> Ejemplo void *print_message_function( void *ptr ); main() { pthread_t thread1, thread2; char *message1 = "Thread 1"; char *message2 = "Thread 2"; int iret1, iret2; iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1); iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2); pthread_join( thread1, NULL); pthread_join( thread2, NULL); } printf("thread 1 returns: %d\n",iret1); printf("thread 2 returns: %d\n",iret2); exit(0); void *print_message_function( void *ptr ) { char *message; message = (char *) ptr; printf("%s \n", message);
77 Ejemplo práctico Crear un programa que lance 3 threads con funciones que impriman cosas distintas
78 Sincronización de threads Mutex Join Variables de condición
79 Mutex Creados para evitar condiciones de carrera e interbloqueos Sirven para proteger el acceso a elementos compartidos Funciones: int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex);
80 Efecto de un mutex
81 Joins Un join se ejecuta cuando se quiere esperar que un thread termine. Una rutina puede lanzar múltiples threads y esperar que terminen para obtener los resultados. Se espera que los threads terminen mediante un join. Similar al wait o waitpid de los fork
82 Ejemplo Crear un programa que lance 3 threads, que cada uno espere un tiempo aleatorio, imprima un mensaje y termine El programa principal deberá esperar hasta que terminen todos e imprimir un mensaje
83 Variables de condición Tipo pthread_cond_t Se usan con las funciones adecuadas para esperar y continuar Se permite a los threads suspender la ejecución y renunciar a la CPU hasta que se de una condición. Siempre asociadas a mutex para evitar interbloqueos
84 Funciones Crear / Destruir pthread_cond_init pthread_cond_t cond = PTHREAD_COND_INITIALIZER; pthread_cond_destroy Esperar una condición: pthread_cond_wait pthread_cond_timedwait Despertar threads pthread_cond_signal pthread_cond_broadcast
85 Ejemplo void *functioncount1() { for(;;) { pthread_mutex_lock( &condition_mutex ); while( count >= COUNT_HALT1 && count <= COUNT_HALT2 ) { pthread_cond_wait( &condition_cond, &condition_mutex ); } pthread_mutex_unlock( &condition_mutex ); pthread_mutex_lock( &count_mutex ); count++; printf("contador functioncount1: %d\n",count); pthread_mutex_unlock( &count_mutex ); if(count >= COUNT_DONE) return(null); } }
86 Ejemplo (2) void *functioncount2() { for(;;) { pthread_mutex_lock( &condition_mutex ); if( count < COUNT_HALT1 count > COUNT_HALT2 ) { pthread_cond_signal( &condition_cond ); } pthread_mutex_unlock( &condition_mutex ); pthread_mutex_lock( &count_mutex ); count++; printf("contador functioncount2: %d\n",count); pthread_mutex_unlock( &count_mutex ); if(count >= COUNT_DONE) return(null); }
87 Ejemplo (3) int count = 0; #define COUNT_DONE 10 #define COUNT_HALT1 3 #define COUNT_HALT2 6 main() { pthread_t thread1, thread2; pthread_create( &thread1, NULL, &functioncount1, NULL); pthread_create( &thread2, NULL, &functioncount2, NULL); pthread_join( thread1, NULL); pthread_join( thread2, NULL); exit(0); }
88 Qué saldría por pantalla?
89 Referencias PosixThreads.html
Fundamentos de los Sistemas Operativos
Práctica 3 : hilos! Fundamentos de los Sistemas Operativos Grado en Ingeniería Informática Rubén García Rodríguez Alexis Quesada Arencibia Eduardo Rodríguez Barrera Francisco J. Santana Pérez José Miguel
Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr
Introducción al concepto de threads Dr.. Roberto Gómez Cárdenas DCC del ITESM-CEM [email protected] http://homepage.cem.itesm.mx/rogomez Función monitoreo descriptor archivo #include #include
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.
Taller de pthreads. Sistemas Operativos. Verano de 2009
Verano de 2009 Menú del día Hoy veremos: Introducción a pthreads Creación de threads Variables mutex Variables de condición Tutoriales de HPC Lawrence Livermore National Laboratory (http://www.llnl.gov)
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
Sincronización de Threads
Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)
Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana
Fundamentos de los Sistemas Operativos Tema 2. Procesos 1998-2015 José Miguel Santos Alexis Quesada Francisco Santana Contenidos del Tema 2 Qué es un proceso Estructuras de datos para gestionar procesos
T5-multithreading. Indice
T5-multithreading 1.1 Indice Proceso vs. Flujos Librerías de flujos Comunicación mediante memoria compartida Condición de carrera Sección Crítica Acceso en exclusión mutua Problemas Abrazos mortales 1.2
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 4. Gestión del Tiempo Tema 5.
HILOS POSIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011
HILOS POSIX LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011 Librería #include HILOS POSIX Función que se comportará como hilo: void * mihilo(void *arg)
Procesos e hilos: cálculo de
Departamento de Automática 1 / 10 Índice Creación y sincronización de hilos Acceso a variables globales en exclusión mutua 2 / 10 Objetivo principal: obtener una aproximación al valor de empleando el método
Guillermo Román Díez
Concurrencia Creación de Procesos en Java Guillermo Román Díez [email protected] Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia
Threads. Hilos - Lightweight process - Procesos ligeros
Threads Hilos - Lightweight process - Procesos ligeros 1 Temario Concepto y Beneficios Estructuras de implementación: Servidor- Trabajador, Equipo, Pipeline Reconocimiento: En el espacio del usuario /
Hilos (threads) Realizado por M. Curiel
Hilos (threads) Realizado por M. Curiel Definiciones Un proceso es una entidad que posee 2 características importantes: - Recursos: un espacio de direcciones (programas, datos, pila y un PCB), archivos,
Sistemas Operativos Práctica 3
Sistemas Operativos Práctica 3 Ing. Andrés Bustamante [email protected] Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
Lenguaje de Programación
Introducción a C/C++() UG Introducción a C/C++() Universidad de Guanajuato Sesión 18 Introducción a C/C++() Qué es un? Un entorno de desarrollo integrado o (acrónimo en inglés de integrated development
Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX
Concurrencia en UNIX / LINUX Introducción: Procesos e Hilos POSIX El estándar POSIX POSIX: Interfaz de sistemas operativos portables. Basado en UNIX A pesar de que UNIX es ya de por sí estándar, había
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.
Entorno de programación de nivel 1: La librería PCAP
Entorno de programación de nivel 1: La librería PCAP La librería libpcap nos permite capturar paquetes desde un programa C. En sistemas Windows, la librería se llama Winpcap. Para compilar cualquier programa
Sistemas Operativos 1
Ejercicio 1. Se desea implementar una aplicación de n procesos concurrentes, donde cada proceso ejecuta una determinada tarea en forma de pipeline. Un ejemplo de esta aplicación con n=4 sería la siguiente:
Arquitecturas 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?
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
Laboratorio 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
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 10 junio de 2006
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 10 junio de 2006 Para la realización del presente examen se dispondrá de 2 horas
Sincronización de Hilos POSIX
Sincronización de Hilos POSIX Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Problemática Ejemplo: el problema del productor/consumidor (o del buffer acotado ) Existen
Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos
Hilos Módulo 4 Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco Hilos Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos
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
Biblioteca 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
El entorno de desarrollo eclipse 3.0.1
escuela técnica superior de ingeniería informática El entorno de desarrollo eclipse 3.0.1 Departamento de Lenguajes y Sistemas Informáticos Ingeniería del Software de Gestión III Índice Introducción Perspectiva
Procesos 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).
Introducción a Android. [Tema 2]
Introducción a Android [Tema 2] 1. Android 1 / 24 2 / 24 Android Android es un sistema operativo diseñado principalmente para teléfonos inteligentes (Smatphones); fue creado inicialmente por Android Inc.
Introducción a Sistemas Operativos: Concurrencia
Introducción a Sistemas Operativos: Concurrencia Clips xxx Fr ancisco J Ballesteros 1. Semáforos Quizá la abstracción más conocida para sincronizar procesos en programación concurrente controlar el acceso
Clases 04 y 05: Repaso de programación de sistemas basados en UNIX
Clases 04 y 05: Repaso de programación de sistemas basados en UNIX Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco [email protected] Estructuras de datos (Prof.
Concurrencia. Primitivas IPC con bloqueo
Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región
PROGRAMACIÓN MULTITHREADING
ECAR 2012 PROGRAMACIÓN MULTITHREADING 1 PROGRAMACIÓN BÁSICA PROGRAMACIÓN MULTITHREADING Sergio Nesmachnow ([email protected]) Gerardo Ares ([email protected]) Escuela de Computación de Alto Rendimiento
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
Hilos de ejecución POSIX
Hilos de ejecución POSIX Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Hilos de ejecución Concepto Un proceso convencional se caracteriza por: Ser
SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Desarrollo de servidores concurrentes
SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS Desarrollo de servidores concurrentes Contenido 2 Servidores de peticiones. Solución basada en procesos. Solución basada en hilos bajo
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
EL LENGUAJE C. INTRODUCCIÓN y AMBIENTES.
FUNDAMENTOS DE PROGRAMACIÓN EL LENGUAJE C. INTRODUCCIÓN y AMBIENTES. Fundamentos de Programación. Página 0 de 16 Historia. C es un lenguaje de programación de alto nivel y de propósito general que fue
Desarrollo de aplicaciones para dispositivos móviles (5)
1 Desarrollo de aplicaciones para dispositivos móviles (5) M.C. Ana Cristina Palacios García 3 Kernel de Linux: Incluye drivers del hardware, manejo de procesos y de memoria, seguridad, red y manejo de
autotools: Herramientas para la creación de proyectos Open Source
autotools: Herramientas para la creación de proyectos Open Source Germán Poo Caamaño Universidad del Bío Bío GNOME Foundation de septiembre de 004 Resumen Este trabajo
SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos
SISTEMAS OPERATIVOS: PROCESOS Hilos y Procesos ADVERTENCIA 2 Este material es un simple guión de la clase: no son los apuntes de la asignatura. El conocimiento exclusivo de este material no garantiza que
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
Teoría. Procesos. Escuela Politécnica Superior Universidad Autónoma de Madrid 1
Grupos Realización Entrega/Evaluación Lunes 22 de Febrero, 1, 8, 15 de Marzo 22 de Marzo Martes 23 de Febrero, 2, 9 y 16 de Marzo 23 de Marzo Miércoles 24 de Febrero, 3, 10 y 17 de Marzo 24 de Marzo Viernes
Tutorial Básico Cmake en Linux
Tutorial Básico Cmake en Linux Esta guía está pensada para gente que no tiene ningún conocimiento previo del proceso de compilación de C++ y Cmake en Linux. Existen varios manuales en internet y documentación
Guía práctica de estudio 12: Hilos
: Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 12: Objetivo: Implementar el concepto de multitarea utilizando
Threads en Linux. Definición de thread. Thread implementado en Linux. Creando un thread en Linux. Ing. Marcelo Doallo Threads en Linux 1/9
Threads en Linux Definición de thread Es un mecanismo por el cual un programa puede hacer mas de una cosa al mismo tiempo. Como los procesos, los threads parecen correr simultáneamente; pero hay que tener
Funciones POSIX (I): Introducción
Funciones POSIX I Funciones POSIX I Llamadas al Llamadas al Sistema Sistema Gestión Básica Gestión Básica de Procesos de Procesos Procesos Procesos fork fork Señales Señales getpid getpid Memoria Memoria
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
PRÁCTICAS DE LINUX. procesador. Objetivo Educacional. 2.1 Concepto de proceso. 2.2 Estados y transiciones de los procesos
PRÁCTICAS DE LINUX UNIDAD No. 2 Administración de procesos y del procesador Objetivo Educacional Comprender la administración de los procesos de los sistemas operativos. 2.1 Concepto de proceso 2.2 Estados
Informática I Threads
Informática I Threads 28 de Setiembre 2010 1 Concepto de programación paralela. 2. 3 Concurrencia => Race Conditions. 4. 5 Funciones Concepto de Programación Paralela Computación paralela Técnica de programación
Concurrencia Monitores. Guillermo Román Díez
Concurrencia Monitores Guillermo Román Díez [email protected] Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de
OBJETIVOS ÍNDICE MÓDULO 1: VISUAL BASIC 6.0 PARTE 1ª
OBJETIVOS El objetivo de este curso es realizar sencillas tareas en Visual Basic y usar los elementos necesarios para avanzar en la programación de Visual Basic, estudiando las nuevas tecnologías de programación
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
Universidad Nacional del Nordeste. IBM WebSphere Studio Application Developer (WSAD)
Universidad Nacional del Nordeste IBM WebSphere Studio Application Developer (WSAD) Año o 2006 Multiplataforma Inicialmente, la Web ofrecía a una interactividad prácticamente nula (los usuarios se limitaban
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
Creación de Aplicaciones gráficas sencillas
Creación de Aplicaciones gráficas sencillas Pablo Barrera González [email protected] http://gsyc.info/~barrera Grupo de Usuarios de Linux http://gul.uc3m.es Por favor apaguen sus terminales de comunicación
Sistemas Operativos I Manual de prácticas
Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 4: Programación con hilos OBJETIVOS DE LA PRÁCTICA...2 ANTES DE EMPEZAR......2 PARTE 1: HOLA MUNDO CONCURRENTE...3
Hilos 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
Interfaz interfaz textual gráficos
I. Definición Programa que hace de intérprete entre la máquina y el usuario. Administración de los dispositivos (teclado, ratón, impresoras, ) Carga y ejecución de aplicaciones. Cada empresa Macintosh,
Prácticas de Sistemas Operativos
Prácticas de Sistemas Operativos GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 1 Práctica 1 Gestión de procesos y threads Objetivos: Practicar la gestión de procesos y threads concurrentes Desarrollar
Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores
Práctica 1: Intérprete de mandatos Introducción Desarrollo de un intérprete de mandatos (minishell) en UNIX/Linux en lenguaje C. Debe permitir: Ejecución de mandatos simples ls, cp, mv, rm, etc. Ejecución
índice MÓDULO 1: Introducción a Visual Basic 6.0 MÓDULO 2: Fundamentos de programación TEMA 1. Introducción a Visual Basic 6.0
MÓDULO 1: Introducción a Visual Basic 6.0 TEMA 1. Introducción a Visual Basic 6.0 1.1 Conceptos de programación...1-1 1.2 Introducción a Visual Basic...1-1 1.3 Iniciar una sesión de Visual Basic 6.0...1-2
Ficha técnica. Visual Basic 6.0
Visual Basic 6.0 Ficha técnica OBJETIVOS: Este curso tiene por objetivo dotar al alumno de la formación inicial necesaria para realizar sencillas aplicaciones en Visual Basic y de los elementos necesarios
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
Ejercicio 1. Teoría [2,5 puntos]:
ATENCIÓN: Dispone de 3 horas para realizar la prueba. Ejercicio 1. Teoría [2,5 puntos]: Pregunta 1. Cuándo entra un proceso en estado zombie? A.- Cuando muere su padre y él no ha terminado todavía. B.-
Funciones básicas del depurador
Funciones básicas del depurador Con frecuencia, los alumnos piensan que cuando su programa no tiene errores de compilación (está correctamente escrito) entonces ya es correcto. Muchas veces esto no es
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.
VISUAL BASIC 6.0. Objetivos: Contenidos. TEMA 1. Introducción a Visual Basic 6.0. Conceptos de Programación. Introducción a Visual Basic
VISUAL BASIC 6.0 Objetivos: Este curso tiene por objetivo dotar al alumno de la formación inicial necesaria para realizar sencillas aplicaciones en Visual Basic y de los elementos necesarios para avanzar
SISTEMAS OPERATIVOS:
SISTEMAS OPERATIVOS: Lección 8: Desarrollo de servidores concurrentes Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García Blas José Manuel Pérez Lobato Introducción
Laboratorio. Instalación de Visual Studio Community. Back To Basics Instalando Visual Studio Community. Versión: 1.0.
Laboratorio Instalación de Visual Studio Community Versión: 1.0.0 Enero de 2016 Página 1 de 19 [email protected] http://ticapacitacion.com CONTENIDO INTRODUCCIÓN EJERCICIO 1: INSTALANDO VISUAL
