Buscar este blog

sábado, 15 de enero de 2011

2.5 Procesos e Hilos
Se ha presentado el concepto de proceso incluyendo las dos características siguientes:
·         Unidad de propiedad de los recursos: a cada proceso se le asigna un espacio de direcciones virtuales para albergar a la imagen del proceso y, de cuando en cuando, al proceso se le puede asignar memoria virtual y otros recursos, tales como canales de E/S, dispositivos de E/S y archivos.
·         Unidad de expedición: un proceso es un camino de ejecución (traza) a través de uno o más programas. Esta ejecución puede ser intercalada con la de otros procesos. De este modo, un proceso tiene un estado (Ejecución, Listo, etc.) y una prioridad de expedición. La unidad planificada y expedida por el S.O. es el proceso.
En la mayoría de los sistemas operativos, estas dos características son, de hecho, la esencia de un proceso. Para distinguir estas dos características, la unidad de expedición es llamada thread y la unidad de propiedad de los recursos, task. Un thread (también llamado hilo, hebra o proceso liviano) es, básicamente, la unidad de utilización de la CPU.
Multi-threading
Algunos sistemas operativos soportan múltiples hilos en la ejecución dentro de un proceso simple. Esto es conocido como multi-threading. Los procesos continúan teniendo un PCB y una cantidad de memoria para el usuario, pero cada hilo que pertenece a dicho proceso tiene un bloque de control de hilos, una pila de usuario y una pila de kernel propias.
Implementación de los hilos
Existen dos características generales en la implementación de los hilos:
·         Hilos de nivel usuario: en este nivel todo el trabajo de los hilos es realizado por la aplicación y el kernel no se percata de la existencia de dichos hilos. Una aplicación (que puede ser programada para ser multithread usando bibliotecas de hilos) comienza con un hilo simple. La aplicación y su hilo son localizados en un proceso simple administrado por el kernel. La generación de nuevos hilos es realizada invocando al utilitario que se encuentra en la biblioteca de hilos.
·         Hilos de nivel kernel: tiene la desventaja de que el cambio de hilos requiere siempre la intervención del kernel. No hay un código de administración de hilos en el área de la aplicación, sino simplemente una interface de una aplicación programada (API) para el kernel. El kernel mantiene la información del contexto del proceso entero y de cada uno de los procesos hilos que se encuentran dentro del mismo. La ventaja que presenta es que si uno de estos procesos hilos se encuentra en estado bloqueado, el kernel puede ejecutar otro proceso hilo del mismo padre.
Algunas características de los threads
Los threads poseen las siguientes características:
·         Tienen un pequeño estado no compartido
·         Un threads individual tiene su propio registro de estado y generalmente su propio Stack
·         Los hilos pueden estar en uno de los siguientes estados: listos, bloqueados, ejecutando o terminados. O sea, igual que un proceso tradicional. Los hilos comparten CPU, por lo que un solo hilo puede estar ejecutándose.
·         Un hilo dentro de un proceso se ejecuta secuencialmente.
·         Los hilos pueden crear hilos hijos.
·         Un hilo puede leer o escribir sobre cualquier otra pila de otro hilo. No se provee protección porque no es necesaria, ya que solo un usuario puede tener una tarea individual con múltiples hilos.
·         Una tarea no hace nada sin hilos y un hilo debe estar en una tarea
·         Un cambio de contexto en el hilo requiere un cambio en el juego de registros, pero el trabajo relacionado con manejo de memoria no es necesario hacerlo.
·         Un hilo único a nivel usuario ejecutando un System Call causará a la tarea entera esperar hasta que el System Call sea devuelto.

No hay comentarios:

Publicar un comentario