Introduccion
Qué es un Thread? ¿Qué es un Proceso? Un Proceso es algo que te resulta bastante familiar. Si lanzas Microsoft Word y VFP, entonces tienes dos procesos separados que están corriendo al mismo tiempo aunque sólo tengas una CPU. El sistema operativo asigna tiempo a cada uno de los procesos y pasa de uno a otro según le interesa. En un sistema multitarea no-preemptivo (un tarea es sinónimo de un proceso) tal como Windows 3.1, un proceso puede paralizar la ejecución de otro proceso, pues el sistema operativo pasa un mensaje a cada proceso y este lo interpreta, mientras un proceso interpreta un mensaje los demás procesos están detenidos. En un sistema multitarea preemptivo, la CPU realiza un reparto del tiempo de ejecución entre las intrucciones de todos procesos.
Una arquitectura de aplicación basada en un sólo proceso no funciona bien en un servidor de aplicaciones Web. Un usuario con un Browser en Hawaii hace un hit en tu Web y tu servidor Web empieza a procesar la petición. Al mismo tiempo viene otro usuario de Nueva zelanda, y tiene que esperar hasta que la primera petición ha finalizado. Una posible solución a este problema es tener múltiples procesos sirviendo a estas peticiones, de forma que puedan ser respondidas de forma más o menos simultanea. Esto es lo que hacen los CGI. (cada CGI crea un nuevo proceso que crea una página y a continuación termina.) Sin embargo, esto conlleva un uso intensivo en recursos y es ineficiente.
Una mejor solución es tener muchos threads (hilos) dentro de un solo proceso capaz de procesar las peticiones de la Web. Cada proceso tiene un thread principal, pero puede crear muchos threads privados para su propio uso. El sistema operativo no sólo es perfectamente feliz haciendo eso y saltando de un thread a otro dentro del mismo proceso sino que no asigna necesariamente un espacio de memoria a cada uno de los threats privados, mejorando considerablemente el uso de los recursos. Por esta razón los threads gozan de mucha eficiencia. La arquitectura ISAPI se basa en múltiples threads. Cada hit en la web usa uno de un pool de threads para responder a las peticiones.
No hay comentarios:
Publicar un comentario