Biblioteca de subprocesos POSIX

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 20 de septiembre de 2017; las comprobaciones requieren 5 ediciones .

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]

Historia

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 .

Determinación de la versión de la biblioteca de subprocesos en el sistema

La versión se puede encontrar con la siguiente línea de comando:

getconf GNU_LIBPTHREAD_VERSION

El comando le dará la versión de la biblioteca de subprocesos predeterminada en cualquier sistema Linux.

Programas que usan NPTL

  • La versión Linux de Google Earth (cliente) declara la necesidad de ejecutar NPTL.
  • La implementación de OpenMP de Sun Microsystems se basa en la biblioteca libpthread de Solaris , que a su vez es una implementación de NPTL. A partir de Solaris 10, la biblioteca libpthread es un filtro y la implementación de las funciones que proporciona está en la biblioteca libc.

Notas

  1. Roberto Amor. Presentamos el Kernel 2.6  . Diario Linux . Archivado desde el original el 21 de enero de 2012, Belltown Media, Inc.
  2. Ulrich Drepper, Ingo Molnar. La biblioteca de subprocesos POSIX nativos para Linux  (inglés) (PDF). sombrero rojo inc. (21 de febrero de 2005). Archivado desde el original el 21 de enero de 2012.

Enlaces