Инфо IT 24

IT блог, IT мышление

Запуск процесса

Запуск процессаПри анализе последнего примера следует обратить внимание на то, что если сигналы SIGALRM или SIGINT будут получены процессом до того, как функцией signal установлены обработчики этих сигналов, то будет вызвана не функция handlerQ, а обработчик сигнала по умолчанию. Для данной конкретной программы эта проблема не слишком существенна, поскольку время, которое пройдет между запуском процесса и установкой сигналов, заведомо меньше того времени, которое пройдет между запуском процесса и посылкой ему первого сигнала. Однако если бы перед установкой сигналов программа выполняла некоторые действия, требующие значительных вычислительных ресурсов, а значит, и времени на выполнение, мы уже не смогли бы гарантировать того, что обработчики сигналов будут установлены до получения первого сигнала.

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

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

Статью опубликовал: i24TbloG

Метки:

Из каталога:

Программирование Linux Part B

Предыдущая статья:

Следующая статья: