secciones stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-hilos-2pp.pdf · 4...

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

Upload: vananh

Post on 02-Oct-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

1

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.

Page 2: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

2

Proceso

•  Unidad de propiedad de los recursos: –  Necesita espacio de direcciones virtuales para

mantener su imagen –  Tiene asignados recursos en ciertos momentos

•  Unidad de expedición: –  sigue un camino de ejecución que puede ser

intercalada con la de otros procesos

•  Estas dos características son tratadas de manera independiente por el S.O.

Procesos e hilos

•  Hilo: unidad de expedición. •  Proceso/tarea: unidad de propiedad de

los recursos

Page 3: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

3

Multihilo

•  SO 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 (a partir del 2000), Solaris,

Linux, Mach, y OS/2 soportan múltiples hilos.

Un proceso, un hilo

Un proceso, múltiples hilos

Múltiples procesos, un hilo por proceso

Múltiples procesos, múltiples hilos por proceso

Flujo de instrucciones

Figura 4.1. Procesos e hilos [ANDE97].

Page 4: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

4

Proceso en entorno multihilo

•  Proceso: – Espacio de direcciones virtuales, que

contiene la imagen del proceso. – Acceso protegido a los procesadores, a

otros procesos, archivos y a recursos de E/S. – Puede tener 1 o varios hilos

Hilo en entorno multihilo •  Hilo tiene:

– Estado de ejecución (ejecución, listo, etc.). – Contexto del procesador, que se salva

cuando no está ejecutando. – Tiene una pila de ejecución. – Almacenamiento estático para las variables

locales. – Acceso a memoria y otros recursos del

proceso, compartidos con todos los hilos del mismo

Page 5: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

5

Modelo de proceso monohilo

Bloque de control de proceso

Espacio de direcciones de usuario

(código y datos)

Pila de usuario

Pila del núcleo

Bloque de control de proceso

Espacio de direcciones de usuario

(código y datos)

Pila de usuario

Pila de usuario

Pila de usuario

Pila del núcleo

Pila del núcleo

Pila del núcleo

Bloque de control

de hilo

Bloque de control

de hilo

Bloque de control

de hilo

Modelo de proceso multihilo

Hilo Hilo Hilo

Figura 4.2. Modelos de proceso monohilo y multihilo.

Acceso a los mismos datos y recursos. Ej: un hilo abre fichero con permiso lectura, el resto de hilos pueden leer.

Beneficios de los hilos •  Se tarda menos tiempo en crear un nuevo hilo en un

proceso existente. •  Se tarda menos tiempo en terminar un hilo que un

proceso. •  Se tarda menos tiempo en cambiar entre dos hilos de un

mismo proceso. •  Los hilos de un mismo proceso comparten recursos

(memoria, archivos, …) => pueden comunicarse entre sí sin invocar al núcleo (no necesidad de protección) => coordinación es más rápida (vs. procesos, que deben enviarse msgs.) => aumenta eficiencia

Page 6: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

6

Usos de los hilos en un sistema monousuario y multiproceso

•  Trabajo interactivo y en segundo plano. –  Ej: calcular – recibir datos de teclado (bloques)

•  Procesamiento asíncrono –  Ej: cada X tiempo copia de seguridad. No necesario

comprobaciones externas de tiempo, ni coordinación entre E/S, porque el hilo se ocupa de ello

•  Aceleración de la ejecución –  Ej: procesar lotes – leer siguiente

•  Estructuración modular de los programas –  Ej: varias actividades a la vez y/o varios dispositivos

Llamadas a Procedimiento Remoto (RPC) utilizando hilos

Tiempo

Proceso 1

Llamada a RPC

Llamada a RPC

Servidor 2

(a) RPC utilizando un solo hilo

Bloqueado, esperando respuesta de una RPC

Ejecutando

Figura 4.3. Llamadas a Procedimiento Remoto (RPC) utilizando hilos

Servidor 1

Page 7: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

7

Llamadas a Procedimiento Remoto (RPC) utilizando hilos

Servidor 1 Llamada a RPC

Llamada a RPC

Hilo A (proceso 1)

Hilo B (proceso 1)

(b) RPC utilizando un hilo por servidor (en un monoprocesador)

Bloqueado, esperando respuesta de una RPC

Bloqueado, esperando al procesador que está siendo usado por el hilo B

Ejecutando

Figura 4.3. Llamadas a Procedimiento Remoto (RPC) utilizando hilos.

Servidor 2

Estados de un hilo •  Hilos tienen estado de ejecución •  Pueden sincronizarse entre ellos •  Operaciones básicas relacionadas con

el cambio de estado en hilos: – Creación – Bloqueo – Desbloqueo – Terminación:

•  Se liberan el contexto y las pilas.

Page 8: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

8

Estados de proceso - hilos

•  Suspensión de un proceso => suspensión de todos sus hilos, porque comparten el mismo espacio de direcciones

•  Terminación de un proceso => terminar con todos sus hilos, el proceso ya no se elige para la ejecución

Estados de un hilo

•  Creación de un hilo: – Crear proceso = crear 1 primer hilo – Un hilo puede crear otros hilos:

•  Le pasa puntero de instrucción y argumentos

– Nuevo hilo tiene su propio contexto y espacio de pila

– Nuevo hilo pasa a la cola de listos

Page 9: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

9

Estados de un hilo •  Bloqueo de un hilo:

– Hilo necesita esperar suceso – Bloqueo: guardar contexto del hilo

(registros, contador de programa, puntero de pila)

– No tienen por qué bloquearse el resto de los hilos

•  Hilos a nivel de usuario: se bloquea el proceso entero

•  Hilos a nivel de núcleo: se bloquea sólo el hilo

Estados de un hilo

•  Desbloqueo de un hilo: – El suceso ocurre

•  El hilo pasa a cola de listos (si hilos a nivel de núcleo)

•  El proceso pasa a cola de listos (si hilos a nivel de usuario y era el único hilo bloqueado)

•  Terminación de un hilo: – Se libera su bloque de control (contexto) y

su pila

Page 10: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

10

Hilos a nivel de usuario •  La aplicación realiza todo el trabajo de

gestión de hilos •  El núcleo no tiene conocimiento de la

existencia de hilos •  Biblioteca de hilos - código para:

–  crear y destruir hilos –  intercambiar mensajes y datos entre hilos –  planificar ejecución de hilos –  salvar y restaurar el contexto de los hilos

Biblioteca de hilos

Espacio de usuario

Espacio de núcleo

(a) Nivel de usuario puro

Hilo a nivel de usuario Hilo a nivel de núcleo Proceso

Hilos a nivel de usuario

Page 11: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

11

Proceso ejecutándose (hilo 2) Hilo 2 hace llamada al sistema

Pasa a modo núcleo => proceso bloqueado

Estado de los hilos se mantiene (nivel usuario)

Proceso ejecutándose (hilo 2) Interrupción de reloj: el tiempo para proceso B termina ¿Qué ocurre?

Pasar a modo núcleo Proceso B pasa a listo Estado de los hilos (nivel usuario) se mantiene

Page 12: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

12

Proceso ejecutándose (hilo 2) Hilo 2 necesita que ocurra suceso

que depende de hilo 1.

¿Qué ocurre?

Hilo 2 se bloquea (nivel usuario) Hilo 1 de listo a ejecutarse Proceso sigue ejecutándose

Hilos a nivel de usuario

Espacio de usuario

Núcleo Tabla de procesos

Tabla Hilos

Proceso A

Tabla Hilos

Proceso B

Planificador Procesos

Planificador Hilos: Biblioteca de usuario

Permiten multiprogramación dentro de un proceso

Planificación de los hilos es interna al proceso biblioteca de hilos a nivel de usuario

Page 13: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

13

Ventajas hilos a nivel de usuario

•  Intercambio de hilos no necesita privilegios del modo núcleo: – Gestión de hilos en el espacio de direcciones

de usuario – Se evitan 2 cambios de modo

•  Se puede decidir planificación específica a nivel de hilos

•  Hilos se pueden ejecutar en cualquier S.O.: – Biblioteca hilos = utilidades de aplicación

Desventajas hilos a nivel de usuario

•  Llamadas al sistema son bloqueantes: – Un hilo ejecuta llamada => bloqueo del resto

de hilos (bloqueo de todo el proceso) •  No se aprovechan las ventajas de

multiprocesadores: – Núcleo asigna el procesador a 1 proceso

=> cuando se le quita, todos hilos del proceso esperan a que se le vuelva a asignar.

– Hilos a nivel de usuario “invisibles” para el S.O.

Page 14: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

14

Hilos a nivel de núcleo

•  Núcleo mantiene la información de contexto del proceso y de los hilos – Hilos visibles y gestionados por el núcleo

•  La planificación se realiza en función de los hilos => hilos del mismo o distinto proceso compiten por procesador

•  Ejs: W2K, Linux y OS/2

Espacio de usuario

Espacio de núcleo

(b) Nivel de núcleo puro

Hilo a nivel de usuario Hilo a nivel de núcleo Proceso

Hilos a nivel de núcleo

Page 15: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

15

Hilos a nivel de núcleo •  Ventajas:

– Si varios procesadores, posible ejecutar en paralelo hilos del mismo proceso

– Bloqueo de un hilo NO implica bloqueo de los demás

– Las propias funciones del núcleo pueden ser multihilo

•  Desventajas: – Necesario cambiar a modo núcleo para

pasar de un hilo a otro (incluso con hilos de un mismo proceso)

Aproximaciones combinadas •  Creación de hilos: en el espacio de usuario •  Planificación y sincronización: en el espacio de

usuario •  Varios hilos de usuario se asocian con varios

hilos a nivel de núcleo –  Nº igual o distinto, lo puede ajustar el programador

•  Ej.: Solaris •  Ventajas:

–  Hilos de un mismo proceso se pueden ejecutar en paralelo en varios procesadores

–  Llamadas al sistema bloqueantes no necesitan bloquear todo el proceso.

Page 16: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

16

Biblioteca de hilos

Biblioteca de hilos

Espacio de usuario

Espacio de usuario

Espaciode

usuario

Espacio de núcleo

Espacio de núcleo

Espacio de núcleo

(a) Nivel de usuario puro (b) Nivel de núcleo puro (c) Combinado

Hilo a nivel de usuario Hilo a nivel de núcleo Proceso

Figura 4.6. Hilos a nivel de usuario y a nivel de núcleo.

Relación entre hilos y procesos

Hilos : Procesos Descripción Sistemas de ejemplo

1 : 1 Cada hilo de ejecución es un único proceso con sus propios recursos y espacio de direcciones.

Implementaciones UNIX clásicas

M : 1 Un proceso define un espacio de direcciones y unos recursos dinámicos propios. Pueden crearse varios hilos que ejecuten en dicho proceso.

Windows NT, Solaris, OS/2, OS/390, MACH

Page 17: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

17

Relación entre hilos y procesos

Hilos : Procesos Descripción Sistemas de ejemplo

1 : M Un hilo puede emigrar del entorno de un proceso a otro. Esto permite que un hilo se pueda mover fácilmente entre sistemas distintos.

Ra (Clouds), Emerald

M : N Combina los atributos de los casos M : 1 y 1 : M

TRIX

Procesos de Windows

•  Implementados como objetos •  Un proceso ejecutable puede contener

uno o más hilos. •  Tanto el objeto proceso como el objeto

hilo tienen funcionalidades de sincronización preconstruidas.

Page 18: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

18

Un proceso Windows y sus recursos

Proceso de Windows

Objeto proceso

Page 19: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

19

Hilo de Windows

Objeto hilo

Estados de los hilos (Windows 2000)

•  Listo (Ready) •  Substituto (Standby) •  Ejecutando (Running) •  Bloqueado (Waiting) •  Transición (Transition) •  Terminado (Terminated)

Page 20: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

20

Estados y transiciones de hilos en Windows

Solaris

•  Proceso: –  BCP –  Espacio de direcciones: código + datos + pila

•  Hilos a nivel de usuario (ULT) •  Hilos a nivel de núcleo (KLT):

–  Realizan funciones específicas de núcleo •  Procesos ligeros (LWP):

–  Asociación entre ULT y KLT –  Cada LWP:

•  soporta uno o más ULT •  está asociado con un KLT

Page 21: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

21

Arquitectura multihilo de Solaris

Estructura de procesos en Unix clásico y Solaris

Page 22: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

22

EdD de proceso ligero en Solaris

•  Identificador del LWP •  Prioridad •  Máscara de señales: indica al núcleo que

señales debe aceptar •  Contexto •  Pila del núcleo para el LWP •  Uso de recursos y datos de perfíles:

Contabilidad •  Puntero al correspondiente hilo del núcleo •  Puntero a la estructura del proceso

Estados y transiciones de hilos y procesos ligeros en Solaris

Page 23: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

23

EdD de proceso Linux •  Estado

•  Información de planificación: •  Identificadores •  Comunicación entre procesos •  Enlaces: padres-hijos-hermanos •  Tiempos y temporizadores •  Sistema de ficheros •  Espacio de direcciones •  Contexto específico del procesador

Estados en un proceso Linux

•  Ejecutando (Running) •  Interrumpible (Interruptable) •  Ininterrumpible (Uninterruptable) •  Detenido (Stopped) •  Zombie

Page 24: Secciones Stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-Hilos-2pp.pdf · 4 Proceso en entorno multihilo • Proceso: – Espacio de direcciones virtuales, que

24

Estados y transiciones de hilos y procesos ligeros en Linux