Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 47 стр.

UptoLike

Составители: 

47
конкретному потоку, при необходимости ставятся в очередь на обработку
(Thread Signal queue). Такие сигналы называются захваченными.
POSIX разделяет сигналы на две группы: стандартные сигналы (вклю-
чая 32 UNIX-сигнала) и сигналы реального времени. Механизм очередности
поддерживается только для сигналов реального времени. При отсутствии
очередности новый сигнал замещает висящий необработанный сигнал, ко-
торый теряется. Для стандартных сигналов не существуют также понятия
кода и значения сигнала. В отличие от POSIX QNX Neutrino поддерживает
опциональную очередность для всех сигналов, и каждый сигнал имеет 8-
битный код Code и 32-битное значение Value. Сигналы с положительным
значением кода используются для системных целей, a для пользователя
определен диапазон кодов от –128 до 0. Всего поддерживается 64 сигнала.
Все сигналы пронумерованы, многие из них имеют символическое обозна-
чение, отражающее системное назначение сигнала. Специализация сигна-
лов в зависимости от номера показана в табл. 3.8.
Таблица 3.8
Номер сигнала Назначение
1...57 57 POSIX-сигналов (включая традиционные UNIX-сигналы)
41...56 16 POSIX-сигналов реального времени (от SIGRTMIN до SIGRTMAX)
57...64 8 сигналов для специальных целей QNX Neutrino
Номер сигнала определяет приоритет его доставки: чем меньше номер
сигнала, тем выше его приоритет. Восемь сигналов для специальных целей
не могут быть игнорированы или захвачены. Любая попытка вызова функ-
ции signal() или sigaction(), или SignalAction() будет терпеть неудачу. Более
того, эти сигналы всегда блокированы, попытка деблокирования через
sigpromask() или SignalProcmask() будет игнорироваться. Специальные сиг-
налы всегда упорядочиваются в очередь и могут быть приняты только
блокирующей функцией sigwaitinfo(). Эти сигналы используются для
передачи уведомления клиенту с помощью вызова MsgDeliverEvent() (вызов
будет рассмотрен далее), а также для поддержки механизма событий в
графической системе Photon и уведомлений ввода/вывода в
множественных серверах.
При обработке сигнала с номером signo программа обработки маски-
рует сигнал signo, тем самым предотвращая вложенность обработки для
сигналов того же самого номера. Когда выполняется возврат из обработчи-
ка, прежняя маска восстанавливается и любые висящие и немаскирован-
ные сигналы становятся активными. Реакция на сигнал должна быть задана