Se recomienda leer las siguientes secciones del libro de Silberschatz: 4.1 a 4.3 inclusiv
El modelo de procesos mencionado anteriormente asume que un proceso era un programa en ejecución con un único hilo de control. Sin embargo, virtualmente todos los sistemas operativos brindan características que permiten que un proceso contenga múltiples hilos de control. Identificar oportunidades de paralelismo mediante el uso de subprocesos se está volviendo cada vez más importante para los sistemas multinúcleo modernos que proporcionan varias CPU’s.
En este capítulo, se introducen varios conceptos asociados a los sistemas de computación multihilos.
Un hilo es una unidad básica de utilización de CPU, este contiene un Identificador de hilo, un contador de programa (PC), un conjunto de registro, y un Stack. Comparte con otros hilos pertenecientes al mismo proceso su sección de código, la sección de data, y otros recursos del sistema operativo, como archivos abiertos y señales.
<aside> 💡 Si tomamos un proceso y vamos haciendo un seguimiento de cada instrucción que se va ejecutando una por una, vamos a ir formando una especie de línea o hilo (thread en inglés), entonces tengo un hilo de ejecución.
</aside>
Un proceso tradicional tiene un único hilo de control. Si un proceso tiene múltiples hilos de control, puede realizar más de una tarea a la vez.
El siguiente gráfico muestra la diferencia entre un proceso de un único hilo y otro multihilo, notar que el proceso multihilo comparte la sección de code,data y files, pero cada uno tiene sus propios registros, stack y el PC.
Muchas aplicaciones también pueden aprovechar el uso de múltiples hilos, incluidos algoritmos básicos de ordenamiento, árboles y gráficos. Además, los programadores que deben resolver problemas contemporáneos de uso intensivo de CPU en minería de datos, gráficos e inteligencia artificial pueden aprovechar el poder de los sistemas multinúcleo modernos al diseñar soluciones que se ejecutan en paralelo.
Al principio los sistemas tenían procesos y estos tenían un único thread de ejecución. Este único hilo de control permite que el proceso realice solo una tarea a la vez. Por ejemplo, cuando un proceso está corriendo un procesador de texto, una instrucción de un único hilo se esta ejecutando ,esta permite controlar una única tarea al a vez, el usuario no podría tipear caracteres mientras utiliza el corrector de ortografía.
La mayoría de los sistemas operativos modernos han ampliado el concepto de proceso para permitir que un proceso tenga múltiples hilos de ejecución y, por lo tanto, realizar más de una tarea a la vez. Esta característica es especialmente beneficiosa en sistemas multinúcleos , donde varios hilos pueden ejecutarse en paralelo. Un procesador multihilos podría, por ejemplo, asignar un hilo para administrar la entrada del usuario mientras otro hilo ejecuta el corrector ortográfico. En los sistemas que admiten hilos, el PCB se expande para incluir información para cada hilo.