En los sistemas operativos tradicionales, cada proceso tiene
un espacio de direcciones y un solo hilo de control. De hecho, ésa es casi la
definición de un proceso. Sin embargo, con frecuencia hay situaciones en las
que es conveniente tener varios hilos de control en el mismo espacio de
direcciones que se ejecuta en cuasi-paralelo, como si fueran procesos (casi)
separados (excepto por el espacio de direcciones compartido). En las siguientes
secciones hablaremos sobre estas situaciones y sus implicaciones.
Uso de hilos
¿Por qué alguien querría tener un tipo de proceso dentro de
otro proceso? Resulta ser que hay varias razones de tener estos miniprocesos,
conocidos como hilos. Ahora analizaremos algunos de ellos. La principal razón
de tener hilos es que en muchas aplicaciones se desarrollan varias actividades
a la vez. Algunas de ésas se pueden bloquear de vez en cuando. Al descomponer
una aplicación en varios hilos secuenciales que se ejecutan en cuasi-paralelo,
el modelo de programación se simplifica. Ya hemos visto este argumento antes:
es precisamente la justificación de tener procesos. En vez de pensar en
interrupciones, temporizadores y conmutaciones de contexto, podemos pensar en
procesos paralelos. Sólo que ahora con los hilos agregamos un nuevo elemento:
la habilidad de las entidades en paralelo de compartir un espacio de
direcciones y todos sus datos entre ellas. Esta habilidad es esencial para
ciertas aplicaciones, razón por la cual no funcionará el tener varios procesos
(con sus espacios de direcciones separados). Un segundo argumento para tener
hilos es que, como son más ligeros que los procesos, son mas fáciles de crear
(es decir, rápidos) y destruir. En muchos sistemas, la creación de un hilo es
de 10 a 100 veces más rápida que la de un proceso. Cuando el número de hilos
necesarios cambia de manera dinámica y rápida, es útil tener esta propiedad.
Una tercera razón de tener hilos es también un
argumento relacionado con el rendimiento. Los hilos no producen un aumento en
el rendimiento cuando todos ellos están ligados a la CPU, pero cuando hay una
cantidad considerable de cálculos y operaciones de E/S, al tener hilos estas
actividades se pueden traslapar, con lo cual se agiliza la velocidad de la
aplicación. Por último, los hilos son útiles en los sistemas con varias CPUs,
en donde es posible el verdadero paralelismo. En el capítulo 8 volveremos a ver
esta cuestión. Es más fácil ver por qué los hilos son útiles si utilizamos
ejemplos concretos. Como primer ejemplo considere un procesador de palabras.
Por lo general, los procesadores de palabras muestran el documento que se va
crear en la pantalla exactamente como aparecerá en la página impresa. En
especial, todos los saltos de línea y de página están en sus posiciones
correctas y finales, de manera que el usuario pueda inspeccionarlas y cambiar
el documento si es necesario (por ejemplo, para eliminar viudas y huérfanas,
líneas superiores e inferiores incompletas que se consideran estéticamente desagradables.

No hay comentarios:
Publicar un comentario