如果是标准信号和实时信号 等待进程,POSIX 留下未指明的是 首先交付。 Linux,和许多人一样 其他实现, 在这种情况下,优先考虑标准信号。
从字面上看,实时信号有这个名字,因为它需要尽快处理,几乎是实时的。
但为什么linux的优先级低于标准信号?
答案 0 :(得分:2)
可能因为实时信号排队,所以给它们较低的优先级会降低你“错过”信号的可能性。
答案 1 :(得分:1)
这可能与实时信号排队而非常规信号排队的事实有关。这意味着如果两个实时信号快速连续激活(在它可以被操作之前),你的信号处理程序将被调用两次。
如果这种情况发生在常规信号上,那么就会“迷失”(虽然这很容易让周围的人工作)。
我认为目的是保持两种类型的信号不同。为POSIX.4构建的应用程序很可能会尽可能地使用实时中断,为退出条件等罕见事件留下常规中断。
换句话说,您将不再使用USR1进行配置重新加载(如某些程序那样),但会为此选择一个较低优先级的实时中断。
使用实时信号可以为您提供正确实时应用所需的信息:
实时信号背后的部分原理可以在MichaelGonzálezHarbour等人撰写的白皮书中找到,题为“实时POSIX:概述”。提取如下:
POSIX.1中定义的信号机制允许通知系统中发生的事件,但对于实时应用程序并不完全令人满意。信号没有排队,因此某些事件可能会丢失。信号没有优先级,这意味着紧急事件的响应时间更长。而且,相同类型的事件产生具有相同数量的信号,这些信号是难以区分的。由于许多实时系统严重依赖于事件的快速交换 在系统中,POSIX.4扩展了信号接口,实现了以下功能: