Библиотека потоки POSIX ( NPTL ) является реализацией POSIX Threads спецификации для Linux операционной системы.
История
До версии ядра Linux 2.6 процессы были планируемыми объектами, и не было специальных средств для потоков . [ необходима цитата ] Однако у него был системный вызов - clone - который создает копию вызывающего процесса, где копия разделяет адресное пространство вызывающего. Проект LinuxThreads использовал этот системный вызов для предоставления потоков уровня ядра (большинство предыдущих реализаций потоков в Linux работали полностью в пользовательском пространстве ). К сожалению, он лишь частично соответствовал POSIX, особенно в области обработки сигналов, планирования и примитивов синхронизации между процессами.
Было ясно, что для улучшения LinuxThreads потребуется некоторая поддержка ядра и новая библиотека потоков. Для удовлетворения этого требования были начаты два конкурирующих проекта: NGPT ( потоки POSIX следующего поколения), над которыми работала команда, в которую входили разработчики из IBM , и NPTL, разработанные разработчиками из Red Hat . Команда NGPT тесно сотрудничала с командой NPTL и объединила лучшие особенности обеих реализаций в NPTL. Впоследствии проект NGPT был заброшен в середине 2003 года после объединения его лучших функций в NPTL.
NPTL был впервые выпущен в Red Hat Linux 9. Многопоточность Linux POSIX в старом стиле известна тем, что у нее возникают проблемы с потоками, которые время от времени отказываются подчиняться системе, потому что она не использует возможность вытеснять их, когда они возникают, что было Известно, что в то время дела шли лучше. Red Hat утверждает , что NPTL устранили эту проблему в статье на Java веб - сайт о Java на Red Hat Linux 9. [1]
NPTL является частью Red Hat Enterprise Linux с версии 3 и в ядре Linux с версии 2.6. Теперь полностью интегрированная часть GNU C Library . [2]
Существует инструмент отслеживания NPTL, который называется POSIX Thread Trace Tool ( PTT ). И Open POSIX Test Suite ( OPTS ) был написан для тестирования библиотеки NPTL на соответствие стандарту POSIX.
Дизайн
NPTL использует подход, аналогичный LinuxThreads, в котором основная абстракция, известная ядру, по-прежнему является процессом, а новые потоки создаются с помощью системного вызова clone () (вызываемого из библиотеки NPTL). Однако NPTL требует специализированной поддержки ядра для реализации (например) состязательного случая примитивов синхронизации, которые могут потребовать, чтобы потоки снова переходили в спящий и пробуждаемый режим. Используемый для этого примитив известен как фьютекс .
NPTL - это так называемая библиотека потоков 1 × 1, в которой потоки, созданные пользователем (с помощью pthread_create()
функции библиотеки), находятся в соответствии 1-1 с планируемыми объектами в ядре (задачами в случае Linux). Это простейшая из возможных реализаций потоковой передачи.
Альтернатива 1 × 1 модели NPTL является м × п модель .
Смотрите также
Рекомендации
Внешние ссылки
- NPTL Trace Tool Инструмент с открытым исходным кодом для отслеживания и отладки многопоточных приложений с использованием NPTL.