Hilo

Anuncio
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 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
2
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 proceso,
un hilo
múltiples hilos
Múltiples procesos,
Múltiples procesos,
un hilo por proceso
múltiples hilos por proceso
Flujo de instrucciones
Figura 4.1. Procesos e hilos [ANDE97].
3
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
4
Modelo de proceso
multihilo
Modelo de proceso
monohilo
Bloque de
control de
proceso
Hilo
Hilo
Hilo
Bloque
de control
de hilo
Bloque
de control
de hilo
Bloque
de control
de hilo
Bloque de
control de
proceso
Pila de
usuario
Pila de
usuario
Pila de
usuario
Espacio de
direcciones
de usuario
(código y datos)
Pila del
núcleo
Pila del
núcleo
Pila del
núcleo
Pila de
usuario
Espacio de
Pila del
direcciones
núcleo
de usuario
(código y datos)
Acceso a los mismos datos y recursos.
Ej: un hilo abre fichero con permiso lectura,
el resto de hilos pueden leer.
Figura 4.2. Modelos de proceso monohilo y multihilo.
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
5
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
Llamada
Llamada
a RPC
a RPC
Proceso 1
Servidor 1
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
6
Llamadas a Procedimiento
Remoto (RPC) utilizando hilos
Llamada
Servidor 1
a RPC
Hilo A (proceso 1)
Hilo B (proceso 1)
Llamada
a RPC
Servidor 2
(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.
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.
7
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
8
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
9
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
Hilos a nivel de usuario
Biblioteca
Espacio
de hilos
de usuario
Espacio
de núcleo
(a) Nivel de usuario puro
Hilo a nivel de usuario
Hilo a nivel de núcleo
Proceso
10
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
11
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
Permiten multiprogramación dentro de un proceso
Planificador
Hilos:
Tabla
Hilos
Biblioteca
de usuario
Proceso A
Tabla de
procesos
Tabla
Hilos
Espacio de
usuario
Proceso B
Planificador Procesos
Núcleo
Planificación de los hilos es interna al proceso 
biblioteca de hilos a nivel de usuario
12
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.
13
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
Hilos a nivel de núcleo
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
14
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.
15
Biblioteca
Espacio
Espacio
Biblioteca
de hilos
de usuario
de usuario
de hilos
Espacio
Espacio
Espacio
de núcleo
de núcleo
de núcleo
(a) Nivel de usuario puro
Hilo a nivel de usuario
Espacio
de
usuario
(b) Nivel de núcleo puro
Hilo a nivel de núcleo
(c) Combinado
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
1:1
Cada hilo de ejecución es un
único proceso con sus propios
recursos y espacio de
direcciones.
M:1
Un proceso define un espacio de
direcciones y unos recursos
dinámicos propios. Pueden
crearse varios hilos que ejecuten
en dicho proceso.
Sistemas de ejemplo
Implementaciones UNIX
clásicas
Windows NT, Solaris, OS/2,
OS/390, MACH
16
Relación entre hilos y
procesos
Hilos : Procesos
Descripción
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.
M:N
Combina los atributos de los casos
M:1 y1:M
Sistemas de ejemplo
Ra (Clouds), Emerald
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.
17
Un proceso Windows y sus
recursos
Proceso de Windows
Objeto proceso
18
Hilo de Windows
Objeto hilo
Estados de los hilos
(Windows 2000)
• 
• 
• 
• 
• 
• 
Listo (Ready)
Substituto (Standby)
Ejecutando (Running)
Bloqueado (Waiting)
Transición (Transition)
Terminado (Terminated)
19
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
20
Arquitectura multihilo de Solaris
Estructura de procesos en Unix
clásico y Solaris
21
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
22
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
23
Estados y transiciones de hilos y
procesos ligeros en Linux
24
Descargar