Средства обработки сигналов

 

Сигнал – это программное прерывание, уведомляющее процесс о наступлении определенного события. Процесс может игнорировать либо маскировать сигнал – временно игнорировать его, а также перехватывать (catch) сигнал и определять для ОС свою процедуру его обработки или действия по умолчанию: обычно – игнорирование сигнала, либо аварийное завершение процесса с возможным дампом (выводом) памяти, либо приостановка процесса, либо его возобновление.

Сигнал – одно из средств взаимодействия (коммуникации, синхронизации) процессов. Сигнал не позволяет передавать какие-либо данные. Примеры сигналов – операции P(S) и V(S) над семафорами.

 

Понятие событийного программирования [1 c. 69 – 88; 2 разд. 4.1–4.4]

 

ОС Windows и ее приложения представляют собой программы, управляемыесобытиями (или сообщениями - message). Последовательность их действий определяется очередью сообщений о событиях. В Windows есть системная очередь сообщений иочередь сообщенийдлякаждогоприложения.

Сообщения драйверов устройств о событиях низкого уровня (нажатии/отпускании клавиши на клавиатуре или кнопки мыши, перемещении мыши) поступают в системную очередь. На их основе Windows передает каждому приложению сообщения обо всех касающихся его событиях пользовательского интерфейса: нажатии в его окне экранной кнопки или выборе строки меню с определенным идентификатором (номером), срабатывании таймера, необходимости перерисовать окно при передвижении окон и т. п. Приложения могут посылать сообщения друг другу (и себе). В ответ на сообщение приложение выполняет соответствующие действия.

Windows сама привязывает мышь и клавиатуру к органам пользовательского интерфейса приложения: иконкам (пиктограммам), окнам, меню, экранным кнопкам, линейкам прокрутки, курсорам, панелям диалога. Приложение избавлено от необходимости отслеживать текущие координаты объектов интерфейса и мыши, коды нажимаемых клавиш или участвовать в выполнении стандартных команд системного меню своего окна.

Упрощенно говоря, например, информация "Кнопка мыши отпущена в точке экрана с координатами (50, 100)" подается приложению в виде "Выбран пункт 5 меню 1 окна 2".

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

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

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

Система многозадачного планирования Windows также встроена в ее механизм доставки сообщений.

Пользователь может запустить сразу несколько программ (Windows-приложений). Каждая программа должна создать собственное главное окно приложения со стандартным для Windows-приложений графическим интерфейсом и организовать обработку сообщений Windows.

 

Средства коммуникации процессов [1 c. 31–39, 93 – 98, 104–110; 2 3.4.2–3.4.3]

 

Сообщения, сигналы, семафоры, в Windows XP – объекты ядра event (событие) и др.