Библиотека потоков POSIX

Библиотека потоков POSIX (англ. Native POSIX Thread Library, англ. NPTL) — набор программного кода, позволяющего ядру операционной системы Linux достаточно эффективно выполнять программы, использующие потоки POSIX. В настоящее время интегрирована в библиотеку glibc.

По тестам, проведённым на 32-битной архитектуре (IA-32), NPTL успешно стартует 100 тысяч потоков примерно за 2 секунды. Для сравнения — ядру без поддержки NPTL требуется около 15 минут.[1][2]

История

В версиях Linux до 2.6 не существовало реальной потоковой архитектуры, хотя поддерживался, например, системный вызов clone(), создававший копию вызвавшего его процесса в том же адресном пространстве памяти, что и сам процесс. В частности, проект LinuxThreads использовал этот системный вызов для организации поддержки потоков в рамках одного адресного пространства. К сожалению, эта библиотека имела проблемы с совместимостью со стандартом POSIX, в том числе по обработке сигналов реального времени, диспетчеризации и межпроцессных синхронизирующих примитивов.

Для исправления ситуации были начаты два проекта — NGPT (Next Generation POSIX Threads, Потоки POSIX следующего поколения), разрабатывавшийся в том числе разработчиками IBM, и NPTL, разрабатываемого сотрудниками Red Hat. NGPT был закрыт в середине 2003 года, спустя некоторое время после выпуска NPTL.

NPTL имеет некоторые сходства с LinuxThreads, такие как первичная абстракция ядра - тоже процесс, или новые потоки создаются вызовом clone(). Для синхронизации потоков NPTL использует поддержку со стороны ядра (системный вызов futex).

NPTL включена в дистрибутив Red Hat Enterprise Linux с версии 3, и является частью glibc.

Определение версии библиотеки потоков в системе

Версию можно узнать следующей командной строкой:

getconf GNU_LIBPTHREAD_VERSION

Команда выдаст версию установленной по умолчанию библиотеки потоков на любой Linux-системе.

Программы, использующие NPTL

  • Linux-версия Google Earth (клиент) декларирует необходимость NPTL для запуска.
  • Реализация OpenMP от Sun Microsystems базируется на библиотеке Solaris libpthread, являющейся, в свою очередь, реализацией NPTL. Начиная с Solaris 10 библиотека libpthread представляет собой фильтр, а реализация предоставляемых ею функций находится в библиотеке libc.

Примечания

  1. Robert Love. Introducing the 2.6 Kernel (англ.). Linux Journal. Belltown Media, Inc.. Архивировано 21 января 2012 года.
  2. Ulrich Drepper, Ingo Molnar. The Native POSIX Thread Library for Linux (англ.) (PDF). Red Hat, Inc. (21 февраля 2005). Архивировано 21 января 2012 года.

Ссылки

  • NPTL Trace Tool, утилита отладки программ, использующих NPTL  (англ.)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.