如果进程的标准信号和实时信号都挂起,则POSIX将不指定哪个是先交付的。Linux和许多其他实现一样,在本例中优先考虑标准信号。
从字面上说,实时信号有这个名字,因为它需要尽快处理,几乎是实时的.
但是为什么linux给予它比标准信号更低的优先级呢?
发布于 2011-06-14 02:09:30
也许是因为实时信号是排队的,所以给予它们较低的优先级会降低“错过”信号的可能性。
发布于 2011-06-14 02:10:41
这可能与实时信号排队而常规信号不排队这一事实有关。这意味着,如果两个实时信号被快速连续地激活(在它被激活之前),您的信号处理程序将被调用两次。
如果这种情况发生在一个正常的信号中,一个人就会“迷失”(尽管这很容易让人周而复始)。
我认为目的是保持这两种类型的信号不同。为POSIX.4构建的应用程序很可能尽可能多地使用实时中断,在退出条件等罕见的情况下留下常规中断。
换句话说,您将不再使用USR1来重新加载配置(就像某些程序所做的那样),而是选择一个优先级较低的实时中断。
实时信号的使用为您提供了一个合适的实时应用程序所需的内容:
没有丢失的events.
实时信号背后的部分理由可以在迈克尔冈萨雷斯港等人撰写的白皮书中找到,题为“实时POSIX:概述”。摘录如下:
POSIX.1中定义的信号机制允许通知系统中发生的事件,但对于实时应用来说并不完全令人满意。信号没有排队,因此一些事件可能会丢失。没有对信号进行优先排序,这意味着紧急事件的响应时间更长。同样,相同类型的事件产生相同数目的信号,这些信号是无法区分的。由于许多实时系统在很大程度上基于系统中事件的快速交换,POSIX.4扩展了信号接口以实现以下功能:
https://stackoverflow.com/questions/6338302
复制相似问题