UNIVERSIDAD AUTONOMA DEL ESTADO DE HIDALGO

Multithread
Home
Bases de Datos Distribuidas
Multitasking
Multithread
EAI
Inteligencia Artificial
KDD
Garry Kasparov
PigeonHole
John Koza
John Holland
Notación Polaca

Enter subhead content here

MULTITHREAD

Un thread o hilo es un “semi-proceso”, que tiene su propia pila, y que ejecuta una porción de código dada. A diferencia de un proceso real, un thread normalmente comparte su memoria con otros threads (en la cual, tal como sucede con los procesos, cada thread tendrá asignado su espacio de memoria).

Un grupo de threads es un conjunto de “hilos de ejecución” que están corriendo todos dentro del mismo proceso. Dado que comparten todos la misma porción de memoria, pueden acceder a las mismas variables globales, la misma memoria de heap, los mismos descriptores de archivos, etc. Todos corren en paralelo (por ejemplo: usando porciones del tiempo asignado al proceso en general o, si están dentro de un sistema con multiprocesadores, pueden eventualmente correr de forma paralela realmente).

La ventaja de usar un grupo de threads en lugar de un programa normal en serie es que muchas operaciones pueden ser llevadas a cabo de forma paralela y, de esta forma, los eventos asociados a cada actividad pueden ser manejados inmediatamente tan pronto como llegan (por ejemplo: si tenemos un thread manejando la interface de usuario y otro manejando las consultas a una base de datos, podremos ejecutar consultas complejas realizadas por el usuario y aun así responder a la entrada del mismo mientras la consulta está siendo ejecutada).

La ventaja de usar un grupo de threads en vez de un grupo de procesos es que el cambio de contexto entre threads es realizado mucho más rápidamente que el cambio de contexto entre procesos (un cambio de contexto significa que el sistema operativo cambia la ejecución de un thread o proceso a la ejecución de otro). Por lo tanto, las comunicaciones entre dos threads son usualmente más rápidas y sencillas de implementar que las comunicaciones entre dos procesos.

Por otro lado, debido a que los threads dentro de un grupo comparten el mismo espacio de memoria, si uno de ellos corrompe el espacio de su memoria, los otros threads también sufrirán las consecuencias. Con un proceso, el sistema operativo normalmente protege a un proceso de otros y si un proceso corrompe su espacio de memoria los demás no se verán afectados.

Multithreading vs. Single threading

Así como podemos tener múltiples procesos corriendo en nuestra PC, también podemos tener múltiples threads corriendo. De esta forma aparecen dos grandes grupos de sistemas operativos respecto de la forma de ejecución de threads.

Single threading

·         cuando el sistema operativo no reconoce al concepto de thread.

Multithreading

·         cuando el sistema operativo soporta múltiples threads de ejecución dentro de un proceso

Enter supporting content here