Threads. Hilos - Lightweight process - Procesos ligeros

Documentos relacionados
Taller de pthreads. Sistemas Operativos. Verano de 2009

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad

SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos

Hilos (threads) Realizado por M. Curiel

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

PROCESOS E HILOS - Hilo

Hilos Secciones Stallings:

Sistemas Complejos en Máquinas Paralelas

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

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Analista Universitario en Sistemas. Sistemas Operativos. Instituto Politécnico Superior THREADS

HILOS POSIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011

Introducción a Sistemas Operativos: Concurrencia

Informática Electrónica Concurrencia

Sistemas Operativos. Procesos

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

Programación de Multitareas utilizando Hilos

Biblioteca de sistema

Arquitectura de Sistemas

Es una API (Aplication Program Interface) que se usa para paralelismo basado en hilos múltiples en entornos de memoria compartida

Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr

Boletín de ejercicios 2.2 Ejercicios sobre gestión básica de hilos

Arquitectura de Sistemas

Ejercicio Sockets Suma Resta. Descripción

Sistemas Operativos Práctica 3

Capítulo 4: Threads. n Modelos Multithreads. n Threads. n Pthreads. n Threads de Windows XP. n Threads de Linux. n Threads de Java

Fundamentos de los Sistemas Operativos. Tema 1. Conceptos generales Estructura del sistema operativo ULPGC - José Miguel Santos Espino

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX

El kernel forma parte del sistema operativo, para ser más claros es el núcleo, la parte más importante.

Sistemas Operativos Primer Recuperatorio Parcial 1

Prácticas de Sistemas operativos

Taller de Sistemas Operativos Introducción

Arquitecturas Paralelas MIMD

Proceso. Threads, SMP, and Microkernels. Multithreading. Proceso

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

PROGRAMACIÓN MULTITHREADING

Programación Concurrente

Sistemas Distribuidos. Soporte de Sistemas Operativos

Sistemas Operativos 1

Threads, SMP y Microkernels. Proceso

Sistemas operativos: una visión aplicada. Capítulo 3 Procesos

Fundamentos de los Sistemas Operativos

Arquitectura de Sistemas

PARTE II PROGRAMACION CON THREADS EN C

Primer control de teoría

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Desarrollo de servidores concurrentes

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

6. Enumere tres ventajas de los ULT frente a los KLT.

Cilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011

Sistemas Operativos sesión 12: tuberías

Bloque I: Principios de sistemas operativos

SISTEMAS OPERATIVOS - DEFINICIÓN:

TEMARIO. Créditos teóricos: 3 Créditos prácticos: 3. Lenguajes y Sistemas Informáticos Departamento: Lenguajes y Computación - PROGRAMA DE TEORÍA:

Bloque I: Principios de sistemas operativos

Sumario Prólogo Unidad didáctica 1. Introducción a los sistemas operativos Objetivos de la Unidad... 12

Entorno de programación de nivel 1: La librería PCAP

Procesos e Hilos en C

CONCEPTO. Actúa de intermediario entre el hardware y los programas de aplicación.

SISTEMAS OPERATIVOS:

Apellidos: Nombre: Matrícula: Examen Programación para Sistemas Grado en Ingeniería Informática (2009)

T5-multithreading. Indice

MC Hilda Castillo Zacatelco PROCESOS

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

Cuestionario 1-Parte 1

Segundo control de teoría Q1

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6

UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL TUCUMAN

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 5

LA PILA DE EJECUCIÓN Y DEBBUGGING THREADS

ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Octubre 2015

SISTEMAS OPERATIVOS: PROCESOS. Señales

Nombre alumno: Ventajas: Inconvenientes:

Administración de procesos

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Parte I:Teoría. Tema 3:Introducción a los Sistemas operativos. Instalación

1 Primitivas básicas de OpenMP

Introducción a Sistemas Operativos: Ficheros

Sistemas Operativos. Curso 2016 Procesos

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña

SISTEMAS OPERATIVOS: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. Introducción y conceptos básicos

Sistemas Operativos Primer Parcial Tema2

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR GESTIÓN DE PROCESOS

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 10 junio de 2006

Laboratorio I Java Threads (Silberschatz Galvin)

Plataformas de Tiempo Real

Herramientas Visuales de Compilación en C. LUIS MENGUAL (c)

Programación Concurrente Recopilación de teoría referente a la materia

Introducción a la librería de desarrollo librawnet

Prácticas de Sistemas operativos

Un ejemplo: UNIX PROCESOS UNIX

Primer control de teoría

S. empotrados y ubicuos

Sistemas operativos Tema 3: Estructura del sistema operativo

Transcripción:

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 / En el núcleo Ventajas y Desventajas Problemas generales de los Hilos 2

Concepto Los threads comparten el espacio de direcciones del proceso 3

Ganancia Si un hilo se bloquea para lanzar E/S el SO puede elegir otro hilo del mismo proceso para continuar ejecutando. Esto provoca una ganancia en cuanto al cambio de contexto (Transición de dominio) ya que el vaciado de la cache es mucho menor entre hilos que entre procesos (por ejemplo, UNIX 1,8 milisegundos y en TOPAZ con hilos 0,4 milisegundos) El cambio de contexto de los registros también es menor ya que no es necesario cambiarlos a todos. 4

Elementos por hilos y por proceso Elemento PROCESO THREAD Espacio de direcciones Le pertenece Lo comparten Stack/Pila Le pertenece Cada hilo tiene propio Registros Le pertenecen Cada hilo tiene su propio conjunto Archivos abiertos Le pertenecen Los comparten Reloj Le pertenece Lo comparten Variables globales Le pertenecen Las comparten Hijos Procesos hijos Hilos hijos Estado Tiene propio Cada hilo tiene el suyo Protección entre Existe Usualmente no existe ya que cooperan entre sí Señales Le pertenecen Las comparten 5

Estructuras de implementación de hilos (1) Estructura Servidor-Trabajador Un hilo hace las funciones de servidor despachando los pedidos y los otros hilos de trabajadores Uso: servidor de archivos 6

Estructuras de implementación de hilos (2) Estructura en Equipo Todos los hilos son iguales y toman los pedidos del buzón de entrada Uso: servidor de archivos 7

Estructuras de implementación de hilos (3) Estructura Pipeline Lo procesado por un hilo es input del siguiente hilo Uso: problemas de tipo Productor- Consumidor 8

Un ejemplo de implementación de threads 9

Threads (Sin Con conocimiento del SO) Lighweight Process 10

Reconocimiento de Threads Pero no todos los sistemas operativos reconocen la existencia de threads. Los que los reconocen los implementan en el núcleo - Implementación en el kernel (ej: Windows XP/2000, OS/2, Solaris, MACH, CHORUS, Linux, Tru64 UNIX, Mac OS X) Para aquellos que no los reconocen se pueden implementar threads a nivel del espacio de direcciones del proceso - Implementación en el espacio del usuario (ej: UNIX) 11

12

Implementación en el espacio del usuario Dentro del espacio del usuario existe un Sistema de Tiempo de Ejecución (STE) que se encarga de administrar los hilos del proceso. El STE se encarga de interceptar las llamadas bloqueantes de los hilos (por ej: lanzamiento de E/S) y también realiza el intercambio del procesador entre los hilos (planificación - scheduling) 13

Implementación en el espacio del usuario Ventajas y desventajas - Si un hilo se bloquea para E/S bloquearía a todo el proceso, para solucionarlo se implementan Jackets (implica reescribir parte de las rutinas de la biblioteca de llamadas al sistema) - Cada proceso puede tener una planificación de threads diferente - El reloj es único al proceso y por ende una interrupción por reloj bloquea a TODO el proceso y sus threads - No puede aprovechar la ganancia del multithreading si se implementa en un sistema multiprocesador 14

Implementación en el espacio del usuario Ventajas y desventajas (continuación) - Una interrupción por falla de página (el thread necesita cargar más código en memoria) bloquea a todo el proceso - El intercambio de contexto entre hilos es de una magnitud menor que en la implementación a nivel del kernel - Todas las llamadas al sistema pasan por el STE - Es más escalable que la implementación a nivel del kernel ya que toda la información de administración reside en el espacio del usuario 15

Implementación en el núcleo El sistema operativo reconoce los threads. Ventajas y Desventajas: - El intercambio de contexto tiene un mayor costo que en la implementación a nivel del usuario - Requiere de mayor espacio en el núcleo para las tablas y la pila de los hilos => No es tan escalable - Todas las llamadas al sistema las maneja el núcleo y por lo tanto tiene un mayor costo para él - La planificación es uniforme para todos los hilos - Se puede planificar por reloj (quantums) - No es necesario el uso de jackets 16

Problemas generales de los hilos Las variables globales Pertenecen al proceso y por lo tanto si un hilo las usa y luego pierde el control esa variable puede corromperse por el uso de otro hilo. Soluciones: - Prohibir su uso o - diseñar variables globales propias de cada hilo (algunos lenguajes no lo permiten) o - reescribir los procedimientos de biblioteca para poder manejarlas 17

Problemas generales de los hilos Las Señales Dos hilos pueden desear capturar una señal de teclado para realizar acciones distintas. Ya es difícil su manejo en ambientes monothreading y en multithreading el tema se complica aún más. Solución: - Dedicar un solo hilo para realizar esta función 18

Crear procesos main (){ int a; int ruti(); for (a=0,a<1500;a++){ if (fork()==0) {ruti(); exit(0);} } } ruti() { int b=0; b++; } 19

Crear threads (LWP) main (){ int a; thread_t cualid; int resu; int satus;int ruti(); for (a=0,a<1500;a++){ thr_create(null,null,ruti,null,thr_new_lpw,&cualid ;} } ruti() { int resu; int b; b++; thr_exit(&resu); } 20

Estándar POSIX 21

Pthread Ejemplo #include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NUM_THREADS 5 void *ImprimirHola(void *threadid) { int tid; tid = (int)threadid; printf("hola Mundo! Soy el thread #%d!\n", tid); pthread_exit(null); } 22

Pthread Ejemplo int main(int argc, char *argv[]) { pthread_t threads[num_threads]; int rc, t; for(t=0;t<num_threads;t++){ printf("in main: creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, ImprimirHola, (void *)t); if (rc){ printf("error; No se pudo crear thread nro %d\n", rc); exit(-1); } } pthread_exit(null); } 23