Sie sind auf Seite 1von 38

Hilos

Capítulo 5
Silberschatz Galvin
Hilos

Concepto
Beneficios
Hilos a nivel kérnel y a nivel usuario
Modelos multihilos
Hilos de Solaris 2
Hilos de Java

Sistemas Operativos

2 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.
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

Sistemas Operativos

3 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.
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.

Sistemas Operativos

4 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.
Hilos y procesos

un proceso un proceso
un hilo varios hilos

varios procesos varios procesos


un hilo por proceso varios hilos por proceso

Sistemas Operativos

5 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.
Procesos con un solo hilo y con múltiples
hilos

Código Datos Archivos Código Datos Archivos

Hilo Hilos

Mono-hilo Multi-hilo

Sistemas Operativos

6 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.
Modelos de procesos de un solo hilo y de
muchos hilos

Modelo de proceso Modelo de proceso


de un solo hilo multihilos
Hilo Hilo Hilo
Bloque de Bloque de Bloque de
Bloque Stack control control control
de control del del hilo del hilo del hilo
del proceso usuario

Bloque de Stack Stack Stack


Espacio de Stack control del del del del
direcciones del proceso usuario usuario usuario
del usuario Kernel

Espacio de Stack Stack Stack


direcciones del del del
del usuario kernel kernel kernel

Sistemas Operativos

7 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.
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.

Sistemas Operativos

8 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.
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.

Sistemas Operativos

9 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.
Hilos

Los hilos proveen un mecanismo que permiten a procesos


secuenciales hacer llamadas bloqueantes mientras otros en
paralelo ejecutan otras operaciones.

Sistemas Operativos

10 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.
Beneficios

Compartición de recursos
Economía
Utilización de arquitecturas de múltiples procesadores

Sistemas Operativos

11 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.
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

Sistemas Operativos

12 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.
Hilos a nivel usuario (un CPU con dos
núcleos)

Proceso de usuario gestiona y


Nivel usuario
planifica los múltiples hilos
Nivel kérnel
(sistema
operativo)

Planificador del SO

Hardware

CPU Core Core

Sistemas Operativos

13 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.
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

Sistemas Operativos

14 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.
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.

Sistemas Operativos

15 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.
Hilos a nivel kérnel

Soportados por el kérnel

Ejemplos
• Windows 95/98/NT
• Solaris
• Linux
• Mac OS

Sistemas Operativos

16 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.
Hilos a nivel kernel (con un CPU con un solo
núcleo)

Nivel usuario

Nivel kérnel
(sistema
operativo)

Planificador del SO

Hardware

CPU Core

Sistemas Operativos

17 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.
Hilos a nivel kernel (con un CPU con doble
núcleo)

Nivel usuario

Nivel kérnel
(sistema
operativo)

Planificador del SO

Hardware
CPU Core Core

Sistemas Operativos

18 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.
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

Sistemas Operativos

19 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.
Modelos multihilos

Muchos a uno
Uno a uno
Muchos a muchos

Sistemas Operativos

20 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.
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.

Sistemas Operativos

21 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.
Modelo muchos a uno

kk
Sistemas Operativos

22 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.
Relaciones entre estados de ULTs y estados
de procesos

Hilo 1
Hilo 2
Listo Ejecución
Listo Ejecución
Bloqueado
Bloqueado

Usuario

Kernel
Listo Ejecución

Bloqueado

Proceso B Sistemas Operativos

23 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.
Uno a uno

Cada hilo a nivel usuario corresponde a un hilo del kérnel.

Ejemplos:
- Windows 95/98/NT
- OS/2

Sistemas Operativos

24 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.
Modelo uno a uno

Hilo a nivel usuario

Hilo a nivel kérnel


kk kk kk kk

Sistemas Operativos

25 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.
Modelo muchos a muchos

Hilo a nivel usuario

Hilo a nivel kérnel


kk kk kk

Sistemas Operativos

26 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.
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.

Sistemas Operativos

27 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.
Soporte de hilos en Solaris 2

LWP – Nivel intermedio entre los hilos a nivel kernel y los hilos
a nivel usuario.

Sistemas Operativos

28 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.
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

Sistemas Operativos

29 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.
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

Sistemas Operativos

30 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.
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

Sistemas Operativos

31 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.
Ejemplo de la arquitectura multihilo de
Solaris

Proceso 1 Proceso 2 Proceso 3 Proceso 4 Proceso 5

Usuario Biblioteca
de hilos
L L L L L L L L L

Núcleo

Hardware P P P P P

Hilo a nivel de
usuario
Hilo del núcleo L Proceso ligero P Procesador
Sistemas Operativos

32 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.
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.

Sistemas Operativos

33 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.
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.

Sistemas Operativos

34 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.
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

Sistemas Operativos

35 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.
int main()
{

pthread_create(a_thread,funcion_hilo); Crea un hilo


nuevo

Espera a que
pthread_join(a_thread);
termine el hilo
creado

}
Hilo principal

funcion_hilo()
{

Hilo creado con la llamada
}
pthread_create

Sistemas Operativos

36 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.
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.

Sistemas Operativos

37 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.
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)

Sistemas Operativos

38 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.

Das könnte Ihnen auch gefallen