La biblioteca de subprocesos POSIX ( ing. Biblioteca de subprocesos POSIX nativa , ing. NPTL ) es un conjunto de código de programa que permite que el kernel del sistema operativo Linux ejecute de manera eficiente programas que utilizan subprocesos POSIX . Actualmente integrado en la biblioteca glibc .
Según las pruebas realizadas en una arquitectura de 32 bits ( IA-32 ), NPTL inicia con éxito 100 000 subprocesos en aproximadamente 2 segundos. A modo de comparación, un núcleo sin soporte NPTL tarda unos 15 minutos. [1] [2]
En las versiones de Linux anteriores a la 2.6, no había una arquitectura de subprocesos real, aunque había soporte, por ejemplo, para la llamada al sistema clone () , que creaba una copia del proceso que lo llamaba en el mismo espacio de direcciones de memoria que el proceso. sí mismo. En particular, el proyecto LinuxThreads usó esta llamada al sistema para proporcionar soporte para subprocesos dentro del mismo espacio de direcciones. Desafortunadamente, esta biblioteca tenía problemas de compatibilidad con POSIX , incluido el procesamiento de señales en tiempo real, el envío y las primitivas de sincronización entre procesos.
Para remediar la situación, se lanzaron dos proyectos: NGPT (Next Generation POSIX Threads, POSIX Threads of the next generation), desarrollado por desarrolladores de IBM , y NPTL, desarrollado por empleados de Red Hat . NGPT se cerró a mediados de 2003 , algún tiempo después del lanzamiento de NPTL.
NPTL tiene algunas similitudes con LinuxThreads, como que la abstracción principal del kernel también es un proceso, o se crean nuevos hilos llamando a clone(). Para sincronizar subprocesos, NPTL utiliza el soporte del núcleo (la llamada al sistema futex).
NPTL se ha incluido en la distribución de Red Hat Enterprise Linux desde la versión 3 y forma parte de glibc .
La versión se puede encontrar con la siguiente línea de comando:
getconf GNU_LIBPTHREAD_VERSIONEl comando le dará la versión de la biblioteca de subprocesos predeterminada en cualquier sistema Linux.