secciones stallings: 4.1 - arantxa.ii.uam.esarantxa.ii.uam.es/~so1/transpas/04-hilos-2pp.pdf · 4...
Post on 02-Oct-2018
217 Views
Preview:
TRANSCRIPT
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.
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
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].
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
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
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
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.
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
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
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
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
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
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.
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
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.
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
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.
18
Un proceso Windows y sus recursos
Proceso de Windows
Objeto proceso
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)
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
21
Arquitectura multihilo de Solaris
Estructura de procesos en Unix clásico y Solaris
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
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
24
Estados y transiciones de hilos y procesos ligeros en Linux
top related