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

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

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

История

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

Для исправления ситуации были начаты два проекта — (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. (англ.) . Linux Journal . Belltown Media, Inc.. 21 января 2012 года.
  2. Ulrich Drepper, Ingo Molnar. (англ.) (PDF). Red Hat, Inc. (21 февраля 2005). 21 января 2012 года.

Ссылки

  • , утилита отладки программ, использующих NPTL (англ.)
Источник —

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