На языке C под сигналами понимается форма внутренней программной связи, обнаруженная в signal.h. Возможно, вы могли бы сравнить их с «событиями» или «исключениями» на других языках или в ОС. Это была попытка дать языковую поддержку такой функциональности ОС. http://en.wikipedia.org/wiki/Signal.h
Программное прерывание относится к конкретным прерываниям в ЦП, которые были вызваны ошибкой программного обеспечения на низком фундаментальном уровне, т.е. выполнением неизвестного OP-кода или попыткой доступа к неиспользуемым областям памяти. Программное прерывание вызывается самим ЦП, а не ОС или приложением.
Аппаратные прерывания - это любые другие виды прерываний, которые не являются программными. Они вызываются самим процессором. Их природа зависит от приложения и оборудования.