Как процесс узнает это, он получил сигнал

Я использую Lucida Console в течение многих лет и никогда ничего не нахожу лучше.

Однако я попробовал несколько раз шрифты Consolas и просто - я предпочитаю Lucida Console.

20
задан ghayalcoder 7 December 2009 в 14:05
поделиться

3 ответа

Ответ зависит от реализации :). В Mac OS X (и FreeBSD) сигналы обрабатываются асинхронно - ядро ​​находит поток, который не блокирует сигнал, и устанавливает флаг асинхронной системной ловушки для этого потока. В следующий раз, когда ядро ​​планирует этот поток, оно обрабатывает ловушку (завершает процесс, игнорирует ловушку или при необходимости вызывает обработчик сигналов в пользовательском пространстве), а не организует обычное продолжение потока в пользовательском пространстве.

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

Linux делает нечто подобное. Солярису (I '

12
ответ дан 30 November 2019 в 01:21
поделиться

The short answer is - yes, process get knowledge of a signal only on the next scheduled CPU timeslice.

How to know the process has received a signal - it may call sigprocmask(2).

4
ответ дан 30 November 2019 в 01:21
поделиться

Процесс P1 выполняется на ЦП 1, а процесс P2 выполняется на ЦП2, и теперь процесс P2 (с достаточными привилегиями) отправляет сигнал процессу P1. Будет ли этот сигнал доставлен на P1 прямо сейчас или он будет доставлен после того, как P1 по какой-то причине откажется от ЦП и снова будет перенесен через некоторое время ядром, а затем этот сигнал будет доставлен процессу P1.

Насколько i знать на последних ядрах linux выполнение P1 может быть приостановлено, когда P2 излучает сигнал, и сигнал будет доставлен немедленно. Может быть это верно только для сигналов в реальном времени

0
ответ дан 30 November 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: