Собственная библиотека потоков POSIX
Собственная библиотека потоков POSIX ( NPTL ) — это реализация спецификации потоков POSIX для операционной системы Linux .
История
[ редактировать ]До версии ядра Linux 2.6 процессы были запланированными объектами, и для потоков не было специальных средств . [ 1 ] Однако у него был системный вызов — клон — который создает копию вызывающего процесса, где копия разделяет адресное пространство вызывающего процесса. Проект LinuxThreads ) использовал этот системный вызов для обеспечения потоков уровня ядра (большинство предыдущих реализаций потоков в Linux работали полностью в пользовательской области . К сожалению, он лишь частично соответствовал POSIX, особенно в области обработки сигналов, планирования и примитивов межпроцессной синхронизации.
Было ясно, что для улучшения LinuxThreads потребуется некоторая поддержка ядра и новая библиотека потоков. Для удовлетворения этого требования были начаты два конкурирующих проекта: NGPT (Next Generation POSIX Threads), над которым работала команда, в которую входили разработчики из IBM , и NPTL, разработанный разработчиками из Red Hat . Команда NGPT тесно сотрудничала с командой NPTL и объединила лучшие функции обеих реализаций в NPTL. Впоследствии проект NGPT был заброшен в середине 2003 года после слияния его лучших функций с NPTL.
NPTL был впервые выпущен в Red Hat Linux 9. Потоки в старом стиле Linux POSIX известны тем, что иногда возникают проблемы с потоками, которые иногда отказываются подчиняться системе, поскольку не используют возможность вытеснить их, когда они возникают, что было в Windows. известно, что в то время дела шли лучше. Red Hat заявила, что NPTL исправила эту проблему в статье на веб-сайте Java о Java в Red Hat Linux 9. [ 2 ]
NPTL является частью Red Hat Enterprise Linux начиная с версии 3 и ядра Linux начиная с версии 2.6. Теперь это полностью интегрированная часть C. библиотеки GNU [ 3 ]
Существует инструмент трассировки NPTL, который называется POSIX Thread Trace Tool ( PTT ). И был написан Open POSIX Test Suite ( OPTS ) для тестирования библиотеки NPTL на соответствие стандарту POSIX.
Дизайн
[ редактировать ]Как и LinuxThreads, NPTL представляет собой библиотеку потоков 1:1. Потоки, созданные библиотекой (через pthread_create ), соответствуют один к одному с планируемыми объектами в ядре ( процессами в случае Linux). [ 4 ] : 226 Это самая простая из трех моделей резьбы (1:1, N:1 и M:N). [ 4 ] : 215–216 Новые потоки создаются с помощью системного вызова clone(), вызываемого через библиотеку NPTL. NPTL опирается на поддержку фьютексов ядром для более эффективной реализации блокировок пользовательского пространства. [ 4 ] : 182
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ pthreads(7) — страница руководства Linux
- ^ Red Hat Linux 9 и платформа Java 2, Standard Edition 1.4.2: выигрышная комбинация
- ^ Выпуск библиотеки GNU C версии 2.3.3.
- ^ Jump up to: а б с Роберт Лав (2013). Системное программирование Linux (2-е изд.). О'Рейли Медиа, Инкорпорейтед. ISBN 978-1449339531 .
Внешние ссылки
[ редактировать ]- Инструмент трассировки NPTL Инструмент с открытым исходным кодом для отслеживания и отладки многопоточных приложений с использованием NPTL.