Главная » 2017 » Ноябрь » 18 » man 7 nptl
21:22
man 7 nptl

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


nptl - библиотека нитей POSIX



ОПИСАНИЕ


NPTL (Native POSIX Threads Library — библиотека нитей POSIX) это библиотека GNU C,
в которой реализованы нити POSIX, используется в современных версиях Linux.

NPTL и сигналы
Внутри NPTL используются два первых сигнала реального времени (с номерами 32 и
33). Один из них служит для поддержки удаления (cancellation) нитей и таймеров
POSIX (смотрите timer_create(2)); второй используется как часть механизма
обеспечения всех нитей в одном процессе единым UID и GID, как того требует POSIX.
Данные сигналы нельзя использовать в приложениях.

Чтобы не допустить случайного использования этих сигналов в приложениях, что может
помешать работе реализации NPTL, в различных функциях библиотеки glibc и
обёрточных функциях системных вызовов добавлено сокрытие этих сигналов от
приложений:

* Сигнал SIGRTMIN определён со значением 34 (а не 32).

* Интерфейсы sigwaitinfo(2), sigtimedwait(2) и sigwait(3) игнорируют запросы на
ожидание этих сигналов, если но указаны в аргументе набора сигналов.

* Интерфейсы sigprocmask(2) и pthread_sigmask(3) игнорируют попытки блокировки
этих сигналов.

* Интерфейсы sigaction(2), pthread_kill(3) и pthread_sigqueue(3) завершаются с
ошибкой EINVAL (указан некорректный номер сигнала), если заданы эти сигналы.

* Функция sigfillset(3) не включает эти сигналы при создании полного набора
сигналов.

NPTL и изменение идентификаторов процесса
На уровне ядра Linux идентификаторы (пользовательский и групповой ID) являются
атрибутов нити. Однако в POSIX требуется, чтобы все нити POSIX одного процесса
имели одинаковые идентификаторы. Для удовлетворения этого требования в реализации
NPTL для всех системных вызовов, изменяющих идентификаторы процесса, созданы
обёрточные функции, которые при обращении к нижележащим вызовам, также изменяют
идентификаторы и всем остальным нитям процесса.

В реализации каждого из этих системных вызовов используется сигнал реального
времени, который посылается (с помощью tgkill(2)) всем остальным нитях, которым
нужно изменить идентификаторы. Перед отправкой этих сигналов, нить, у которой
изменяются идентификаторы, сохраняет новые идентификаторы и записывает
использующийся системный вызов в глобальный буфер. Обработчик сигнала в
принимающей нити извлекает эту информацию и использует тот же системный вызов для
изменения своих идентификаторов.

Обёрточные функции, использующие такую же технику: setgid(2), setuid(2),
setegid(2), seteuid(2), setregid(2), setreuid(2), setresgid(2), setresuid(2) и
setgroups(2).



СООТВЕТСТВИЕ СТАНДАРТАМ


Дополнительную информацию о соответствии NPTL стандарту POSIX находится в
pthreads(7).




Категория: (7) Различные описания, соглашения и прочее | Просмотров: 482 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar