Собственная библиотека потоков POSIX - Native POSIX Thread Library

В Собственная библиотека потоков POSIX (NPTL) является реализацией Потоки POSIX спецификация для Linux Операционная система.

История

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

Было ясно, что для улучшения LinuxThreads потребуется некоторая поддержка ядра и новая библиотека потоков. Для удовлетворения этого требования были запущены два конкурирующих проекта: NGPT (Потоки POSIX следующего поколения) работали командой, в которую входили разработчики из IBM, и NPTL разработчиками на Красная шляпа. Команда NGPT тесно сотрудничала с командой NPTL и объединила лучшие характеристики обеих реализаций в NPTL. Впоследствии проект NGPT был заброшен в середине 2003 года после объединения его лучших функций в NPTL.

NPTL был впервые выпущен в Red Hat Linux 9. Многопоточность Linux POSIX в старом стиле известна тем, что у нее возникают проблемы с потоками, которые время от времени отказываются уступать системе, потому что она не использует возможность вытеснять их, когда они возникают, что было в Windows известно, что в то время они лучше. Red Hat заявила, что NPTL исправила эту проблему в статье о Ява сайт о Java в Red Hat Linux 9.[1]

NPTL был частью Red Hat Enterprise Linux начиная с версии 3, а в ядре Linux с версии 2.6. Теперь это полностью интегрированная часть Библиотека GNU C.[2]

Существует инструмент отслеживания NPTL, который называется Инструмент отслеживания потоков POSIX (PTT ). И Откройте POSIX Test Suite (OPTS ) был написан для тестирования библиотеки NPTL на соответствие стандарту POSIX.

Дизайн

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

NPTL - это так называемая библиотека потоков 1 × 1, в которой потоки создаются пользователем (через pthread_create () библиотечная функция) находятся в соответствии 1-1 с планируемыми объектами в ядре (задачами в случае Linux). Это простейшая возможная реализация потоковой передачи.

Альтернативой модели NPTL 1 × 1 является м × п модель.

Смотрите также

Рекомендации

внешняя ссылка

  • Инструмент трассировки NPTL Инструмент с открытым исходным кодом для отслеживания и отладки многопоточных приложений с использованием NPTL.