У меня есть два вопроса:
1) Процесс ядра. Когда процесс выполняется в режиме ядра, он не получает никаких сигналов.
Вместо этого процесс ставит себя в wait-queue
, когда он ожидает получить завершение любого события. Например, завершение I/O event
. На этом этапе процесс не делает ничего. После запуска события (ядро устанавливает trap
? Правильно, если неверно), и, наконец, процесс просыпается и возобновляется.
Выше приведен пример ожидаемых событий или (синхронный). Но я хочу понять, как процесс, выполняющийся в режиме ядра, узнает о возникновении асинхронных событий?
2) Процесс пользовательского пространства. Является ли ядро всегда устанавливающим trap
для интронизации процесса, выполняющегося в пространстве пользователя, чтобы установить, что сигнал получен? (Как только pending-signals-mask
установлен?)
Пожалуйста, ответьте на этот вопрос относительно реализации в Linux (или это вкусно).