stringtranslate.com

Biblioteca de subprocesos POSIX nativa

La biblioteca nativa de subprocesos POSIX ( 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 . [1] 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 funcionaron completamente en el espacio de usuario ). Desafortunadamente, solo cumplía 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 necesitaría algo de soporte para el kernel y una nueva biblioteca de subprocesos. Se iniciaron dos proyectos competitivos para abordar el requisito: NGPT (Next Generation POSIX Threads) trabajado por un equipo que incluía desarrolladores de IBM , y NPTL por 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. Posteriormente, el proyecto NGPT fue 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. Los subprocesos POSIX de Linux de estilo antiguo son conocidos por tener problemas con subprocesos que se niegan a ceder al sistema ocasionalmente, porque no aprovecha la oportunidad para adelantarse a ellos cuando surgen, algo que Windows hizo. conocido por hacerlo mejor en ese momento. Red Hat afirmó que NPTL solucionó este problema en un artículo en el sitio web de Java sobre Java en Red Hat Linux 9. [2]

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 GNU C. [3]

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

Diseño

Al igual que LinuxThreads, NPTL es una biblioteca de subprocesos 1:1. Los subprocesos 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 roscado (1:1, N:1 y M:N). [4] : 215–216  Se crean nuevos subprocesos con la llamada al sistema clone() llamada a través de la biblioteca NPTL. NPTL se basa en el soporte del kernel para futexes para implementar bloqueos de espacio de usuario de manera más eficiente. [4] : 182 

Ver también

Referencias

  1. ^ pthreads(7) - página del manual de Linux
  2. ^ Plataforma Red Hat Linux 9 y Java 2, edición estándar 1.4.2: una combinación ganadora
  3. ^ Lanzamiento de la versión 2.3.3 de la biblioteca GNU C
  4. ^ a b C Robert Love (2013). Programación del sistema Linux (2ª ed.). O'Reilly Media, Incorporada. ISBN 978-1449339531.

enlaces externos