Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 663 из 715

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

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

алгоритм sighandle /* алгоритм обработки сигналов */

входная информация: отсутствует

выходная информация: отсутствует

{

 if (текущий процесс является чьим-то спутником или имеет прототипа)  {

  if (сигнал игнорируется)  return;

  if (сигнал поступил во время выполнения системной функции)

   поставить сигнал перед процессом-спутником;

  else  послать сообщение о сигнале периферийному процессу;

  }

  else { /* периферийный процесс */

   /* поступил ли сигнал во время выполнения системной  функции или нет */

  послать сигнал процессу-спутнику;

 }

}

алгоритм sat

|< Пред. 661 662 663 664 665 След. >|

Java книги

Контакты: [email protected]