linux(信号发送后)

news/2024/10/30 15:25:09/

目录:

           1.引入什么是合适的时候

           2.内核态和用户态

           3.信号的处理

           4.sigaction函数

--------------------------------------------------------------------------------------------------------------------------------

1.引入什么是合适的时候

 2.信号什么时候被处理

 什么是内核态、什么是用户态呢??

内核态:执行操作系统的代码和数据时,计算机所处的状态就叫做内核态,OS的代码和执行全部都是在内核态!!
用户态:就是用户代码和数据被访问或者执行的时候,所处的状态,我们自己所写的代码全部都是在用户态执行的!!!

内核态和用户态的主要区别是在:在于权限

 我们之前学的页表都是用户级页表,每一个进程都有一份,而在操作系统启动之后,会给linux内核(操作系统)也给一个系统级页表(内核页表)所以进程共享

这样的话,我们就从设计上能够,保证一个进程既能看到自己的代码,又能看到OS的代码

 让你能够看到,你就一定能够访问吗??

我们需要有一个权限和身份认证,证明当前你的整个进程是属于哪种工作模式的(这种工作模式一般在我们进程里面有相关数据标识,这个数据会被加载进CPU当中)

所以在我们的CPU当中有一个寄存器(CR3),为0的时候代表操作系统,为3的时候代表普通用户(所以说当我们进程在执行的时候,怎么知道自己是内核态还是用户态,就是完完全全查CPU的寄存器(CR3))

进程具有了地址空间是能够看到用户和内核的所有内容的,不一定能访问

用户态使用的是用户级页表,只能访问用户数据和代码

内核态使用的内核级页表,只能访问内核级的数据和代码

区分我们是内核态还是用户态,CPU有寄存器保存了当前进程 的状态

进程之间无论如何切换,我们能够保证我们一定能够找到同一个OS,因为我们每一个进程都有3-4G的地址空间,使用同一张内核页表!!!!

 --------------------------------------------------------------------------------------------------------------------------

3.信号的处理

这就是我们调用系统调用时,内核态和用户态之间的切换

 我们要进行的信号处理

 用户态调用系统调用进入内核态,把系统调用的内核代码执行完,准备返回用户态的时候,我不着急返回,反正我刚好也在内核,PCB也在内核当中,顺便对进程 的信号检测一下,有信号没有被block,直接执行它的方法,执行完必之后回到内核(默认和忽略是直接内核态执行就可以了,只要自定义捕捉的时候,需要我们切换回用户态)!!!

 为何我一定要切换回用户态,才能执行我自定义信号的捕捉方法???

OS能不能直接执行用户的代码呢??理论上是可以的(毕竟是OS拥有权限高)

但是OS不相信任何人!!,既要把自己保护好,也不轻易执行别人的代码,OS身份特殊,不能直接执行用户的代码!!!

--------------------------------------------------------------------------------------------------------------------------------

4.sigaction函数

 

 

 ----------------------------------------------------------------------------------------------------------------------------

当某个信号的处理函数被调用时,内核(OS)会自动将当前信号加入进程的信号屏蔽字,当信号处理函数返回时自动恢复原来的信号屏蔽字,这样就保证了在处理某个信号时,如果这种信号再次产生,那么它就会被阻塞到当前处理结束为止!!!        

在调用信号处理函数时,除了当前信号自动屏蔽之外,还希望自动屏蔽另外一些信号,则用sa_mask字段说明需要屏蔽额外的信号


http://www.ppmy.cn/news/282015.html

相关文章

一文学会MoveIt Setup Assistant搭建moveit2机械臂模型

文章目录 前言一、MoveIt Setup Assistant 是什么?二、搭建步骤拉取相关repo创建项目文档编辑moveit_description文件夹编辑moveit_config文件夹 MoveIt Setup Assistant 配置Launch moveit_setup_assistant配置干涉关系配置planning groups配置ros2 controller配置…

无线充电宝有用吗?有没有好的无线充电宝推荐

对于充电宝的便利性,我相信大家也是知晓的,平时出门在外,当手机没电的时候,你第一个想起的应该就是充电宝了吧,充电宝不仅可以有效地解决手机没电续电,而且最主要的是携带方便,如今充电宝也是越…

PD QC快充诱骗取电方案:输出9V12V15V20V

手机快充充电器或充电宝,在没有与手机通讯时,快充充电器相当于普通的充电器只输出5V电压,要想得到充电器的9V/12V等电压,可以使用快充取电电路。 或者也可以使用电子元件来搭建诱骗电路,但是和专用的取电芯片方案相比&…

快充协议(QC/PD/PE)

充电按用途可分为:车充,墙冲,无线充和充电宝(移动电源);按接口可分为Micro-USB, USB-A or B, Type-C和Lightning(Apple); 按充电快慢可分为BC1.2,USB/Lightning标准&…

快充协议(QC/PD/PE)及标准

快充协议(QC/PD/PE)及标准 充电按用途可分为:车充,墙冲,无线充和充电宝(移动电源);按接口可分为Micro-USB, USB-A or B, Type-C和Lightning(Apple); 按充电快…

快充芯片IP5328P的寄存器数据读写[用于DIY数显快充充电宝]

【本帖DIY因为有一定的危险性,非专业人员请勿自行尝试】 【如有侵权 联系删除】 IP5328P是一款最大18W的快充芯片,主要用于快充充电宝的产品,基本支持市面上绝大部分主流的快充协议。 因为能看到本帖的想必都是对这个芯片很了解了&#xf…

pd快充的电压和电流_实测绿联PD直充、充电宝、车充,全方位快充的神仙体验...

越来越多的智能产品都支持快充了,苹果在iPhone 8开始也加入了快充的行列,自从有了PD快充套装之后,充电效率得到了不少提升,30分钟充电50%的体验,大多数人体验后就很难再回得去了。 苹果官方正式宣布开放了Type-C转Lightning的授权,让果粉享受PD快充有了更多的选择, 国内…

开源 AI 面临的挑战

译者:明明如月 人工智能的代价 尽管我坚信开源人工智能将继续蓬勃发展,但我也认为未来几年企业和政府将越来越有动机限制对新型神经网络架构和技术的应用。本文旨在预测并概述可能在本十年发生的潜在颠覆性变革,并提出一些想法和解决方案&a…