当前位置: 首页 > news >正文

深入理解Linux内核-信号

信号:
1、最初被引入作为用户态进程间通信
2、内核也使用信号通知进程系统所发生的事件
3、信号很短,发送给进程的唯一信息通常是一个数。
4、名称通常以SIG为前缀
5、信号时可消费资源,每个信号只能被传递一次

使用信号的目标:
1、让进程知道已经发送了一个特定的事件
2、强迫进程执行它自己代码中的信号处理程序。

信号分两类:
1、常规信号(regular signal):编码范围(0~31),同种类型的常规信号并不排队,一个常规信号被发送多次,只有其中一个被收到。
2、实时信号(real-time signal):编码范围(32~64),需要排队,以便多个信号都能被收到
3、Linux内核并不使用实时信号。

信号传递的两个不同阶段:
1、信号产生:内核更新目标进程的数据结构以表示一个新的信号已被发出。
2、信号传递:内核强迫目标进程通过以下方式对信号作出反应:a、改变目标进程的执行状态;b、开始执行一个特定的信号处理程序;c、两者都是。

挂起信号(pending signal):
1、已经产生还没有传递到信号;
2、任何时候一个进程仅存在给定类型的一个挂起信号;相同的其他信号不排队,简单的丢弃掉
3、如果是实时信号,同种类型的挂起信号可以有好几个,它支持排队。

信号处理程序:
1、不必是可以重入的,相同类型的信号再次出现不会中断正在进行的信号处理程序,它会被屏蔽。

进程应答信号的三种方式:
1、显式的忽略信号
2、执行与信号相关的缺省操作terminate、dump、ignore、stop、continue。
3、通过调用相应的信号处理函数捕获信号。

信号阻塞和忽略的差异:
1、信号被阻塞,它就不被传递,只有解除阻塞后才被传递
2、信号被忽略,它还是被传递,只是不被处理

SIGKILL、SIGSTOP 这两个信号不能被阻塞、忽略、捕获;接收到的进程必须执行它们对应的缺省操作。










 

相关文章:

  • 1.1JVM
  • 十进制转二进制
  • Android 工作随记
  • CRB and String
  • CoCoaPods
  • Nova 操作汇总(限 libvirt 虚机) [Nova Operations Summary]
  • Hexo 个人博客搭建
  • 2.4-Apache访问控制
  • Excel文档上传
  • kvm 安装 centos7 文本模式 分辨率 太高修改
  • Android中Activity和Fragment与Fragment和Fragment之前互相传值方法
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 软件工程相关问题
  • 数据结构Java实现04----循环链表、仿真链表
  • 将视频导入到iOS Simulator中
  • Angularjs之国际化
  • Fabric架构演变之路
  • Java编程基础24——递归练习
  • Java反射-动态类加载和重新加载
  • Laravel Mix运行时关于es2015报错解决方案
  • 动态魔术使用DBMS_SQL
  • 分享一份非常强势的Android面试题
  • 高性能JavaScript阅读简记(三)
  • 记一次和乔布斯合作最难忘的经历
  • 免费小说阅读小程序
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端技术周刊 2019-02-11 Serverless
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • !$boo在php中什么意思,php前戏
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • # 安徽锐锋科技IDMS系统简介
  • (1)Nginx简介和安装教程
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (SpringBoot)第二章:Spring创建和使用
  • (笔试题)合法字符串
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (数据结构)顺序表的定义
  • (四)鸿鹄云架构一服务注册中心
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .gitignore文件---让git自动忽略指定文件
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @Builder用法
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @我的前任是个极品 微博分析
  • [《百万宝贝》观后]To be or not to be?
  • [2016.7.Test1] T1 三进制异或
  • [C++]——带你学习类和对象
  • [go 反射] 进阶
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页
  • [I2C]I2C通信协议详解(一) --- 什么是I2C