首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么linux决定标准信号比rt信号具有更高的优先级?

问为什么linux决定标准信号比rt信号具有更高的优先级?
EN

Stack Overflow用户
提问于 2011-06-14 01:53:25
回答 2查看 1.7K关注 0票数 4

如果进程的标准信号和实时信号都挂起,则POSIX将不指定哪个是先交付的。Linux和许多其他实现一样,在本例中优先考虑标准信号。

从字面上说,实时信号有这个名字,因为它需要尽快处理,几乎是实时的.

但是为什么linux给予它比标准信号更低的优先级呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-14 02:09:30

也许是因为实时信号是排队的,所以给予它们较低的优先级会降低“错过”信号的可能性。

票数 2
EN

Stack Overflow用户

发布于 2011-06-14 02:10:41

这可能与实时信号排队而常规信号不排队这一事实有关。这意味着,如果两个实时信号被快速连续地激活(在它被激活之前),您的信号处理程序将被调用两次。

如果这种情况发生在一个正常的信号中,一个人就会“迷失”(尽管这很容易让人周而复始)。

我认为目的是保持这两种类型的信号不同。为POSIX.4构建的应用程序很可能尽可能多地使用实时中断,在退出条件等罕见的情况下留下常规中断。

换句话说,您将不再使用USR1来重新加载配置(就像某些程序所做的那样),而是选择一个优先级较低的实时中断。

实时信号的使用为您提供了一个合适的实时应用程序所需的内容:

没有丢失的events.

  • priority顺序,所以应用程序可以确保重要的事情优先于不太重要的事情--我相信这是实时的,类似于确保高优先级线程总是优先于低ones.

  • multiplexing的信号运行(用信号发送额外的数据)。

实时信号背后的部分理由可以在迈克尔冈萨雷斯港等人撰写的白皮书中找到,题为“实时POSIX:概述”。摘录如下:

POSIX.1中定义的信号机制允许通知系统中发生的事件,但对于实时应用来说并不完全令人满意。信号没有排队,因此一些事件可能会丢失。没有对信号进行优先排序,这意味着紧急事件的响应时间更长。同样,相同类型的事件产生相同数目的信号,这些信号是无法区分的。由于许多实时系统在很大程度上基于系统中事件的快速交换,POSIX.4扩展了信号接口以实现以下功能:

  • 实时信号是排队的,这样事件就不会丢失
  • 待等待的实时信号按照优先级顺序去排队,使用信号号作为优先级。这允许设计对紧急events.
  • Real-time信号具有更快响应时间的应用程序,该应用程序可以使用该额外的数据字段在信号生成器和信号处理程序之间交换数据。例如,此数据字段可用于识别信号的来源。
  • 应用程序可用的信号范围扩大了。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6338302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档