Introducción a los Hilos (extracto de M. Vegas Hernandez)

Resumen

En esta lección se van a tratar los aspectos avanzados de la gestión de procesos que proponen al modelo de hilos (threads) como una for­ma más compleja de considerar a los procesos que la de los sistemas operativos tradicionales. Así, los procesos se van a concebir como elementos compuestos por dos partes distintas, relacionadas cada una de ellas con la utilización de los recursos y con la ejecución, respectivamente. Esto influye tanto en la forma de representación de los pro­cesos en el sistema como en la planificación de los procesos en su paso por el procesador, aspectos estos que serán estudiados en esta lección. Para ilustrar el tema se estudiaran tres casos distintos de concepción de los hilos: a nivel de usuario, a nivel de núcleo y mixto.

 


  • Introducción

La concepción clásica de los sistemas operativos considera al proceso como un elemento que aúna las dos características siguientes:

  • Propiedad de los recursos.
  • Ejecución del programa.

Un proceso incluye un espacio de direcciones virtuales que contiene la imagen del proceso, además de los apuntadores asociados a los recursos asignados al proceso por el sistema operativo, tales como la memoria principal, los canales de E/S y los archivos. Así mismo, el proceso es la consecuencia de la ejecución de uno o más programas, y junto con el resto de los procesos del sistema se alterna en el uso del procesador.

En la mayoría de los sistemas operativos estas dos características son el fundamento del concepto de proceso y aparecen indisoluble- mente unidas. Sin embargo, en otros sistemas operativos más recientes estas dos características se presentan como independientes y son tratadas de ese modo por el sistema operativo. En los sistemas que hacen esto a la unidad de procesamiento o ejecución se la conoce como hilo (thread), mientras que a la unidad de propiedad de los recursos se le llama proceso o tarea.

 


  • Objetivos

El cambio en la concepción de la ejecución de los programas hace que varíe la forma en que se representan y planifican por el sistema operativo los procesos clásicos convertidos ahora en hilos. Así, los objetivos de esta lección son los siguientes:

  1. Definir el concepto de hilo, presentando las ventajas e inconvenientes respecto al concepto de proceso clásico en distintas arquitecturas mono y multiprocesador.
  2. Analizar la forma de representación en el sistema operativo de los hilos.
  3. Describir los estados en los que se puede encontrar un hilo, así como las transiciones entre ellos.
  4. Presentar las distintas maneras en que se implementan los hilos en los sistemas actuales, estudiando un caso de cada una de ellas.

 


  • Procesos: Representación y Planificación

Antes de entrar en la materia propia de esta lección conviene repasar algunas ideas en cuanto a la representación y la planificación de los procesos clásicos.

 


  • Descripción de Procesos

En esencia, el sistema operativo puede ser visto como una entidad que administra el uso que hacen los procesos de los recursos del sistema. Si el sistema operativo tiene que administrar los procesos y los recursos entonces tiene que disponer de información sobre el estado actual de cada proceso y cada recurso. En la mayoría de los sistemas operativos esto se consigue manteniendo una tabla de información so­bre cada entidad que administra. En general, los sistemas operativos mantienen tablas sobre la memoria, los dispositivos E/S, los archivos y los procesos; todas ellas interrelacionadas según se observa en la Figura 1.

Centrándonos en las tablas de procesos, y antes de tratar las cuestiones de donde y como se ubican los procesos y sus atributos con­viene considerar cual es la información asociada a un proceso. Como mínimo, un proceso deberá incluir el programa o programas a ejecutar. Asociados a estos programas esta un conjunto de direcciones de datos para las variables locales y globales así como para las constantes predefinidas. Así pues, un proceso constara, al menos, de la memoria suficiente para albergar los programas y los datos del mismo. Además de esto, en la ejecución de un programa entra en juego una pila que lleva cuenta de la secuencia de llamadas a procedimientos así como

de sus argumentos. Por último, están una serie de atributos utiliza- dos por el sistema operativo para identificar y controlar el proceso. A estos últimos atributos se les conoce como bloque de control del proce­so, mientras que a los programas, datos y pila se les llama imagen del proceso.

En los sistemas de multiprogramación, además se requiere de una gran cantidad de información relativa a la administración de los pro­cesos. Normalmente, esta información forma parte también del blo­que de control del proceso. Considerando todo lo expuesto anterior- mente, la información del bloque de control del proceso se puede agrupar en tres categorías distintas:

  • Identification del proceso, con los identificadores del proceso, del proceso padre que lo creo y del usuario.
  • Information del estado del procesador, con los registros visibles por el usuario, los registros de control y de estado y los punteros de pila.
  • Information de control del proceso, con información de planificación y de estado, relaciones con otros procesos, los privilegios, la gestión de la memoria y la propiedad de los recursos y su utilización.

Se podría decir que el bloque de control de proceso es la información más importante de un sistema operativo, ya que estos bloques son leídos y modificados por casi todos los módulos del sistema ope­rativo.

La forma que adopta cada entrada de la tabla de procesos se puede ver en la Figura 2.

Dependiendo de la concepción misma del sistema operativo, puede que tenga que considerarse como relevante alguna información más a la hora de construir la tabla de procesos. Así, en los sistemas operativos en los que parte de los mismos se ejecutan dentro de los procesos de usuario, también hay que considerar dentro del proce­so la pila del núcleo que se utiliza en la ejecución de las rutinas del sistema operativo dentro del proceso.

— Seguimos la próxima —

Dejá un comentario