在内核空间中执行的进程如何知道意外(asynchronous)事件的发生?

我有两个问题:

1) 内核空间进程 :当进程在内核模式下执行时,它不会收到任何信号

相反,当一个进程希望完成任何事件时,它将把自己置于一个wait-queue 。 比如完成一个I/O event 。 这个过程在这个阶段没有做任何事情。 一旦事件被触发,( 内核设置一个trap ?如果错误正确的 ),最后这个进程被唤醒并恢复执行。

以上是预期事件或(同步)的情况。 但是我想了解,在内核模式下执行的进程是如何知道asynchronous事件的发生的?

2) 用户空间进程 :内核是否总是设置一个trap来隐藏在用户空间中执行的进程,以使得信号已经接收到? (一旦pending-signals-mask设置?)

请回答这个问题关于在Linux中的实现(或它的味道)。