信号 09 | 信号概念

与信号相关的事件与状态

产生信号:

  • 按键产生:如Ctrl + c、Ctrl + z, Ctrl + \
  • 系统调用产生:如kill、raise、alarm
  • 硬件异常产生:如非法访问内存(段错误)、除0(浮点数除外)、内存对齐错误(总线错误)

递达:递送并且到达进程

未决:产生和递达之间的状态。主要由于阻塞(屏蔽)导致该状态。

信号的处理方式:

  • 执行默认动作
  • 忽略(丢弃)
  • 捕捉(调用用户处理函数)

linux内核的进程控制块PCB是一个结构体,task_struct,除了包含进程ID、状态、工作目录、用户ID、组ID、文件描述符、还包含了信号相关的信息,主要指阻塞信号集和未决信号集。

阻塞信号集:将某些信号加入集和,对它们设置屏蔽屏蔽,当屏蔽x信号后,在收到该信号,该信号的处理退后(解除屏蔽后)

未决信号集

  • 信号产生,未决信号集中描述该信号的位立即翻转为1, 表信号处于未决转态。当信号被处理翻转回为0,这一时刻往往非常短暂。
  • 信号的产生后由于默写原因(主要指阻塞)不能抵达,这类信号的集合称之为未决信号集。在屏蔽解除前,信号一直处于未决状态。

猜你喜欢

转载自blog.csdn.net/isunbin/article/details/83068274