100% encontró este documento útil (1 voto)
280 vistas8 páginas

Hilos

El documento discute conceptos relacionados con hilos y multiprocesamiento simétrico en sistemas operativos. Explica que un hilo permite que una aplicación realice múltiples tareas de forma concurrente, y que los hilos pueden estar en diferentes estados como ejecución, listo o bloqueado. También describe la diferencia entre hilos a nivel de usuario y de núcleo, y cómo sistemas operativos como Windows, Linux y UNIX implementan hilos y multiprocesamiento simétrico.

Cargado por

Eligio Vasquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
280 vistas8 páginas

Hilos

El documento discute conceptos relacionados con hilos y multiprocesamiento simétrico en sistemas operativos. Explica que un hilo permite que una aplicación realice múltiples tareas de forma concurrente, y que los hilos pueden estar en diferentes estados como ejecución, listo o bloqueado. También describe la diferencia entre hilos a nivel de usuario y de núcleo, y cómo sistemas operativos como Windows, Linux y UNIX implementan hilos y multiprocesamiento simétrico.

Cargado por

Eligio Vasquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

3. Hilos.

3.1 Conceptos de hilos.


[Link]
3.1.1 Multihilo.
3.1.2 Funcionalidad de los hilos.
3.1.3 Estado de hilos.
3.1.4 Paralelismo.
3.1.5 Hilos a nivel de usuario y de ncleo.
3.1.6 Otras estructuras.
3.2 Multiproceso Simtrico.
3.2.1 Arquitectura SMP.
3.2.2 Organizacin SMP.
3.2.3 Consideraciones.

[Link]

3.3 Microncleo.
3.4 Hilos y Multiproceso Simtrico (SMP) en Linux.
3.5 Hilos y SMP en UNIX.
3.6 Hilos y SMP en Windows.






























o Conceptos de hilos.
Un hilo en un sistema operativo es la caracterstica que permite a una aplicacin realizar
varias tareas a la vez concurrentemente, los distintos hilos de ejecucin comparten una
serie de recursos tales como el espacio de memoria, los archivos abiertos, situacin de
autentificacin. Esta accin permite simplificar el diseo de una aplicacin que debe llevar
a cabo distintas funciones simultneamente.
Los hilos son bsicamente una tarea que puede ser ejecutada en paralelo con otra tarea;
teniendo en cuenta lo que es propio de cada hilo es el contador de programa, la pila de
ejecucin y el estado de la CPU (incluyendo el valor de los registros).
o Funcionalidad de los hilos

Al igual que los procesos, los hilos poseen un estado de ejecucin y pueden sincronizarse
entre ellos para evitar problemas de compartimiento de recursos. Generalmente, cada hilo
tiene una tarea especfica y determinada, como forma de aumentar la eficiencia del uso del
procesador.
Algunos lenguajes de programacin tienen caractersticas de diseo expresamente
creadas para permitir a los programadores lidiar con hilos de ejecucin (como Java o
Delphi). Otros (la mayora) desconocen la existencia de hilos de ejecucin y stos deben
ser creados mediante llamadas de biblioteca especiales que dependen del sistema
operativo en el que estos lenguajes estn siendo utilizados (como es el caso del C y del
C++)


o Multihilo
Un programa Multihilo contiene dos o ms partes que se pueden ejecutar de manera
concurrente o simultnea. A cada una de esas partes se les denomina hilo y cada uno de
ellos define un camino de ejecucin independiente. Se puede ver a la programacin
Multihilo como una forma especializada de multitarea.

Originalmente, la programacin con hilos fue explotada con el fin de lograr que algunos
programas resultaran ms sencillos de escribir: si un programa puede dividirse en varias
tareas, suele ser ms fcil programar el algoritmo como tareas o hilos separados. Los
programas que caen dentro de esta categora, tpicamente son especializados y se
encargan de mltiples tareas independientes. Frecuentemente, estos programas fueron
escritos como procesos separados que utilizaban herramientas de comunicacin
dependientes del sistema operativo, tales como seales y espacios de memoria
compartida para hacer la comunicacin entre los procesos, incrementando de esta forma la
complejidad de los sistemas.

La popularidad de los hilos se increment cuando las interfaces grficas se convirtieron en
un estndar para computadoras de escritorio, debido a que el sistema de hilos permiti al
usuario percibir un mejor desempeo de los programas. La introduccin de hilos en estas
plataformas no hizo a los programas ms rpidos, pero cre en el usuario una ilusin de
desempeo ms rpido, quien ahora tena un hilo dedicado para el servicio de entrada o
para la salida en pantalla.

o Estado de hilos.
Los principales estados de los hilos son: Ejecucin, Listo y Bloqueado. No tiene sentido
asociar estados de suspensin de hilos ya que es un concepto de proceso. En todo caso,
si un proceso est expulsado de la memoria principal (RAM), todos sus hilos debern
estarlo ya que todos comparten el espacio de direcciones del proceso.

o Paralelismo

Las tareas son los elementos fundamentales de la programacin en paralelo, por lo tanto el
paralelismo de tareas es la ejecucin de tareas a travs de varios procesadores.

El propsito principal del paralelismo es maximizar la utilizacin del procesador y desde
luego mejorar el desempeo de la aplicacin. A medida que aumenta la cantidad de
procesadores, una aplicacin podr escalarse ya que una tarea podr ejecutarse en ms
procesadores.

Las tareas paralelas tienen unas entradas, que tpicamente trabajan con una coleccin de
datos relacionados

o Hilos a nivel de usuario y de ncleo
Hay dos grandes categoras en la implementacin de hilos:
Hilos a nivel de usuario (UTL)

En una aplicacin ULT pura, todo el trabajo de gestin de hilos lo realiza la
aplicacin y el ncleo o kernel no es consciente de la existencia de hilos. Es
posible programar una aplicacin como Multihilo mediante una biblioteca de hilos.
La misma contiene el cdigo para crear y destruir hilos, intercambiar mensajes y
datos entre hilos, para planificar la ejecucin de hilos y para salvar y restaurar el
contexto de los hilos.
Todas las operaciones descritas se llevan a cabo en el espacio de usuario de un
mismo proceso. El kernel continua planificando el proceso como una unidad y
asignndole un nico estado (Listo, bloqueado, etc.).


Ventajas de los ULT
El intercambio de los hilos no necesita los privilegios del modo kernel, porque todas
las estructuras de datos estn en el espacio de direcciones de usuario de un
mismo proceso. Por lo tanto, el proceso no debe cambiar a modo kernel para
gestionar hilos. Se evita la sobrecarga de cambio de modo y con esto el sobrecoste
u overhead.
Se puede realizar una planificacin especfica. Dependiendo de qu aplicacin sea,
se puede decidir por una u otra planificacin segn sus ventajas.
Los ULT pueden ejecutar en cualquier sistema operativo. La biblioteca de hilos es
un conjunto compartido.

Desventajas de los ULT
En la mayora de los sistemas operativos las llamadas al sistema (System calls)
son bloqueantes. Cuando un hilo realiza una llamada al sistema, se bloquea el
mismo y tambin el resto de los hilos del proceso.
En una estrategia ULT pura, una aplicacin Multihilo no puede aprovechar las
ventajas de los multiprocesadores. El ncleo asigna un solo proceso a un solo
procesador, ya que como el ncleo no interviene, ve al conjunto de hilos como un
solo proceso.
Una solucin al bloqueo mediante a llamadas al sistema es usando la tcnica de
jacketing, que es convertir una llamada bloqueante en no bloqueante.


Hilos a nivel de Kernel.

En una aplicacin KLT pura, todo el trabajo de gestin de hilos lo realiza el kernel.
En el rea de la aplicacin no hay cdigo de gestin de hilos, nicamente un API
(interfaz de programas de aplicacin) para la gestin de hilos en el ncleo.
Windows 2000, Linux y OS/2 utilizan este mtodo. Linux utiliza un mtodo muy
particular en que no hace diferencia entre procesos e hilos, para Linux si varios
procesos creados con la llamada al sistema "clone" comparten el mismo espacio
de direcciones virtuales el sistema operativo las tratas como hilos y lgicamente
son manejados por el kernel.

Ejemplo:
Es tener un hilo atento a la interfaz Grfica (iconos, botones, ventanas), mientras
otro hilo hace una larga operacin internamente. De esta manera el programa
responde de manera ms gil a la interaccin con el usuario. Tambin pueden ser
utilizados por una aplicacin servidora para dar servicio a mltiples clientes.

Un ejemplo de aplicacin que podra hacer uso de hilos es un servidor, como
puede ser un servidor de archivos de una red de rea local. Cada vez que llegue
una solicitud de un nuevo archivo, se puede generar un nuevo hilo para el
programa de gestin de archivos. Puesto que el servidor debe manejar muchas
solicitudes, se crearan y destruirn muchos hilos en un corto periodo de tiempo. Si
el servidor es un multiprocesador, se pueden ejecutar varios hilos de una misma
tarea simultneamente y en diferentes procesadores. Los hilos son tambin tiles
en los monoprocesadores para simplificar la estructura de los programas que
lleven a cabo diversas funciones.


Microncleo
Es un tipo de ncleo de un sistema operativo que provee un conjunto de primitivas o
llamadas al sistema mnimas, para implementar servicios bsicos como espacios de
direcciones, comunicacin entre procesos y planificacin bsica.
El enfoque microncleo consiste en definir una abstraccin muy simple sobre el hardware,
con un conjunto de primitivas o llamadas al sistema que implementan servicios del sistema
operativo mnimos, como la gestin de hilos, el espacio de direccionamiento y la
comunicacin entre procesos.
El objetivo principal es la separacin de la implementacin de los servicios bsicos y de la
poltica de funcionamiento del sistema.
Las principales ventajas de su utilizacin son la reduccin de la complejidad, la
descentralizacin de los fallos y la facilitacin para crear y depurar controladores de
dispositivos.
Por otro lado, sus principal dificultad es la complejidad en la sincronizacin de todos los
mdulos que componen el microncleo y su acceso a la memoria.
Sistemas operativos con microncleo
AIX
Symbian
L4
Amoeba
Hilos y SMP en Windows
Un hilo es una caracterstica que permite a una aplicacin realizar varias tareas a la vez
(concurrentemente). Los distintos hilos de ejecucin comparten una serie de recursos tales
como el espacio de memoria, los archivos abiertos, situacin de autenticacin, etc. Esta
tcnica permite simplificar el diseo de una aplicacin que debe llevar a cabo distintas
funciones simultneamente.
Un proceso de W2K debe tener por lo menos un hilo para ejecutar. Dicho hilo puede crear
entonces otros hilos. En un sistema multiprocesador pueden ejecutarse en paralelo varios
hilos de un mismo proceso.
Un hilo de W2k puede estar en uno de los siguientes estados:
Listo
Standbyn
Ejecucin
Espera
Transicin
Terminado
Los hilos de un mismo proceso pueden intercambiar informacin a travs de un espacio de
direcciones comn y tienen acceso a los recursos compartidos del proceso. Los hilos de
diferentes procesos pueden intercambiar informacin a travs de la memoria compartida
que se ha establecido entre los dos procesos.
SMP en Windows
Un sistema operativo SMP gestiona el procesador y el resto de los recursos del computador
para que el usuario pueda ver el sistema como si fuera un sistema monoprocesador
multiprogramado.
Un usuario puede construir aplicaciones que usen mltiples procesos o mltiples hilos
dentro de procesos sin tener en cuenta si dispone de un solo procesador o de muchos. De
este modo, un sistema operativo debe ofrecer toda la funcionalidad de un sistema
multiprogramado,con las caractersticas adicionales para trabajar con mltiples
procesadores.
Resulta til ver donde encajan las arquitecturas Smp dentro de la clasificacin de los
procesadores paralelos. La forma ms comn de clasificar estos sistemas, es la taxonomia
que destaca los sistemas de procesamiento en paralelo introducidos por Flyn, estos son:
Flujo de instruccin simple / dato simple (SISD)
Flujo de instruccin simple / datos mltiples (SIMD)
Flujo de instruccin mltiple / dato simple (MISD
Flujo de instruccin mltiple / datos mltiples (MIMD)

Hilos en Linux
Los hilos o threads son rutinas de codigo que corren de manera concurrente dentro de un
mismo proceso.
Linux no considera los hilos como tales, se refiere a ellos como tareas ms que como hilos.
En Linux se crea un nuevo proceso copiando los atributos del proceso actual. Un nuevo
proceso puede ser clonado para que comparta los recursos del actual, tales como archivos,
gestores de seales o la memoria virtual.


Spm en Linux
Soporte para multiprocesador, lo que llama multiprocesamiento simtrico (SMP). Este
concepto suele englobar mquinas que van desde el caso simple de 2 hasta 64 CPU. Linux
puede usar mltiples procesadores, donde cada procesador puede manejar una o ms tareas.
Pero hay algunas partes del kernel que disminuyen el rendimiento, ya que estn pensadas
para una nica CPU y obligan a parar el sistema entero. SMP es una de las tcnicas ms
estudiadas en la comunidad del kernel de Linux, y se esperan mejoras importantes para las
nuevas versiones, ya que se depende en gran medida del rendimiento SMP para la adopcin
de Linux en los sistemas empresariales.
Hilos en Unix
Solaris hace uso de cuatros conceptos independientes relativos a hilos:
Proceso: este es el proceso UNIX convencional e incluye el espacio de direcciones
de usuarios, la pila, y el bloque de control de procesos.
Hilos a nivel de usuario: implementados en el espacio de direcciones de un proceso
por medio de una biblioteca de hilos, esos son invisibles para el sistema operativo.
Los hilos a nivel de usuario (ULT) son la interfaz para el paralelismo de
aplicaciones.
Procesos ligeros: un proceso ligero (LWP) puede verse como una correspondencia
entre ULT e hilos del ncleo. Cada LWP soporta uno o ms ULT y los hace
corresponder con un hilo del ncleo. El ncleo planifica los LWP
independientemente y puede ejecutar en paralelo sobre multiprocesadores.
Hilos del ncleo: son las entidades bsicas de planificacin y expedicin en cada
uno de los procesadores del sistema.
Un LWP es visible para la aplicacin dentro del proceso. De este modo, las estructuras de
datos LWP existen dentro de los respectivos espacios de direcciones de los procesos. Al
mismo tiempo, cada LWP esta confinado a un nico hilo del ncleo y la estructura de datos
de este hilo del ncleo se mantiene dentro del espacio de direcciones del ncleo.
SMP en Unix
Solaris implementa un soporte de hilo multinivel poco habitual, diseado para proporcionar
considerable flexibilidad para sacar provecho de los recursos del procesador

También podría gustarte