El concepto de proceso engloba dos conceptos separados y potencialmente
independientes: uno relativo a la propiedad de recursos y otro que hace referencia a la
ejecución.
Unidad que posee recursos: A un proceso se le asigna un espacio de memoria y, de tanto
en tanto, se le puede asignar otros recursos como dispositivos de E/S o ficheros.
Unidad a la que se le asigna el procesador: Un proceso es un flujo de ejecución (una traza)
a través de uno o más programas. Esta ejecución se entremezcla con la de otros procesos.
De tal forma, que un proceso tiene un estado (en ejecución, listo, etc) y una prioridad de
expedición u origen. La unidad planificada y expedida por el sistema operativo es el proceso.
En la mayoría de los sistemas operativos, estas dos características son, de hecho, la
esencia de un proceso. Sin embargo, son independientes, y pueden ser tratadas como tales
por el sistema operativo. Esta distinción ha conducido en los sistemas operativos actuales
a desarrollar la construcción conocida como thread, cuyas traducciones más frecuentes son
hilo, hebra y proceso ligero. Si se tiene esta división de características, la unidad de
asignación de la CPU se conoce como hilo, mientras que a la unidad que posee recursos
se le llama proceso.
Diferencia entre Proceso e Hilo
Un proceso es una entidad relativamente independiente que dispone de su propio
espacio de direcciones, su propia información de estado y que utiliza los mecanismos de
comunicación entre procesos que le proporciona el sistema operativo para comunicarse con
otros procesos.
Por otro lado, un hilo es una entidad más reducida capaz de convivir junto a otros
hilos bajo el contexto de un único proceso, permitiendo compartir la información de estado,
el área de memoria y/o los recursos asociados a ese proceso.
Dentro de un proceso puede haber uno o más hilos de control cada uno con:
Un estado de ejecución (en ejecución, listo, bloqueado).|
Un contexto de procesador, que se salva cuando no esté ejecutándose.
Una pila de ejecución.
Algún almacenamiento estático para variables locales.
Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros hilos.
Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: se tarda
menos tiempo en crear un nuevo hilo de un proceso que ya existe, en terminarlo, y en hacer
un cambio de contexto entre hilos de un mismo proceso. Al someter a un mismo proceso a
varios flujos de ejecución se mantiene una única copia en memoria del código, y no varias.
Un ejemplo de aplicación que podría hacer uso de los hilos es un servidor de ficheros de
una red de área local. Cada vez que llega una solicitud de una operación sobre un fichero,
se puede generar un nuevo hilo para su gestión. El servidor gestiona multitud de solicitudes,
por tanto, se pueden crear y destruir muchos hilos en poco tiempo para dar servicio a estas
peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de un mismo
proceso simultáneamente y en diferentes procesadores.
Procesos ligeros
Un proceso ligero (thread o hebra) es un programa en ejecución que comparte la imagen
de la memoria y otras informaciones con otros procesos ligeros.
Se comparten recursos. La compartición de la memoria permite a las hebras pares
comunicarse sin usar ningún mecanismo de comunicación inter-proceso del SO.
La conmutación de contexto es más rápida gracias al extenso compartir de recursos No hay protección entre las hebras. Una hebra puede escribir en la pila de otra hebradel mismo proceso
Otro ejemplo de caso en el que son útiles los hilos es el de los navegadores de la
World Wide Web, como Netscape y Mosaic. Muchas páginas Web contienen múltiples
imágenes pequeñas. Para cada imagen de una página Web, el navegador debe establecer
una conexión individual con el sitio de la página de casa y solicitar la imagen. Se desperdicia
una gran cantidad de tiempo estableciendo y liberando todas estas conexiones. Si tenemos
múltiples hilos dentro del navegador, podemos solicitar muchas imágenes al mismo tiempo,
acelerando considerablemente el rendimiento en la mayor parte de los casos, ya que en el
caso de imágenes pequeñas el tiempo de preparación es el factor limitante, no la rapidez
de la línea de transmisión.
Entre los elementos que son distintos para cada hilo están el contador de programa, los
registros y el estado. El contador de programa se necesita porque los hilos, al igual
que los procesos, pueden suspenderse y reanudarse. Los registros se necesitan
porque cuando los hilos se suspenden sus registros deben guardarse. Por último, los
hilos, al igual que los procesos, pueden estar en los estados de ejecutándose, listo o
bloqueado.
No hay comentarios.:
Publicar un comentario