【Linux】进程信号(下)

news2024/12/31 6:33:35

文章目录

    • 1.信号处理相关问题
      • 内核态与用户态概念的理解
      • 为什么要有 用户态和内核态
      • CR3寄存器的使用
      • 信号处理的整体过程

1.信号处理相关问题

信号处理,不是可以立即处理的,而是在合适的时候
不懂点击: 信号的产生第三点


什么时候是合适的时候?
当进程从内核态切换回用户态的时候,进程会在操作系统的指导下,进行信号的检测与处理


内核态与用户态概念的理解

用户态:执行你写的代码的时候,用户所处的状态
内核态:执行操作系统的代码的时候,进程所处的状态


执行操作系统代码的情况:
1.进程时间片到了,需要切换,就要执行进程切换逻辑
2.系统调用


0-3G属于用户空间
3-4G属于内核空间


将磁盘中的可执行程序加载到物理内存中
这张页表,被称为用户级页表
用户地址空间当中经过用户级页表映射到物理内存
所有的代码和数据都属于自己的代码和数据


操作系统也有代码和数据
如何找到操作系统的代码和数据的呢?
实际上还存在一个内核级页表


所有的进程0-3G是不同的,每一个进程都有自己的用户级页表
所有的进程3-4G是相同的, 每一个进程都可以看到同一张内核级页表
所以所有的进程都可以通过统一的窗口,看到同一个操作系统
操作系统运行的本质:在进程的地址空间处运行
无论进程如何切换,3-4G不变,看到操作系统的内容与进程切换无关


系统调用的本质:就相当于调用库函数中的方法,在自己的地址空间中进行函数跳转并返回


为什么要有 用户态和内核态

为了解决通过虚拟地址的方式随便去访问操作系统里面的代码和数据
提出用户态和内核态


若为用户态,想要去访问操作系统里面的代码和数据时,CPU就会拒绝执行代码,操作系统就可以识别非法访问,即硬件异常,向目标进程发送信号终止进程

CR3寄存器的使用

如何知道当前运行的用户态还是内核态?
在CPU中存在一种寄存器,被称为CR3寄存器,其中有对应的比特位
若为3,则表征正在运行的进程,执行级别为用户态
若为0,则表征正在运行的进程,执行级别为内核态


谁来更改执行级别?
用户无法直接更改
操作系统提供的所有的系统调用,内部在正式执行调用逻辑的时候,会去修改执行级别

信号处理的整体过程

在这里插入图片描述
进程返回时,需要进行信号检测
当执行完某种任务时,先找到对应的进程,检测对应的信号
若block为0(阻塞信号不执行),pending为1(收到信号),执行处理方法
若为忽略信号,则将pending由1改为0


若为自定义捕捉,当系统跳转过去执行的是自己写的方法
实际上自己写的方法是由用户态实现的,
虽然说可以使用内核态去执行自己实现的方法,但是不可以这样做,因为有可能方法内部做了一些非法操作


共分为四步
1.代码执行时,因为系统调用或者时间片到了,切换到内核态
2.返回用户态之前,先做信号检测,没有block(阻塞),已经被pending(收到)
由内核态切换到用户态,执行自定义的handler方法
3.执行handler方法后,在由用户态切换到内核态
4. 最后执行特定的系统调用,返回用户态继续执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499629.html

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

相关文章

Android Studio下载及安装和Gradle的配置

文章目录 下载安装双击打开exe文件 修改Sdk的位置创建项目修改Gradle的位置 下载 下载地址:官方下载地址 打开后往下拉,直到最后的I agree to the terms. 这里选择的android studio版本是:2021.2.1.16,也可以根据自己的需要下载…

语义分割总结

文章目录 0. 前言1. 数据集2. 经典网络2.1 FCN2.2 U-Net2.3 DeepLab2.4 PSPNet2.5 SegNet2.6 CCNet2.7 SegFormer 3. 损失函数4. 评价指标5. 最新进展(2023.4) Segment Anything 0. 前言 语义分割是一种计算机视觉领域的图像分割技术,旨在将…

校内赛WP

Web题目镜像如下: docker pull lauaiwin/hzuctf-flaskrce:latest docker pull lauaiwin/hzuctf-ezphp:latest docker pull lauaiwin/hzuctf-babysql:latest docker pull lauaiwin/hzuctf-sign:latest docker pull lauaiwin/hzuctf-ezupload:latestWeb-签到 通过loc…

sentinel 随笔 2-降级处理

0. 像喝点东西,但不知道喝什么 先来段源码,看一下 我们在dashboard 录入的降级规则,都映射到哪些字段上 package com.alibaba.csp.sentinel.slots.block.degrade;public class DegradeRule extends AbstractRule {public DegradeRule(String…

Spring的第十二阶段(03):Spring实现AOP的简单使用

1、获取拦截方法的返回值和抛的异常信息 获取方法返回的值分为两个步骤: 1、在返回值通知的方法中,追加一个参数 Object result 2、然后在AfterReturning注解中添加参数returning“参数名” 获取方法抛出的异常分为两个步骤: 1、在异常通…

Python入门(五)列表(二)

列表(二) 1.组织列表1.1 使用方法sort()对列表永久排序1.2 使用函数sorted()对列表临时排序1.3 倒着打印列表1.4 确定列表的长度1.5 使用列表时避免索引错误 2.操作列表2.1 遍历整个列表2.1.1 for循环2.1.2 在for循环中执行更多操作2.1.3 在for循环结束后…

用C语言编写,计算并输出下列多项式值 s=1+1/(1+2)+1/(1+2+3)+ ..1/(1+2+3...+50)

C/C语言程序设计题目 用C语言编写&#xff0c;计算并输出下列多项式值 s11/(12)1/(123) …1/(123…50) C语言设计编程代码 #include <stdio.h>int main() {double s 0; // 初始化s的值为0int n 0; // 初始化n的值为0for (int i 1; i < 50; i) {n i; // 累加n的…

scatterlist

在内核驱动程序的很多代码中&#xff0c;都能够看到类似sgdma的内容&#xff0c;sgdma全称为Scatter/Gather DMA(散列/收集 DMA)&#xff0c;内核中抽象了scatterlist和sg table用来描述和管理这种需要做散列和收集的DMA缓冲区。在内核中设计scatterlist&#xff0c;主要出于两…

BDCC - Lambda VS Kappa

文章目录 概述区别Lambda架构:Kappa架构:总结 适用场景:案例:小结 概述 Lambda架构和Kappa架构都是用于处理大数据的架构模式。 Lambda架构使用了批处理和流处理两种不同的处理方式来处理数据。数据首先通过流处理层进行实时处理&#xff0c;然后再通过批处理层进行离线处理&…

开源C#代码生成器,SmartSoftHelp 开发辅助工具

开源代码生成器&#xff0c;支持自定义生成代码&#xff0c;开源生成代码&#xff0c;自己编写生成格式&#xff0c;最方便的代码生成器 下载地址&#xff1a; 百度网盘 请输入提取码

《时间从来不语,却回答了所有问题》笔记三

目录 感悟 经典摘录 假若我再上一次大学 不完满才是人生 走运与倒霉 毁誉 我的座右铭 二月兰 观天池 火车上观日出 感悟 人这个万物之灵却偏偏有了感情&#xff0c;有了感情就有了悲欢。自古及今&#xff0c;海内海外&#xff0c;一个百分之百完满的人生是没有的&…

《Java虚拟机学习》JVM虚拟机是如何执行方法

1. 重载与重写方法 重载 重载 &#xff1a;同一个类中&#xff0c;方法名相同&#xff0c;形参列表不用&#xff0c;与返回值无关 对于重载方法的执行&#xff0c;JVM遵循下面的三条规则&#xff1a; 在不考虑对基本类型自动装拆箱&#xff08;auto-boxing&#xff0c;auto-…

图嵌入表示学习—Graph Embeddings

Embedding Entire Graphs 一、图嵌入向量基本概念 与Node Embeddings不同&#xff0c;Graph Embeddings是对整个图或子图进行编码而忽略其中的节点。应用场景包括异常检测或分子有毒检测。 二、对Node Embeddings求和或求和后平均 如图&#xff0c;首先对图/子图中的节点进行…

shell与shell script 学习总结

文章目录 shell与shell script 学习总结vivim可视化区块多文件编辑多窗口功能vim环境设置与记录中文编码问题语系编码转换 Shell的变量功能变量的使用与设置echo(变量的使用)变量设置的规则 环境变量的功能env(观察环境变量)set(观察所有变量)unset(取消变量) locale(语系变量)…

【Hello Network】TCP协议相关理解

作者&#xff1a;小萌新 专栏&#xff1a;网络 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客简介&#xff1a;补充下对于TCP协议的各种理解 TCP协议相关实验 TCP相关试验理解CLOSE_WAIT状态理解TIME_WAIT状态解决TIME_WAIT状态引起的bind失败的方法理解listen的…

分布式 03 富文本处理插件和图片文件上传

01.使用富文本编辑器来上传图片文件。 02.最开始在html文件中去使用相关富文本的插件。 引入相关文件 <link href"/js/kindeditor-4.1.10/themes/default/default.css" type"text/css" rel"stylesheet"> <script type"text/java…

Redis面试题(上)

1.什么是 Redis&#xff1f; Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 Strin…

Python机器学习入门 -- 支持向量机学习笔记

文章目录 前言一、支持向量机简介二、支持向量机的数学原理1. 距离解算2. 目标函数3. 约束下的优化求解4. 软间隔优化5. 核函数变换 三、Python实现支持向量机1. 惩罚力度对比2. 高斯核函数3. 非线性SVM 总结 前言 大部分传统的机器学习算法都可以实现分类任务&#xff0c;但这…

干货丨你真的了解反应持续时间吗?

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 在今天的推文里&#xff0c;要给大家分享的是一种灵活、免费的心理科学工具——反应持续时间&#xff0c;快来一起看看哦~ 01 导读 简单按键的反应持续时间是一种容易获得但未被充分利用…