Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Сигнальный механизм

Сигнальный механизм UNIX (в MS-DOS не документирован и не стандартизирован) позволяет процессам и операцоинной системе обмениваться информацией в реальном масштабе времени.

Сигналы различаются своими номерами - целыми числами, начиная с 1 (сигнал 0 - зарезервирован). Среди них: аварийное завершение, арифметическая исключительная ситуация, разрыв связи, недопустимая инструкция, нарушение защиты памяти, запись в програмный канал, не открытый для чтения, а также различные сигналы завершений. Кроме стандартных сигналов, процесс может определить собственные - 'пользовательские' сигналы.

Сигнал генерируется, когда происходит событие, вызывающее сигнал или вызывается специальная системная функция, аргументами которой являются номер сигнала и идентификаторы процессов, которым необходимо послать данный сигнал. Одно и то же событие может вызвать посылку сиганала нескольким процессам.

На каждый сигнал, определенный в системе, процесс должен иметь реакцию - действие, которое он выполняет при получении сигнала. Когда вызывается определенная для данного процесса и сигнала реакция, считается, что сигнал передан процессу, которому он был предназначен.

Сигнал может быть блокирован от передачи процесссу. Если реакция на сгенерированный блокированный сигнал отлична от игнориривания, то сигнал остается непереданным либо до снятия с него блокировки, либо до установки на него реакции игнорирования. Если на такой сигнал задана реакция игнорирования то от реализации зависит, будет ли такой сигнал немедленно удален или останется непереданным.

Каждый процесс имеет сигнальную маску, определяющую множество сигналов, блокированных от передачи процессу. Эта маска наследуется процессом при порождении и может быть изменена во время работы процесса.

Допустимы три вида реакции на сигнал: игнорировние, перехват и стандартная реакция системы, перехват и вызов функции внутри процесса. Перехват и игнорирование сигналов приостановки и уничтожения процесса невозможны.