Когда ОС проверяет сигналы? - PullRequest
2 голосов
/ 22 июля 2011

Для простоты давайте предположим, что это на одноядерной архитектуре.

Основная ответственность ОС - назначать процессорное время различным процессам.

Когда он проверяет сигналы?

Могу поспорить, что он проверяет это при переключении контекста (зависание процесса A и ожидание B), но у меня нет никаких доказательств ..

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Ответ, к сожалению, зависит от ОС.На большинстве, если не на всех, сигналы ОС являются объектами, управляемыми событиями.Например, в случае аппаратного прерывания аппаратное обеспечение отправляет сигнал обработчику прерываний, который затем выполняет свою работу, обычно при переключении контекста (как вы предложили).

Это зависит от ОСточно, но в случае сигнала, посылаемого конкретной программой, это обычно происходит, когда вы переключаете контекст для выполнения процесса.Затем сигналы проверяются.В случае kill команда kill «привязана» к процессу, и обработчик прерываний ОС позаботится об этом.

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

Короткий, но неудовлетворительный ответ: это зависит отсигнал и на ОС.

Надеюсь, это поможет!NS

Источники: я программировал операционные системы раньше, и я взял несколько классов параллелизма.

2 голосов
/ 22 июля 2011

Это не опрашивает их, если это то, что вы имеете в виду. Когда кто-то просит ядро ​​отправить сигнал, он прерывает программу для его обработки.

Segfaults запускаются аппаратными прерываниями. Обработчик прерываний просит ядро ​​передать сообщение. Таймауты похожи.

Это все зависит от событий. Хотя некоторые события быстро и просто оставляют сообщения для последующего сбора - движения мыши и т. Д. То, что происходит дальше, очень зависит от системы, но это уже не сигнал .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...