La biblioteca de subprocesos POSIX nativos ( NPTL ) es una implementación de la especificación de subprocesos POSIX para el sistema operativo Linux .
Historia
Antes de la versión 2.6 del kernel de Linux , los procesos eran las entidades planificables y no existían funcionalidades especiales para los hilos . [ 1 ] Sin embargo, sí contaba con una llamada al sistema —clone— que creaba una copia del proceso que la llamaba, donde la copia compartía el espacio de direcciones del proceso que la llamaba. El proyecto LinuxThreads utilizó esta llamada al sistema para proporcionar hilos a nivel del kernel (la mayoría de las implementaciones anteriores de hilos en Linux funcionaban completamente en el espacio de usuario ). Desafortunadamente, solo cumplía parcialmente con POSIX, particularmente en las áreas de manejo de señales, planificación y primitivas de sincronización entre procesos.
Para mejorar LinuxThreads, era evidente que se requería soporte del kernel y una nueva biblioteca de subprocesos. Se iniciaron dos proyectos competidores para abordar este requisito: NGPT (Next Generation POSIX Threads), desarrollado por un equipo que incluía programadores de IBM , y NPTL, desarrollado por programadores de Red Hat . El equipo de NGPT colaboró estrechamente con el de NPTL y combinó las mejores características de ambas implementaciones en NPTL. El proyecto NGPT fue posteriormente abandonado a mediados de 2003 tras integrar sus mejores características en NPTL.
NPTL se lanzó por primera vez en Red Hat Linux 9. El antiguo sistema de subprocesos POSIX de Linux es conocido por tener problemas con subprocesos que se niegan a ceder el control al sistema en ocasiones, ya que no aprovecha la oportunidad para interrumpirlos cuando surge la necesidad, algo que Windows hacía mejor en aquel entonces. Red Hat afirmó que NPTL solucionó este problema en un artículo del sitio web de Java sobre Java en Red Hat Linux 9. [ 2 ]
NPTL ha formado parte de Red Hat Enterprise Linux desde la versión 3, y del kernel de Linux desde la versión 2.6. Ahora es una parte totalmente integrada de la biblioteca C de GNU . [ 3 ]
Existe una herramienta de rastreo para NPTL, llamada POSIX Thread Trace Tool ( PTT ). Además, se desarrolló Open POSIX Test Suite ( OPTS ) para probar la biblioteca NPTL conforme al estándar POSIX.
Diseño
Al igual que LinuxThreads, NPTL es una biblioteca de hilos 1:1. Los hilos creados por la biblioteca (a través de pthread_create ) se corresponden uno a uno con entidades programables en el kernel ( procesos , en el caso de Linux). [ 4 ] : 226 Este es el más simple de los tres modelos de hilos (1:1, N:1 y M:N). [ 4 ] : 215–216 Los nuevos hilos se crean con la llamada al sistema clone() invocada a través de la biblioteca NPTL. NPTL se basa en el soporte del kernel para futexes para implementar de manera más eficiente los bloqueos en el espacio de usuario. [ 4 ] : 182
Véase también
Referencias
Enlaces externos
- Herramienta de rastreo NPTL: herramienta de código abierto para rastrear y depurar aplicaciones multihilo que utilizan NPTL.
- núcleo de Linux
- Biblioteca C POSIX
- Hilos (informática)