Библиотека потоков POSIX
Библиотека потоков POSIX (англ. Native POSIX Thread Library, англ. NPTL) — набор программного кода, позволяющего ядру операционной системы GNU/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
Команда выдаст версию установленной по умолчанию библиотеки потоков на любой GNU/Linux системе.
Программы, использующие NPTL
- GNU/Linux версия Google Earth (клиент) декларирует необходимость NPTL для запуска.
- Реализация OpenMP от Sun Microsystems базируется на библиотеке Solaris libpthread, являющейся, в свою очередь, реализацией NPTL. Начиная с Solaris 10, библиотека libpthread представляет собой фильтр, а реализация предоставляемых ею функций находится в библиотеке libc.
Примечания
- ↑ Robert Love Introducing the 2.6 Kernel (англ.). Linux Journal. Belltown Media, Inc..
- ↑ Ulrich Drepper, Ingo Molnar The Native POSIX Thread Library for Linux (англ.) (PDF). Red Hat, Inc. (2005-02-21).
Ссылки
- NPTL Trace Tool, утилита отладки программ, использующих NPTL (англ.)
- Сравнение двух библиотек потоков: LinuxThreads и NPTL (англ.)
de:Native POSIX Thread Library en:Native POSIX Thread Library fi:Native POSIX Thread Library ja:Native POSIX Thread Library pl:Native POSIX Thread Library pt:Native POSIX Thread Library zh:Native POSIX Thread Library
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....