Академический Документы
Профессиональный Документы
Культура Документы
BUITRAGO, HCTOR
9-722-1928
GONZLEZ, MARA
2-721-522
AO 2010
Hebras 201
0
Contenido
I.
Introduccin................................................................................................ 4
II.
Objetivos.................................................................................................... 5
2.1
Objetivos Generales............................................................................... 5
2.2
Objetivos Especficos............................................................................. 5
Definicin de Hebras................................................................................. 6
III.
3.1
Motivacin............................................................................................ 6
3.2
Ventajas............................................................................................... 7
Modelos Multihebras................................................................................. 8
IV.
4.1
4.2
4.3
Bibliotecas de Hebras................................................................................. 11
V.
5.1.
Pthreads............................................................................................ 12
5.2.
Hebras de Win32................................................................................. 12
5.3.
Hebras de Java................................................................................... 13
VI.
6.1.
Cancelacin........................................................................................ 15
6.2.
Tratamiento de Seales........................................................................17
6.3.
6.4
6.5
VII.
Hebras 201
0
7.1.
7.2
Hebras de Linux.................................................................................. 23
VIII.
Conclusiones......................................................................................... 25
IX.
Referencias........................................................................................... 26
Tabla de Ilustraciones
Ilustracin 1-Proceso Monohebra y Multihebra.......................................................7
Ilustracin 2-Modelo de muchos a uno..................................................................9
Ilustracin 3-Modelo uno a uno..........................................................................10
Ilustracin 4-Modelo muchos a muchos...............................................................10
Ilustracin 5-Modelo de dos niveles....................................................................11
Ilustracin 6-Programa C multihebra usando la API de Pthreads.............................14
Ilustracin 7-Programa C multihebra usando la API de Win32.................................16
Ilustracin 8-Programa Java para el sumario de un entero negativo........................18
Ilustracin 9-Proceso Ligero (LWP).....................................................................21
Ilustracin 10-Estructura de Datos de una Hebra de Windows XP...........................24
Hebras 201
0
I.
Introduccin
La mayora de los sistemas operativos modernos proporcionan caractersticas
que permiten que un proceso tenga mltiples hebras de control.
Una vez que el usuario solicita la ejecucin de un programa, ste es cargado
por el Sistema Operativo (SO) y desde este momento es considerado un
proceso. En otras palabras, un proceso es un programa que ya fue cargado y
est en condiciones de ejecucin. Una hebra es, bsicamente, la secuencia de
ejecucin de instrucciones de un programa.
Este trabajo presenta diversos conceptos asociados con los sistemas
informticos multihebra, incluyendo una exposicin sobre las API de las
bibliotecas de hebras de Pthreads, Win32 y Java. Tambin temas relacionados
con la programacin multihebra y cmo afecta esta caracterstica al diseo de
sistemas operativos.
Hebras 201
0
II.
Objetivos
II.1
Objetivos Generales
II.2
Objetivos Especficos
Hebras 201
0
III.
Definicin de Hebras
Una hebra es una unidad bsica de utilizacin de la CPU. Comprende un ID de
hebra, un contador de programas, un conjunto de registros y una pila.
Comparte con otras hebras que pertenecen al mismo proceso la seccin de
cdigo, la seccin de datos y otros recursos del sistema operativo, como los
archivos abiertos y las seales. [SIGA06]
Un proceso tradicional tiene una sola hebra de control; si un proceso tiene
mltiples hebras de control, puede realizar ms de una tarea a la vez.
La ilustracin 1 muestra la diferencia entre un proceso tradicional monohebra y
un proceso multihebra. [SIGA06]
III.1 Motivacin
Muchos paquetes de software que se ejecutan en los PC modernos de
escritorio son multihebra. Normalmente, una aplicacin se implementa como un
proceso propio con varias hebras de control. Un procesador de textos puede
tener una hebra para mostrar grficos, otra hebra para responder a las
pulsaciones de teclado del usuario y una tercera hebra para el corrector
ortogrfico y gramatical que se ejecuta en segundo plano. [SIGA06]
Las hebras tambin juegan un papel importante en los sistemas de llamada a
procedimientos remotos (RPC). Normalmente, los servidores RPC son
multihebra. Ahora muchos kernel de sistemas operativos son multihebra.
Hebras 201
0
Hay varias hebras operando en el kernel y cada hebra realiza una tarea
especfica, tal como gestionar dispositivos o tratar interrupciones.
III.2 Ventajas
Las ventajas
categoras principales:
Capacidad de respuesta: el uso de mltiples hebras en una aplicacin
interactiva, permite que un programa contine ejecutndose, incluso parte de l
este bloqueado o realizando unas operaciones muy larga, lo que incrementa la
capacidad de respuestas al usuario. [SIGA06]
Comparticin de recursos: las hebras comparten la memoria y los recursos del
proceso al que pertenecen. La ventaja de compartir el cdigo y los datos es que
Hebras 201
0
permite que una aplicacin tenga hebras de actividad dentro del mismo espacio
de direcciones. [SIGA06]
Economa: la asignacin de memoria y recursos para la creacin de procesos
es costosa, dado que las hebras comparten recursos del proceso al que
pertenecen, es ms econmico crear y realizar cambios de contexto entre unas
y otras hebras. [SIGA06]
Utilizacin
sobre
arquitecturas
multiprocesador:
las
ventajas
de
usar
Hebras 201
0
Hebras 201
0
El nmero de hebras del kernel puede ser especfico de una determinada
aplicacin o de una determinada mquina. Mientras que el modelo de muchos a
uno permite al desarrollador crear tantas hebras de usuario como desee, ya que
el kernel solo puede planificar la ejecucin de una hebra cada vez.
El modelo uno a uno permite una mayor concurrencia, pero el desarrollador
debe tener cuidado de no crea demasiadas hebras dentro de una aplicacin. El
modelo muchos a muchos no sufre ninguno de estos inconvenientes. Los
desarrolladores pueden crear tantas hebras de usuario como sean necesarias y
las correspondientes hebras del kernel pueden ejecutarse en paralelo en un
multiprocesador. [SIGA06]
10
Hebras 201
0
11
Hebras 201
0
Una popular variacin del modelo muchos a muchos multiplexa hebras del nivel
de usuario sobre un nmero menor o igual de hebras del kernel, pero tambin
permite acoplar una hebra de usuario a una hebra del kernel. Esta variante
algunas veces se dominan modelo de dos niveles ver ilustracin 5.
V. Bibliotecas de Hebras
Una biblioteca de hebras proporciona al programador una API para crear y
gestionar hebras. Existen dos formas principales de implementar una biblioteca
de hebras: el primer mtodo consiste en proporcionar una biblioteca
enteramente en el espacio de usuario, si ningn soporte del kernel; el segundo
mtodo consiste en implementar una biblioteca en el nivel del kernel, soportada
directamente por el sistema operativo. [SIGA06]
Las tres principales bibliotecas de hebras actualmente en uso son:
POSIX Pthreads
12
Hebras 201
0
Win32
Java
Pthreads puede proporcionar como biblioteca del nivel de usuario o del nivel de
kernel. La biblioteca de hebras de Win32 es una biblioteca del nivel de kernel
disponible en los sistemas Windows. [SIGA06]
La API de hebras Java permite crear y gestionar directamente hebras en los
programas Java. Sin embargo, puesto que en la mayora de los casos la JVM
se ejecuta por encima del sistema operativo del host. [SIGA06]
5.1. Pthreads
Pthreads se basa en el estndar POSIX que define una API para la creacin y
sincronizacin
de
hebras.
Se
trata
de
una
especificacin
para
el
13
Hebras 201
0
5.3. Hebras de Java
Las hebras son el modelo fundamental de ejecucin de programas en un
programa Java y el lenguaje Java y su API proporciona un rico conjunto de
caractersticas para la creacin y gestin de hebras. Todos los programas Java
tienen al menos una hebrea de control, incluso un sencillo programa Java que
solo consta de un mtodo main () que se ejecuta como hebra en la mquina
virtual Java. [SIGA06]
Existen dos tcnicas para crear hebras en un programa Java. Un mtodo
consiste en crear una nueva clase que se derive de la clase Thread y sustituir
apropiadamente
14
Hebras 201
0
15
Hebras 201
0
VI.
6.1. Cancelacin
La cancelacin de una hebra es la accin de terminar una hebra antes de que
se haya completado. [SIGA06]
Una hebra que haya sido cancelada se denomina a menudo hebra objetivo. La
cancelacin de una hebra objetivo puede ocurrir en dos escenarios diferentes:
Cancelacin
asncrona:
una
determinada
hebra
hace
que
termine
16
Hebras 201
0
La
17
Hebras 201
0
han asignado recursos a una hebra cancelada o cuando una hebra se cancela
en mitad de una actualizacin de datos que tuviera compartidos con otras
hebras. Estos problemas son especialmente graves
cuando se utiliza el
Cada seal puede ser tratada por una de dos posibles rutinas de tratamiento:
18
Hebras 201
0
19
Hebras 201
0
Hay disponible las siguientes opciones:
Asignar una hebra especfica para recibir todas las seales del proceso.
20
Hebras 201
0
de uso. Tales arquitecturas proporcionan la importante ventaja de tener un
conjunto compartido ms pequeo, que consume menos memoria, cuando la
carga del sistema es baja. [SIGA06]
21
Hebras 201
0
se bloquea, el proceso ligero LWP se bloquea tambin y la hebra de usuario
asociada al LWP tambin se bloquea. [SIGA06]
Una aplicacin puede requerir un nmero cualquiera de procesos ligeros para
ejecutarse de forma eficiente. Normalmente se necesita un proceso ligero por
cada llamada concurrente al sistema que sea de tipo bloqueante. [SIGA06]
Un posible esquema de comunicacin entre la biblioteca de hebras de usuario y
el kernel es el que se conoce con el nombre de activacin del planificador que
funciona como sigue: el kernel proporciona a la aplicacin un conjunto de
procesos virtuales (LWP) y la aplicacin puede planificar la ejecucin de las
hebras de usuario en uno de los procesadores virtuales disponibles. [SIGA06]
22
Hebras 201
0
VII.
23
Hebras 201
0
7.2 Hebras de Linux
Linux no diferencia entre procesos y hebras. Generalmente Linux utiliza el
trmino tarea en lugar de proceso y hebra, para hacer referencia a un flujo de
control dentro de un programa. [SIGA06]
El nivel variable de comparticin es posible por la forma en que se representa
una tarea en el kernel de Linux. Existe una estructura de datos del kernel
especfica para cada tarea del sistema; esta estructura contiene punteros a
otras estructuras en las que se almacenan dichos datos, por ejemplo
estructuras de datos que representan la lista de archivos abiertos informacin
sobre el tratamiento de seales y la memoria virtual. [SIGA06]
24
Hebras 201
0
VIII.
Conclusiones
Las ventajas de los mecanismos multihebra son que proporcionan una mayor
capacidad de respuestas al usuario, la comparticin de recursos dentro del
proceso, una mayor economa y la capacidad de aprovechar las ventajas de las
arquitecturas multiprocesador.
Las hebras de nivel de usuario son hebras visibles para el programador y
desconocidos para el kernel. El kernel de los sistemas operativos soporta y
gestiona las hebras del nivel del kernel.
La mayora de los sistemas operativos modernos proporcionan soporte para
hebras en el kernel. Las bibliotecas de hebras proporcionan al programador de
la aplicacin una API para crear y gestionar hebras.
25
Hebras 201
0
IX.
Referencias
[SIGA06]
26