Вы находитесь на странице: 1из 15

INSTITUTO TECNOLOGICO DE COLIMA

Hilos
Profesor: Pedro Fletes Gudio

Alumno:

Jos Alejandres Daniel Alegra Samuel Montiel Erick Sandoval

Materia: Sistemas Operativos


Hilos

Definicin

Un hilo se puede definir como la traza de ejecucin de un proceso. Esto se refiere a la parte dinmica del proceso, la ejecucin del cdigo representada por la pila del usuario y la parte del bloque de control del proceso que hace referencia al estado del procesador y del proceso, frente a la parte ms esttica, como es la el resto del bloque de control del proceso y el cdigo mismo. La aparicin de los hilos viene justificada desde dos pilares bsicos: facilitar la sincronizacin entre procesos y mejorar la eficiencia en la alternancia de procesos en el procesador.

Modelos de Hilos

Los sistemas operativos generalmente implementan hilos de dos maneras: Multihilo apropiativo: permite al sistema operativo determinar cundo debe haber un cambio de contexto. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenmeno conocido como inversin de prioridades y otros problemas.

Multihilo cooperativo: depende del mismo hilo abandonar el control cuando llega a un punto de detencin, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.

El soporte de hardware para multihilo se encuentra disponible desde hace mucho tiempo. Esta caracterstica es utilizada por el gran pblico, soportada nativamente por los Intel en el Pentium Pro y los Pentium II y III en la versin domstica, eliminada posteriormente en los Celeron, al descubrirse que poda ser desbloqueado, y posteriormente reintroducido en el Pentium 4, bajo el nombre de HyperThreading.

Ventajas

Respuesta: Una aplicacin multihilo puede continuar ejecutndose incluso si una parte de ella est bloqueada o est realizando una tarea larga, incrementando de este modo el nivel de respuesta frente al usuario. Comparticin de recursos: Los hilos por defecto comparten la memoria y otros recursos del proceso al que pertenecen por lo que no hay que utilizar ningn mecanismo especial de comparticin entre procesos. Esto permite que la aplicacin pueda tener distintos hilos de ejecucin con la misma memoria. Adems los hilos aumentan la eficiencia de al comunicacin entre programas en ejecucin ya que pueden comunicarse sin la intervencin del ncleo del sistema operativo. Economa: Reservar memoria y recursos en la creacin de los procesos es una tarea costosa. Como los hilos comparten los recursos del proceso al que pertenecen, resulta ms econmico crear hilos nuevos y alternarlos en el procesador que hacer lo mismo con procesos. Aunque no existen medidas empricas definitivas, en Solaris crear un proceso es unas 30 veces ms lento que crear un hilo, y realizar un cambio de contexto entre procesos es 5 veces ms lento que hacerlo entre hilos. Utilizacin de arquitecturas multiprocesador: Los procesos multihilo pueden aprovechar fcilmente una arquitectura multiprocesador ya que cada hilo podra ejecutarse en un procesador distinto.

Implementacin
Existen dos grandes categoras para la implementacin de los hilos: hilos a nivel de usuario (HU) e hilos a nivel del ncleo (HN). Para ilustrar las posibilidades de implementacin de los hilos, en la Figura 1 se muestran diferentes configuraciones.

Figura 1.1

Hilos Nivel de Usuario

En una aplicacin HU pura, todo el trabajo de gestin de hilos lo realiza la aplicacin mientras que el ncleo no es consciente de ello. Resulta posible programar cualquier aplicacin como multihilo mediante una biblioteca de hilos. Esta contiene el cdigo para crear, destruir y sincronizar hilos, para intercambiar mensajes y datos entre hilos y para planificar la ejecucin de los hilos salvando y restaurando el contexto de los mismos. Ejemplos de bibliotecas de hilos pueden ser la MV Java, POSIX Pthreads, Mach C-threads y Solaris threads y Win32. Desde el punto de vista del ncleo, la aplicacin se ejecuta bajo la forma de un slo proceso, pero la biblioteca de hilos crea y planifica los hilos en el tiempo de ejecucin que le toque al proceso subyacente. Las ventajas de utilizar HU en lugar de HN son las siguientes: 1. El intercambio entre dos hilos no necesita los privilegios del ncleo, lo que evita la sobrecarga de los cambios de modo de ejecucin. 2. Se puede realizar una planificacin a medida de la aplicacin sin afectar a la planificacin subyacente del sistema operativo. 3. Los HU se pueden ejecutar sobre cualquier sistema operativo. Tambin existen desventajas: 1. Como la mayora de las llamadas al sistema producen bloqueo en el proceso que las invoca, la llamada al sistema de un hilo puede bloquear a todos los dems hilos del proceso. 2. No puede aprovechar las ventajas de un entorno multiprocesador, ya que el proceso est asignado a un nico procesador.

Hilos a Nivel de Usuario

Existen formas de intentar eliminar estas desventajas. Se puede escribir la aplicacin como varios procesos en lugar de mltiples hilos, pero entonces perdemos las ventajas de los hilos relativas a la eficiencia. La otra tcnica es la llamada recubrimiento, donde las llamadas bloqueadoras van precedidas por otras no bloqueadoras. Por ejemplo, antes de que un hilo llame directamente a una operacin de E/S, otro hilo llama a una funcin de recubrimiento que comprueba si el dispositivo de E/S se encuentra ocupado o libre antes de realizar la llamada al sistema.

Hilos a Nivel de Ncleo

En una aplicacin con hilos a nivel de ncleo todo el trabajo de gestin de hilos lo realiza el ncleo. Un ejemplo de este caso es el sistema operativo W2000.

Tabla de relacin de Hilos y procesos

El ncleo mantiene la informacin de contexto del proceso como un todo y la de cada hilo dentro del proceso. El ncleo realiza la planificacin en funcin de los hilos. Esto soluciona los principales inconvenientes de la implementacin HU. Se pueden planificar simultneamente mltiples hilos del mismo proceso en un entorno multiprocesador. Adems, si se bloquea un hilo del proceso los dems siguen pudiendo ejecutarse. Otra ventaja es que las mismas funciones del ncleo pueden ser multi-hilo. La principal desventaja es que el paso del control de un hilo a otro dentro del mismo proceso necesita un cambio de modo de ejecucin a modo ncleo. Eso sugiere que aunque el enfoque HN sea ms rpido que el basado en mono-hilo, todava resulte ms lento que el HU.

Implementaciones Hbridas
Algunos sistemas operativos como Solaris combinan los enfoques HU y HN. En este tipo de sistemas la creacin de hilos as como la mayor parte de la planificacin y sincronizacin de los hilos de una aplicacin se realiza en el espacio del usuario. Los mltiples HU se pueden asociar con varios HN a travs de los llamados procesos ligeros o lightweight process (LWP). As, los hilos de una aplicacin se pueden ejecutar en paralelo en un entorno multiprocesador, y las llamadas al sistema bloqueadoras no bloquearan todo el proceso. Con una buena configuracin entre HU y HN, este enfoque puede combinar las ventajas de ambos modos minimizando sus inconvenientes.

Computacin Multihilo
A continuacin se van a presentar tres casos de estudio, cada uno como un ejemplo de utilizacin de los hilos de nivel de usuario, de ncleo y una combinacin de ambos. En cada caso se va a analizar tanto los aspectos de representacin de los hilos como la planificacin de los mismos en relacin con los procesos que los soportan. Hilos en Unix, Windows y Linux

JVM
Todos los programas Java comprenden al menos un hilo de control. Adems Java permite la creacin y la gestin de otros hilos en el programa. Adems del programa Java conteniendo varios hilos, existen otros hilos asncronos que la JVM utiliza para realizar tareas del sistema como la gestin de la memoria o el control grfico. Un caso de hilo del sistema lo constituye el recogedor de basura.
Estados de los Hilos

Un hilo Java puede estar en cualquiera de los siguientes cuatro estados: Nuevo: un hilo estar en este estado cuando se cree con la sentencia new. Ejecutable: la invocacin del mtodo start() reserva memoria para el nuevo hilo e invoca al mtodo run() sobre el objeto hilo. En ese momento el hilo pasa al estado Ejecutable pudiendo ser elegido para ser ejecutado. JVM no distingue entre un hilo dispuesto a ser ejecutado del hilo que est en ejecucin en un instante dado, ya que este tambin se encuentra en el estado Ejecutable.

Bloqueado: los hilos pasan a este estado cuando realizan una operacin bloqueante, tal como una operacin de E/S o la invocacin a ciertos mtodos como sleep() (que provoca que el hilo se suspenda por un tiempo determinado) o suspend() (que suspende al hilo hasta que la invocacin del mtodo resume() haga que el hilo bloqueado vuelva a ser ejecutable). Terminado: un hilo se pasa a este estado cuando termina normalmente o cuando se invoca al mtodo stop() sobre el.

En la versin 2 de Java, se desaconseja utilizar los mtodos suspend(), resume() y stop() pues pueden conducir a bloqueos mutuos en el caso de los dos primeros mtodos, y porque se pueden producir estados inconsistentes en el tercer caso. Windows 2000 En Windows 2000, W2K, la estructura original de los procesos y de los servicios que brinda el ncleo es relativamente simple y de propsito general. Las caractersticas ms importantes de los procesos en W2K son las siguientes: Los procesos se implementan como objetos. Un proceso ejecutable puede tener un hilo o ms. Los objetos proceso e hilo tienen capacidades de sincronizacin. Un proceso es una entidad correspondiente a un trabajo de usuario o a una aplicacin, que dispone de sus propios recursos, tales como memoria y archivos. Un hilo es una unidad de trabajo que se puede expedir para su ejecucin secuencial y que es interrumpible, de forma que el procesador puede pasar de un hilo a otro.

Estructura de los Procesos e Hilos

La forma en que un proceso se refiere a los recursos que controla es mediante referencias. El proceso almacena el apuntador a la lista de bloques de memoria a l asignados as como una tabla de objetos con los que est relacionado, entre ellos los hilos que soporta. Cada proceso est representado por un objeto con una serie de atributos y de acciones o servicios. Los hilos tambin estn representados por objetos, y algunos de sus atributos se parecen a los del proceso del que depende, por lo que sus valores suelen ser obtenidos a partir de ellos. Uno de los atributos del objeto hilo es el contexto, que permite que los hilos puedan ser suspendidos y reanudados. W2K soporta concurrencia entre procesos basndose en que los hilos de esos procesos se pueden ejecutar concurrentemente. Adems, se pueden asignar varios hilos del mismo proceso a distintos procesadores si se est en un entorno multiprocesador.

Atributos de procesos e hilos


Planificacin de Hilos

Un hilo puede ser en alguno de los siguientes estados: Listo: el hilo puede ser elegido para su ejecucin.

Standby: el hilo ha sido elegido para ser el siguiente en ejecutarse en el procesador. Ejecucin: el hilo est siendo ejecutado. Espera: un hilo pasa a este estado cuando se bloquea por un suceso (E/S), se realiza una espera voluntaria de sincronizacin o alguien suspende al hilo. Transicin: despus de una espera el hilo pasa a este estado si est listo para ejecutar pero alguno de sus recursos no est disponible an. Terminado: un hilo llega a este estado cuando termina normalmente o cuando su proceso padre ha terminado.

Diagrama de estados de hilos en W2K

Solaris Solaris implementa una arquitectura de hilos multinivel que aporta una gran flexibilidad. Para Solaris el proceso sigue el mismo modelo que los sistemas UNIX convencionales, incluyendo el espacio de direcciones de usuario, la pila y el bloque de control de proceso. Respecto a los hilos, Solaris considera tres tipos de hilos distintos: Hilos a nivel de usuario: se implementan en el espacio de direcciones de un proceso por medio de la biblioteca de hilos y son invisibles para el sistema operativo. Procesos ligeros: un proceso ligero (lightweight process, LWP) es una correspondencia entre un hilo a nivel de usuario y un hilo a nivel del ncleo. Cada LWP soporta uno o ms HU y los hace corresponder con un HN. El ncleo

planifica los LWP independientemente y pueden ejecutarse en paralelo en entornos multiprocesador. Hilos a nivel de ncleo: son las entidades bsicas de planificacin en cada uno de los procesadores del sistema. En la siguiente figura se muestra la arquitectura de hilos multinivel de Solaris. Hay que observar que existe exactamente un hilo el ncleo por cada LWP. Un LWP es visible para la aplicacin dentro del proceso, de modo que las estructuras de datos LWP estn dentro de los espacios de direcciones de los procesos. A su vez, cada LWP est ligado a un nico hilo del ncleo cuya estructura de datos se mantiene dentro del espacio de direcciones del ncleo.

Arquitectura multihilo de Solaris El proceso 1 est formado por un nico HU ligado a un nico LWP, lo que equivale al concepto de proceso UNIX clsico. Esta configuracin ser til cuando la aplicacin no necesite la concurrencia dentro del proceso. El proceso 2 responde a una estrategia HU pura, donde un nico LWP soporta a todos los HUs, por lo que slo uno de ellos puede ejecutarse en cada instante. Esta configuracin resultara til en aplicaciones que pueden programarse mejor por mtodos concurrentes aunque no necesiten la ejecucin de mltiples hilos en paralelo. El proceso 3 hace corresponder a mltiples HUs sobre un nmero menor o igual de LWPs. Esto permite que la aplicacin especifique el grado de paralelismo que soportara a nivel de ncleo.

El proceso 4 tiene sus HUs asociados permanentemente a los LWPs uno a uno. Esto permite que el paralelismo a nivel de ncleo sea accesible para la aplicacin. Resulta til cuando uno de los hilos tiene a bloquearse con frecuencia. El proceso 5 muestra tanto una correspondencia de mltiples HUs sobre mltiples LWPs como la unin exclusiva de un HU con un LWP, estando adems ese LWP ligado a un procesador concreto, lo que permite conseguir un tiempo de respuesta apropiado para aplicaciones de tiempo real.

Estados de LWP e HU en Solaris. Estados de los Hilos

Los estados de los HUs de usuario y LWPs van a depender de si el HU est o no ligado al LWP. Consideremos primero el caso de los hilos no ligados, aquellos que comparten varios LWPs. Un hilo no ligado puede estar en uno de los cuatro estados siguientes: ejecutable, activo, dormido o parado. Un HU en el estado activo est asignado a un LWP que se ejecuta mientras el HN subyacente se ejecute. Un hilo puede dejar el estado activo por varias razones:

Sincronizacin: el hilo utiliza una primitiva de sincronizacin con otros hilos. El sistema pasa el hilo al estado de dormido. Suspensin: cualquier hilo, incluido el mismo, puede suspender a un hilo haciendo que pase al estado de parado. El hilo permanecer en ese estado hasta que el otro hilo realice una peticin de continuacin. Apropiacin: cuando un hilo de mayor prioridad pasa a ejecutable expulsa al que est en ejecucin para ocupar su lugar asocindose al LWP y ejecutndose. Cesin: un hilo en ejecucin puede invocar a la funcin thr_yield() para ver si existe otro hilo ejecutable con la misma prioridad que l, en cuyo caso le ceder el LWP, pasando a ejecutable. Si no encuentra el hilo adecuado seguir activo.

Estructura de un proceso en Solaris.


Estructura de los Hilos

Las estructuras que soportan los hilos en Solaris son las siguientes: Hilos de usuario: identificador del hilo, el conjunto de registros del usuario, la pila y la prioridad. Procesos ligeros: conjunto de registros del usuario, la prioridad, la pila y la referencia al hilo del ncleo que lo soporta.

Hilos del ncleo: los registros del ncleo, un apuntador al LWP, e informacin sobre la prioridad y la planificacin.

Linux Para analizar y completar el estudio sobre el modo en que los principales sistemas operativos abordan el tema de los hilos habr que estudiar el caso del sistema operativo Linux, dado el incremento en el nmero de implantaciones que se est dando. El nico problema es que Linux no considera los hilos como tales. 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. Cuando dos procesos comparten la memoria, operan en efecto como hilos dentro del mismo espacio, del mismo proceso. Sin embargo, no se manejan estructuras de datos para los hilos diferentes de las de los procesos, por lo que se puede argumentar que Linux no hace diferencias entre hilos y procesos.

Conclusiones
En esta leccin se ha presentado y analizado el concepto de hilo partiendo del concepto de proceso destacando, entre otras, las siguientes conclusiones: Los hilos surgen al disociar las caractersticas de propiedad de los recursos de la de ejecucin de cdigo que los procesos mantenan bajo una misma identidad. Los sistemas multihilo son aquellos que pueden soportar la existencia de varios hilos por proceso. Este tipo de sistemas facilita tanto la sincronizacin entre procesos como la alternancia de estos en el procesador. Se han descrito los estados posibles de los hilos como ejecucin, listo y bloqueado y se han analizado las transiciones entre ellos. Se han distinguido entre dos tipos de hilos: los de usuario y los del ncleo, basndose en el criterio de dnde se realiza la gestin de los hilos. A partir de estos dos tipos de hilos se pueden tener tres casos de sistemas: hilos a nivel de usuario, hilos a nivel del ncleo y sistemas mixtos. En cada caso se han descrito las ventajas e inconvenientes de su utilizacin. Se han presentado las principales caractersticas de la gestin de hilos en tres casos distintos: la mquina virtual Java, Windows 2000 y Solaris; resultando de

este anlisis que los hilos se implementan los distintos sistemas reales de muy diversas maneras.

Вам также может понравиться