深入理解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 这两个信号不能被阻塞、忽略、捕获;接收到的进程必须执行它们对应的缺省操作。
深入理解Linux内核-信号的更多相关文章
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- 《深入理解Linux内核》 读书笔记
深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...
- 【读书笔记::深入理解linux内核】内存寻址【转】
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...
- 【读书笔记::深入理解linux内核】内存寻址
我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开 ...
- 深入理解Linux内核-中断和异常
Linux内核代码查看 http://androidxref.com/ 中断:被定义位一个事件,它能改变处理器执行指令的顺序.它对应硬件(CPU.其他硬件设备)电路产生的电信号. 同步中断:指令执行时 ...
- 理解Linux内核之中断控制
乍一看下边的Linux内核代码,貌似L3389有bug,于是我就绕有兴趣地阅读了一下local_irq_save/local_irq_restore的源代码. /* linux-4.14.12/mm/ ...
- 通过分析exevc系统调用处理过程来理解Linux内核如何装载和启动一个可执行程序
前言说明 本篇为网易云课堂Linux内核分析课程的第七周作业,本次作业我们将具体来分析exec*函数对应的系统调用处理过程,来分析Linux内核如何来执行一个可执行程序,由于有一个在网易云课堂共同学习 ...
- Linux内存管理(深入理解Linux内核)
Linux的内存管理,实际上是借助80x86的硬件分段和分页电路,将逻辑地址转化为物理地址的. 物理内存中,有一部分是一直(Permanently)映射给内核使用的,这部分主要用于保存内核的代码,以及 ...
- 【深入理解Linux内核架构】第3章:内存管理
3.1 概述 内存管理涵盖了许多领域: 内存中物理内存页的管理: 分配大块内存的伙伴系统: 分配小块内存的slab.slub.slob分配器: 分配非连续内存块的vmalloc机制: 进程的地址空间. ...
随机推荐
- SpringBoot常用属性配置
SpringBoot 2.x:https://github.com/spring-projects/spring-boot/blob/2.0.x/spring-boot-project/spring- ...
- 视频转换ffmpeg
使用yum在centos下安装ffmpeg ffmpeg -i IMG_1893.MOV -ab 56 -ar 22050 -b 500 -r 15 -s 640x480 test.mp4 说 ...
- codevs 2010 求后序遍历
时间限制: 1 s空间限制: 64000 KB题目描述 Description输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列.输入描述 Input Description共两行,第一行一个字符 ...
- RHEL7 配置临时IP 测试
RHEL7 配置或添加临时IP地址测试: [root@rhel7 Desktop]# ip a s enp0s3 ---查看原网卡IP 为192.168.1.7 : enp0s3: <BROAD ...
- hihocoder第229周:最大连续字母个数
题目链接 给定一个仅包含小写字母的字符串s(长度小于1e5),你可以交换任意两个字符的位置,现在允许交换k次,要求交换之后,s中最长的连续相同字符个数尽量多,求这个最长连续区间的长度. 样例 输入 1 ...
- 1A2B猜数字
知乎链接 维基百科 问题描述 又名猜数字. 一方准备从0到9十个数字里抽出4个数,随机排列,另一方同样以这样的方法回应四个数.位置相同数字相同为A,数字出现,位置不同为B,然后计数. 例1234 56 ...
- Debug 路漫漫-04
1.错误使用 cat 要串联的数组的维度不一致. ——前面给个初始化即可: D = cell(length(trainIdx),1); user_itemData = cell(length(trai ...
- 开发只懂 AFN ?搞定 NSURLSession 才是硬道理
由于傲娇的苹果在 iOS9 之后已经放弃了 NSURLConnection,所以在现在的实际开发中,除了大家常见的 AFN 框架,一般使用的是 iOS7 之后推出的 NSURLSession,作为一名 ...
- QQ模仿之弹窗ADDFriend事件
大家自己分析吧 #pragma once //演示QQ2009 #define WINDOW_WIDTH 250 //窗口宽度 #define WINDOW_HEIGHT 600 //窗口高度 str ...
- ubuntu下制作u盘启动盘
ubuntu12.04下成功制作了ubuntu13.10 U盘启动盘. 成功 ubuntu14.04下成功制作了centos.7 U盘启动盘.成功 1.安装u盘制作工具unetbootin sudo ...