Fío (informática)

En informática, un fío de execución (thread en inglés) é a secuencia máis pequena de instrucións programadas que pode ser xestionada de forma independente por un planificador, que normalmente forma parte do sistema operativo. En moitos casos, un fío é un compoñente dun proceso.

Os múltiples fíos dun proceso dado poden executarse simultaneamente (mediante capacidades de multifío), compartindo recursos como a memoria, mentres que diferentes procesos non comparten estes recursos. En particular, os fíos dun proceso comparten o seu código executábel e os valores das súas variables asignadas dinamicamente e variables globais non locais de fíos en calquera momento dado.

 Historia 
Os fíos apareceron cedo co nome de «tarefas» (tasks en inglés) no sistema operativo de procesamento por lotes de IBM, OS/360, en 1967. Proporcionaban aos usuarios tres configuracións dispoñibles do sistema de control OS/360, das cales a multiprogramación cun número variable de tarefas (MVT) era unha. Saltzer (1966) atribúe a Victor A. Vyssotsky o termo thread.

A implementación de Mach dos fíos foi descrita no verán de 1986. OS/2 1.0, lanzado en 1987, admitía fíos. A primeira versión de Windows en ter fíos foi Windows NT, que se lanzou en 1993.

En 1995, o IEEE definiu a API pthreads, que estandarizou unha interface para a programación multiproceso portátil nunha variedade de sistemas operativos tipo Unix. Desde entón, pthreads tamén se implementou en Windows con paquetes de terceiros como pthreads-w32, que implementa o estándar enriba da API de Windows existente.

O uso de fíos nas aplicacións de software volveuse máis común a principios da década de 2000, cando as CPU comezaron a utilizar varios núcleos. As aplicacións que desexaban aproveitar varios núcleos para obter vantaxes de rendemento víronse obrigadas a empregar a concorrencia para utilizar os múltiples núcleos.

 Notas 

 Véxase tamén 
 Outros artigos 
 Multitarefa

 Ligazóns externas 


Categoría:Tecnoloxía de sistemas operativos
Categoría:Computación concorrente