zoukankan      html  css  js  c++  java
  • 系统如何将一个信号通知到进程(转)

    系统如何将一个信号通知到进程?
    参考
    linux内核中异步通知机制–信号处理机制

    小结
    内核给进程发送信号,是在进程所在的进程表项的信号域设置对应的信号的位。

    进程检查信号的时机是:进程即将从内核态返回用户态时。如果进程睡眠了,要看睡眠能不能被中断,如果能被中断则唤醒。

    进程有一个链表的数据结果,维护一个未决信号的链表。

    信号在进程中注册,其实就是把该信号加入到这个未决信号链表当中。

    可靠信号不管链表中是否已经有这个信号了,还是会加进去。不可靠信号,如果链表中已经有这个信号了,就会忽略。

    进程处理信号的时机就是从内核态即将返回用户态度的时候。

    执行用户自定义的信号处理函数的方法很巧妙。把该函数的地址放在用户栈栈顶,进程从内核返回到用户态的时候,先弹出信号处理函数地址,于是就去执行信号处理函数了,然后再弹出,才是返回进入内核时的状态。

    被屏蔽的信号,取消屏蔽后还会被检查。
    ————————————————
    版权声明:本文为CSDN博主「stevewongbuaa」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/waltonhuang/article/details/52229336

    联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
  • 相关阅读:
    405
    406
    4-1
    3-11
    3-10
    3-9
    3-8
    3-7
    3-5
    3-4
  • 原文地址:https://www.cnblogs.com/zl1991/p/13229887.html
Copyright © 2011-2022 走看看