Большинство действий, связанных с доставкой сигнала потоку, выполняется в контексте этого потока. Поток проверяет свое поле td_siglist на предмет наличия ожидающих сигналов по крайней мере один раз при входе в систему, вызывая cursigQ.
SLEEPING - Поток заблокирован в ожидании события. Если поток находится в состоянии непрерываемого сна, больше ничего не должно предприниматься. В противном случае ядро может предпринять действие - либо непосредственно, либо косвенно, - пробудив поток. Есть два действия, которые можно применить непосредственно. Для сигналов, вызывающих остановку процесса, все потоки в процессе помещаются в состояние STOPPED и родительский процесс уведомляется об изменении состояния посредством отправки ему сигнала SIGCHLD.
Реализация сигналов разделена на две части, первая из которых - отправка сигнала процессу, а вторая - распознавание сигнала и доставка его потоку назначения. Сигналы может отправлять любой процесс или код, который выполняется на уровне прерывания. Доставка сигнала обычно имеет место в контексте получающего потока. Но когда сигнал форсирует остановку процесса, действие может быть проведено для всех потоков, связанных с этим процессом в тот момент, когда сигнал был отправлен.
Сигналы первоначально были спроектированы для моделирования исключительных событий, таких, как попытка пользователя завершить вышедшую из-под контроля программу. Они не предназначались для использования в качестве общего механизма межпроцессного взаимодействия, поэтому не было сделано попытки сделать их надежными. В более ранних системах каждый раз при перехвате сигнала восстанавливалось его действие по умолчанию.
Описание сигналов указывается для каждого процесса. Если процесс не указал действие на сигнал, ему предоставляется действие по умолчанию которое может быть одним из следующих:
UNIX определяет набор сигналов для программных и аппаратных условий, которые могут возникнуть во время нормального выполнения программы; эти сигналы перечислены в таблице. Сигналы могут доставляться процессу через определенные приложением обработчики сигналов или могут заканчиваться действиями по умолчанию, такими, как завершение процесса, осуществляемыми системой. Сигналы FreeBSD спроектированы как программные эквиваленты аппаратных прерываний или исключений.