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