Библиотека потоков POSIX
Библиотека потоков POSIX (англ. Native POSIX Thread Library, англ. NPTL) - набор программного кода, позволяющего ядру операционной системы GNU/Linux достаточно эффективно выполнять программы, использующие потоки POSIX.
По тестам, проведённым на 32-битной архитектуре (IA-32) NPTL успешно стартует 100 тысяч потоков примерно за 2 секунды. Для сравнения - ядру без поддержки NPTL требуется около 15 минут. [Источник?]
Содержание |
История
В версиях ядра 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 для запуска.
Ссылки
- Руководство по NPTL (английский)
- NPTL Trace Tool, утилита отладки программ, использующих NPTL (английский)
- Сравнение двух библиотек потоков: LinuxThreads и NPTL (английский)