Upload
vanne-vazquez-loya
View
147
Download
6
Tags:
Embed Size (px)
Citation preview
Hilos
Capítulo 5
Silberschatz Galvin
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos2
Sistemas Operativos
Hilos
Concepto
Beneficios
Hilos a nivel kérnel y a nivel usuario
Modelos multihilos
Hilos de Solaris 2
Hilos de Java
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos3
Sistemas Operativos
Hilos
Un hilo (o proceso ligero) es una unidad básica de utilización del CPU; consiste de:
• Contador de programa
• Conjunto de registros
• Espacio de stack
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos4
Sistemas Operativos
Hilos
Un hilo comparte con sus hilos pares:
• Sección de código
• Sección de datos
• Recursos del sistema operativo
• En conjunto se les conoce como tarea
Un proceso tradicional o pesado, es igual a una tarea con un hilo.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos5
Sistemas Operativos
un procesoun hilo
varios procesosun hilo por proceso
varios procesosvarios hilos por proceso
un procesovarios hilos
Hilos y procesos
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos6
Sistemas Operativos
Código Datos Archivos Código Datos Archivos
Hilo Hilos
Mono-hilo Multi-hilo
Procesos con un solo hilo y con múltiples hilos
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos7
Sistemas Operativos
Bloque decontroldel hilo
Stackdel
usuario
Stackdel
usuario
Stackdel
kernel
Stackdel
Kernel
Espacio dedireccionesdel usuario
Espacio dedireccionesdel usuario
Bloque decontrol delproceso
Bloquede control
del proceso
Hilo
Modelo de procesode un solo hilo
Modelo de procesomultihilos
Bloque decontroldel hilo
Stackdel
usuario
Stackdel
kernel
Hilo
Bloque decontroldel hilo
Stackdel
usuario
Stackdel
kernel
Hilo
Modelos de procesos de un solo hilo y de muchos hilos
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos8
Sistemas Operativos
Multihilo
Sistema operativo que mantiene varios hilos de ejecución dentro de un mismo proceso.
MS-DOS soporta un solo hilo.
UNIX soporta múltiples procesos de usuarios, pero sólo un hilo por proceso.
Windows 2000, Solaris, Linux, Mac OS, OS/2 soportan múltiples hilos.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos9
Sistemas Operativos
Hilos
En una tarea donde hay múltiples hilos, mientras un hilo servidor está bloqueado y esperando, otro hilo en la misma tarea puede ejecutarse.
• Cooperación de múltiples hilos en la misma tarea aumenta la tasa de trabajos por unidad tiempo y mejora el rendimiento.
• Aplicaciones que requieren compartir un buffer común (productor-consumidor) sacan provecho de la utilización de hilos.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos10
Sistemas Operativos
Hilos
Los hilos proveen un mecanismo que permiten a procesos secuenciales hacer llamadas bloqueantes mientras otros en paralelo ejecutan otras operaciones.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos11
Sistemas Operativos
Beneficios
Compartición de recursos
Economía
Utilización de arquitecturas de múltiples procesadores
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos12
Sistemas Operativos
Hilos a nivel usuario
El manejo de los hilos lo hace una librería de hilos a nivel usuario
Ejemplos
- Hilos POSIX
- Mach C-threads
- Hilos de Solaris
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos13
Sistemas Operativos
Hilos a nivel usuario (un CPU con dos núcleos)
Nivel kérnel (sistema operativo)
Nivel usuarioProceso de usuario gestiona y
planifica los múltiples hilos
Core CoreCPU
Hardware
Planificador del SO
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos14
Sistemas Operativos
Ventajas de los hilos a nivel usuario
Los hilos podían implementarse en las aplicaciones que se ejecutaban en sistemas operativos que no son capaces de planificar hilos
• Ejemplo: Primeras implementaciones de UNIX
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos15
Sistemas Operativos
Desventajas de los hilos a nivel usuario
El planificador del sistema operativo solo ve un hilo por proceso
No ve los hilos a nivel usuario
Usa un solo núcleo del procesador en un procesador que tiene más de un núcleo
No puede distribuir los hilos a nivel el usuario en los dos núcleos
Al bloquearse un hilo bloquea todo el proceso por que ve a los hilos como en secuencia.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos16
Sistemas Operativos
Hilos a nivel kérnel
Soportados por el kérnel
Ejemplos
• Windows 95/98/NT
• Solaris
• Linux
• Mac OS
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos17
Sistemas Operativos
Hilos a nivel kernel (con un CPU con un solo núcleo)
Nivel kérnel (sistema operativo)
Nivel usuario
CoreCPU
Hardware
Planificador del SO
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos18
Sistemas Operativos
Hilos a nivel kernel (con un CPU con doble núcleo)
Nivel kérnel (sistema operativo)
Nivel usuario
Core CoreCPU
Hardware
Planificador del SO
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos19
Sistemas Operativos
Ventajas de los hilos a nivel kérnel
El proceso de usuario no se tiene que encargar de la planificación de los hilos
Si tenemos un procesador con más de un núcelo, el Sistema operativo puede planificar los hilos en diferentes núcleos
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos20
Sistemas Operativos
Modelos multihilos
Muchos a uno
Uno a uno
Muchos a muchos
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos21
Sistemas Operativos
Muchos a uno
Muchos hilos a nivel usuario mapeados a un hilo a nivel kérnel.
Usado en sistemas que no soportan hilos a nivel kérnel.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos22
Sistemas Operativos
Modelo muchos a uno
kk
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos23
Sistemas Operativos
EjecuciónListoListo
Relaciones entre estados de ULTs y estados de procesos
Ejecución
BloqueadoBloqueado
Listo Ejecución
Bloqueado
Hilo 1 Hilo 2
Proceso B
Kernel
Usuario
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos24
Sistemas Operativos
Uno a uno
Cada hilo a nivel usuario corresponde a un hilo del kérnel.
Ejemplos:
- Windows 95/98/NT
- OS/2
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos25
Sistemas Operativos
Modelo uno a uno
kk kk kk kk
Hilo a nivel usuario
Hilo a nivel kérnel
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos26
Sistemas Operativos
Modelo muchos a muchos
kk kkkk
Hilo a nivel usuario
Hilo a nivel kérnel
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos27
Sistemas Operativos
Soporte de hilos en Solaris 2
Solaris 2 es una versión de UNIX con soporte para hilos a nivel kernel y a nivel usuario, procesamiento simétrico y planificación en tiempo real.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos28
Sistemas Operativos
Soporte de hilos en Solaris 2
LWP – Nivel intermedio entre los hilos a nivel kernel y los hilos a nivel usuario.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos29
Sistemas Operativos
Hilos en Solaris 2. Recursos necesarios para los tipos de hilos
Hilos del kernel
• Estructura de datos pequeña y un stack
• El intercambio de hilos no requiere cambiar la información del acceso a memoria
• Cambios de hilos relativamente rápidos
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos30
Sistemas Operativos
Hilos en Solaris 2. Recursos necesarios para los tipos de hilos
LWP
• PCB con datos de los registros
• Información sobre la memoria
• El intercambio entre LWP es relativamente lento
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos31
Sistemas Operativos
Hilos en Solaris 2. Recursos necesarios para los tipos de hilos
Hilos a nivel usuario
• Solo requiere un stack y un contador de programa
• No involucrar al kernel significa un intercambio rápido
• El kernel solo ve los LWP que soporta los hilos a nivel usuario
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos32
Sistemas Operativos
Usuario
Núcleo
Hardware
Biblioteca
de hilos
Hilo a nivel de
usuario Hilo del núcleo Proceso ligero Procesador
LL L LL L L L L
L P
P P P P P
Proceso 1 Proceso 2 Proceso 3 Proceso 4 Proceso 5
Ejemplo de la arquitectura multihilo de Solaris
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos33
Sistemas Operativos
Gestión de hilos básica
Un hilo tiene :
• Un identificador (ID)
• Una pila
• Una prioridad de ejecución
• Una dirección de inicio de ejecución.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos34
Sistemas Operativos
Gestión de hilos básica(POSIX)
Se dice que un hilo es dinámico si se puede crear en cualquier instante durante la ejecución.
En POSIX :
• los hilos se crean dinámicamente con la función pthread_create.
• pthread_exit termina el hilo que la invoca.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos35
Sistemas Operativos
Gestión de hilos básica (POSIX), ejemplo:
Programa que crea un hilo donde muestra el mensaje “Hola Mundo”
Para compilar el programa :
• $ cc -D_REENTRANT thread2.c -o thread2 -lpthread
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos36
Sistemas Operativos
int main(){
pthread_create(a_thread,funcion_hilo);
pthread_join(a_thread);
}
funcion_hilo(){ …}
Crea un hilo nuevo
Espera a que termine el hilo creado
Hilo principal
Hilo creado con la llamada pthread_create
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos37
Sistemas Operativos
Gestión de hilos básica(POSIX)
Pthread_join()
• Hilo que ejecuta pthread_join, espera a que termine otro hilo
El hilo principal debe esperar a que terminen todos los hilos creados
• Si el hilo principal no espera a que terminen los hilos creados, al terminar termina el proceso con todos los hilos.
Copyright © 2006, Intel Corporation. All rights reserved.
Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.
Hilos38
Sistemas Operativos
Hilos en memoria
Código(compartido)
Datos(compartidos)
Int cont=0 (var. Global)
Stack (de cada hilo)Int i
(var local)Stack (de cada hilo)
Int i(var local)