Biblioteca nativa de subprocesos POSIX - Native POSIX Thread Library

La biblioteca de subprocesos POSIX nativa ( 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 entidades programables y no había instalaciones especiales para los subprocesos . Sin embargo, tenía una llamada al sistema , clon , que crea una copia del proceso de llamada donde la copia comparte el espacio de direcciones de la persona que llama. El proyecto LinuxThreads utilizó esta llamada al sistema para proporcionar subprocesos a nivel de kernel (la mayoría de las implementaciones de subprocesos anteriores en Linux funcionaban completamente en el área de usuario ). Desafortunadamente, solo cumplió parcialmente con POSIX, particularmente en las áreas de manejo de señales, programación y primitivas de sincronización entre procesos.

Para mejorar LinuxThreads, estaba claro que se requeriría algo de soporte del kernel y una nueva biblioteca de subprocesos. Se iniciaron dos proyectos en competencia para abordar el requisito: NGPT (Next Generation POSIX Threads) en el que trabajó un equipo que incluía desarrolladores de IBM y NPTL de desarrolladores de Red Hat . El equipo de NGPT colaboró ​​estrechamente con el equipo de NPTL y combinó las mejores características de ambas implementaciones en NPTL. El proyecto NGPT fue posteriormente abandonado a mediados de 2003 después de fusionar sus mejores características en NPTL.

NPTL se lanzó por primera vez en Red Hat Linux 9. El subproceso POSIX de Linux de estilo antiguo es conocido por tener problemas con los subprocesos que se niegan a ceder al sistema ocasionalmente, porque no aprovecha la oportunidad para adelantarse a ellos cuando surge, algo que Windows conocido por hacerlo mejor en ese momento. Red Hat afirmó que NTPL fijado este problema en un artículo sobre el Java web sobre Java en Red Hat Linux 9.

NPTL ha sido parte de Red Hat Enterprise Linux desde la versión 3 y en el kernel de Linux desde la versión 2.6. Ahora es una parte totalmente integrada de la Biblioteca de C de GNU .

Existe una herramienta de rastreo para NPTL, llamada Herramienta de rastreo de subprocesos POSIX ( PTT ). Y se escribió un Open POSIX Test Suite ( OPTS ) para probar la biblioteca NPTL con el estándar POSIX.

Diseño

NPTL utiliza un enfoque similar a LinuxThreads, ya que la abstracción primaria conocida por el kernel sigue siendo un proceso, y se crean nuevos hilos con la llamada al sistema clone () (llamada desde la biblioteca NPTL). Sin embargo, NPTL requiere soporte de kernel especializado para implementar (por ejemplo) el caso de las primitivas de sincronización que podrían requerir que los subprocesos se suspendan y se reactiven nuevamente. La primitiva utilizada para esto se conoce como futex .

NPTL es la así llamada biblioteca de subprocesos 1 × 1, ya que los subprocesos creados por el usuario (a través de la pthread_create()función de biblioteca) están en correspondencia 1-1 con entidades programables en el kernel (tareas, en el caso de Linux). Esta es la implementación de subprocesos más simple posible.

Una alternativa al modelo de 1 × 1 de NPTL es la m × n modelo .

Ver también

Referencias

enlaces externos