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

UptoLike

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

45
байт данных), и аналогично импульсам сигналы могут ставиться в очередь.
Однако в отличие от импульса сигналы способны прерывать исполнение
программного потока, и в этом качестве они подобны аппаратным прерыва-
ниям. Системные вызовы для обмена сигналами представлены в табл. 3.7.
Таблица 3.7
Вызовы микро-
ядра
POSIX-вызовы Описание
SignalKill()
kill(), pthread_kill(), raise(),
sigqueue()
Послать сигнал к потоку, процессу или
группе процессов
SignalAction() sigaction(), signal()
Определить действие, которое нужно вы-
полнить при приеме сигнала
SignalProcmask()
sigprocmask(),
pthread_sigmask()
Изменить маску блокировки сигналов для
потока
SignalSuspend() sigsuspend(), pause()
Блокировать поток, пока сигнал обраба-
тывается
SignalWaitinfo() sigwaitinfo()
Ожидать сигнал и возвратить информа-
цию при приеме сигнала
Спецификация POSIX первоначально определяла порядок обработки
сигналов только для процессов. Процесс может определить следующие ва-
рианты поведения при получении сигнала:
1. Игнорировать сигнал. Поступивший сигнал не обрабатывается и те-
ряется. Необходимо отметить, что 3 сигнала не могут быть проигнорирова-
ныэто SIGSTOP, SIGCONT, SIGTERM (остановить процесс, продолжить
процесс, завершить процесс).
2. Блокировать сигнал (другой равноправно используемый термин
это «маскировать сигнал»). Ядро поддерживает для потока атрибут, назы-
ваемый маской сигналов. Действие сигнальной маски подобно действию ре-
гистра маски контроллера прерываний. Если сигнал замаскирован, то он не
может быть обработан, но он не теряется и обрабатывается после снятия
маски.
3. Вызвать собственный обработчик сигнала, который был предвари-
тельно зарегистрирован.
4. Использовать обработчик по умолчанию. Обычно обработчик по
умолчанию уничтожает процесс.
Для многопоточных приложений стандарт POSIX в дальнейшем допол-
нен следующими правилами:
Действие сигнала, направленного к потоку, распространяется на
весь процесс.
Каждый поток имеет свою сигнальную маску.