linux(信号发送后)

news2024/11/8 21:27:17

目录:

           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.coloradmin.cn/o/624290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你真的会PPT配色吗?来看看这篇吧,瞬间让你的PPT高大上起来

本文档使用技巧如下截图 在色彩里使用其它填充颜色 选取这个“吸管” 用于吸别人的颜色 我曾经为了出一个“惊艳”的PPT,光吸管用了不下150次。 好的艺术家复制,伟大的艺术家偷窃!--毕加索 下面就给出几大常用配色 各位在使用时注意看这些“色卡”的规律,那就是反差色…

安卓系统浏览器开发

预置某个浏览器为系统默认的浏览器 描述: 当系统存在多个浏览器时,如何预置某个浏览器为系统默认的浏览器? 方法: 1.在PackageManagerService.java中的构造函数结尾添加:setDefaultBrowser(); 2.setDefaultBrowser()的具体实现&#xff…

TDengine 合作伙伴 +1,这次是「DaoCloud道客」

随着我国数字经济持续快速发展,各行各业都在积极拥抱云技术,上云成为企业加快数字化转型步伐的关键一步。在此过程中,越来越多的企业开始意识到云原生技术的重要性,利用云原生更快地开发和部署应用程序,提高应用程序的…

智慧信访大数据挖掘平台解决方案

TipDM数据挖掘建模平台由泰迪自主研发,面向大数据挖掘项目的工具。平台使用JAVA语言开发,采用B/S结构,用户不需要下载客户端,可通过浏览器进行访问。平台提供了基于Python、R以及Hadoop/Spark分布式引擎的大数据分析功能。平台支持…

人民大学加拿大女王大学金融硕士——为什么这么多人选金融行业呢

又是一年毕业季,越来越多的新人涌入职场,金融行业依然是择业人们的香饽饽。为什么大家会选金融行业呢?金融行业是一个充满挑战但也充满魅力的行业。在这个快节奏的行业中,人们不断地面对着机遇和挑战,而这个行业也为那…

TLD5097EL-ASEMI代理英飞LED驱动TLD5097EL

编辑:ll TLD5097EL-ASEMI代理英飞LED驱动TLD5097EL 型号:TLD5097EL 品牌:Infineon(英飞凌) 封装:SSOP-14-EP-150mil 类型:LED驱动、汽车芯片 TLD5097EL特性 输入电压范围宽,从4.5 V到45 V 极低关断…

【FATE联邦学习】FATE 自定义Trainer

背景 自己定义了模型后,需要自行定义训练方式。 这里文档给了方法,但是大部分还是需要自己看源码摸索。 https://fate.readthedocs.io/en/latest/tutorial/pipeline/nn_tutorial/Homo-NN-Customize-Trainer/https://fate.readthedocs.io/en/latest/tu…

如何按需下载和安装Win10补丁

如何按需下载和安装Win10补丁 一般我们都是通过系统自带的Windows更新来直接安装补丁,这种方式虽然方便,但是耗时久,而且更新体量也大,会占用很多空间,其实我们完全可以按需下载和安装,下面就给大家介绍方法…

FPGA量子类比机制-FPQA,将在量子运算设计中引发一场新的革命

1980年代现场可程式化逻辑门阵列(FPGA)的出现彻底改变了电子设计。大约40年后,现场可程式化量子位元阵列(FPQA)可望在量子运算电路设计中引发一场类似的革命。 1980年代现场可程式化逻辑闸阵列(FPGA)的出现彻底改变了电子设计。FPGA允许设计人员创建适合特定应用的…

3DCAT亮相糖酒会,为元宇宙展会提供实时云渲染支持

4月12日,第108届全国糖酒商品交易会(下文简称“糖酒会”)在成都正式开幕,吸引了众多酒类企业和行业人士的参与。 图片源自新华社 本次糖酒会上,某展会采用了“双线”模式,除了线下的实体展位,还…

burpsuite工具的使用(详细讲解)

一)前言 我已经在之前详细的说明了burpsuite的安装过程,如果不了解的可以看 burpsuite安装教程 :http://t.csdn.cn/uVx9X 在这了补充说明一下,在安装完burpsuite并设置完代理后,会出现如果访问的url是使用http协议的…

变频器需要定期更换的器件有哪些

导语:​变频器是由许多电子零件构成,例如半导体元件等,在使用和维护当中就涉及到更换部件的问题,由于变频器组成或物理特性的原因,在一定的时期内会产生劣化,因而会降低变频器的特性,甚至会引起…

python---实现一个简化版本的人生模拟器

1.游戏开始的时候,设定初始属性—颜值 体质 智力 家境 2.开始游戏,随机生成性别和出生点 3.针对每一年,都生成人生经历(依靠一定的随机因素当前角色属性) 需要import random一下 一些函数 代码的部分运行情况,由于代码过长此处不予展示!这个部分只写了幼年时期发生的事件!

分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)

在项目中使用ctrlH ,来快速查找相关的hrl请求。 首先全部的请求会进过jt-web,在进行对其他系统的通信。 说明:当点击“登录”或者"免费注册"跳转到登录或者注册页面。 在jt-web项目中,声明UserController资源&#…

【建议收藏】自动化测试框架开发教程

在自动化测试项目中,为了实现更多功能,我们需要引入不同的库、框架。 首先,你需要将常用的这些库、框架都装上。 pip install requests pip install selenium pip install appium pip install pytest pip install pytest-rerunfailures pip …

Vue 项目环境搭建和创建准备工作

一. 学习目标 掌握 Vue 项目创建的依赖环境掌握 Vue 项目创建过程 二. 学习内容 掌握搭建 Vue 项目准备环境掌握 Vue 项目创建过程了解 Vue 项目各子目录 三. 学习过程 1. 准备工作 (1)安装Node.js 打开node.js官网:Node.js &#xff0…

SpringBoot中事务失效的六个原因

SpringBoot中事务失效的原因🚩 常见的事务失效原因包括如下六个: 1. 事务方法非public修饰 由于Spring的事务是基于AOP的方式结合动态代理来实现的。因此事务方法一定要是public的,这样才能便于被Spring做事务的代理和增强。 而且,在Spri…

uniapp 横向滑动list(不同内容)分部问题:scroll-view,swiper overflow-x

横向滑动list,可使用标签: 1:scroll-view 2:swiper 3:overflow-x 正常来讲横向滑动的话 ,需要特殊设置,只用view 设置display:flex,的话 无法横向滑动,右边的就会隐…

Melody 监控(四十九)

当新的世界出现,请立即向他奔去 上一章简单介绍了Spring Boot Actuator详解(四十八), 如果没有看过,请观看上一章 一. JavaMelody 一.一 什么是 Java Melody JavaMelody是一个方便的Java或JavaEE Web 应用程序监控工具。 它允许自动存储由 Web 应用程序的实际操…

我的GIT练习Four

目录 前言 GIT安装教程 Git作者 GIT优点 GIT缺点 为什么要使用 Git GIT练习Four C1:初始化项目 C2:设计项目首页 C3:设计登录页面 C4:实现登录功能 C5:设计后台页面 C6:设计注册页面 C7&#xf…