【发布时间】:2021-07-31 06:08:13
【问题描述】:
标题说明了一切:)。
但是,让我扩展一个特定的案例。
所以,到目前为止,我已经研究了所有需要硬件交互的系统调用(如 read()、write() 等),因此在执行这些系统调用之前切换到内核模式是有意义的(trap 指令)。
据我了解,信号纯粹是软件构造,这意味着它们不是由硬件直接生成的(与中断不同)。我理解它们是进程(内核-内核、内核-用户或用户-用户进程)之间的消息传递机制。
Kill 是一个系统调用,用于向进程发送信号。它不直接与硬件交互。那么为什么我们需要昂贵地切换到内核模式来执行该系统调用呢?我没有发现任何“特殊”系统调用的证据,这些系统调用在开始执行之前不会陷入内核模式。因此,问题。
【问题讨论】:
标签: linux linux-kernel operating-system signals system-calls