PDF de programación - 04-Hilos

Imágen de pdf 04-Hilos

04-Hilosgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 2 de Enero del 2018)
422 visualizaciones desde el 2 de Enero del 2018
749,9 KB
24 paginas
Creado hace 14a (24/03/2010)
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 hilo

Un proceso,
múltiples hilos

Múltiples procesos,
un hilo por proceso

Flujo de instrucciones

Múltiples procesos,

múltiples hilos por proceso

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

monohilo

Bloque de
control de
proceso

Pila de
usuario

Espacio de
direcciones
de usuario

(código y datos)

Pila del
núcleo

Modelo de proceso

multihilo
Hilo
Bloque
de control
de hilo

Hilo
Bloque
de control
de hilo

Hilo
Bloque
de control
de hilo

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
proceso

Espacio de
direcciones
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.

mismo proceso.

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

•  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
a RPC

Llamada
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

Hilo A (proceso 1)

Hilo B (proceso 1)

Llamada
a RPC

Servidor 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
•  El núcleo no tiene conocimiento de la

gestión de hilos

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

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:
Biblioteca
de usuario

Tabla
Hilos

Proceso B

Tabla
Hilos
Proceso A

Espacio de
usuario

Tabla de
procesos

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

Espacio

de

usuario
Espacio
de núcleo

Biblioteca
de hilos

Espacio
de usuario

Espacio
de núcleo

Espacio
de usuario

Espacio
de núcleo

Biblioteca
de hilos

(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

1 : 1

M : 1

Cada hilo de ejecución es un
único proceso con sus propios
recursos y espacio de
direcciones.
Un proceso define un espacio de
direcciones y unos recursos
dinámicos propios. Pueden
crearse varios hilos que ejecuten
en dich
  • Links de descarga
http://lwp-l.com/pdf8132

Comentarios de: 04-Hilos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad