【Linux】信号捕捉

这篇具有很好参考价值的文章主要介绍了【Linux】信号捕捉。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

信号捕捉

1.用户态与内核态

用户态:执行用户代码时,进程的状态
内核态:执行OS代码时,进程的状态

1.1关于内核空间与内核态:

进程地址空间分为用户空间(3G)和内核空间(1G),不同进程的内核空间是相同的,通过同一张内核级页表映射到物理内存,当调用系统调用接口或时间片到了需要执行进程切换逻辑时,CPU会访问内核空间,执行相应的OS的代码,本质上还是在进程的地址空间内跳转。

1.2关于用户态与内核态的表征:

在CPU中有一个叫CR3的寄存器,保存了当前进程所使用的虚拟地址空间的页目录地址以及其他标志位,用来表征执行级别,比如在执行OS提供的系统调用时,CR3中的执行级别会先被修改为内核态,执行完从系统调用返回时又会将其设置为用户态,据此CPU即可根据执行级别决定是否执行内核空间和用户空间的访问请求,确保了用户不能随意访问OS的代码和数据,只能借由OS提供的系统调用接口进行间接访问。

2.信号捕捉过程

由于时间片到了或者系统调用,进程下陷到内核 -->
进入内核先完成当前优先级更高的任务 -->
执行完任务后通过内核空间访问进程PCB -->
检测PCB中的信号保存的三张表(block, pending, handler),依次检测一个信号 -->
如果方法为默认或忽略,直接处理,若为自定义,则进入用户态执行捕捉方法 -->
执行完毕,通过特定系统调用 sigreturn 回到内核态 -->
通过 sys_sigreturn(),检查陷入内核时的上下文保护并恢复,跳转到进入内核的位置继续执行后续操作 -->文章来源地址https://www.toymoban.com/news/detail-628095.html

到了这里,关于【Linux】信号捕捉的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(98)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(94)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(55)
  • 华为云云耀云服务器L实例评测 | Linux系统宝塔运维部署H5游戏

    本章节内容,我们主要介绍华为云耀服务器L实例,从云服务的优势讲起,然后讲解华为云耀服务器L实例资源面板如何操作,如何使用宝塔运维服务,如何使用运维工具可视化安装nginx,最后部署一个自研的H5的小游戏(6岁的小朋友玩的很开心😁)。 前端的同学如果想把自己

    2024年02月07日
    浏览(58)
  • 【Linux】 信号的保存 | 捕捉

    对于信号,主要涉及到信号的产生、保存和捕获,之前谈到了信号的产生,这里主要介绍信号产生后如何进行保存和捕捉处理的原理。 相关概念 实际执行处理信号的动作称为 信号递达Delivery 信号从产生到递达的过程称为 信号未决Pending 进程可以阻塞、忽略某个信号。 被阻塞

    2024年02月21日
    浏览(37)
  • 【Linux】信号捕捉

    用户态:执行用户代码时,进程的状态 内核态:执行OS代码时,进程的状态 1.1关于内核空间与内核态: 进程地址空间分为用户空间(3G)和内核空间(1G),不同进程的内核空间是相同的,通过同一张内核级页表映射到物理内存,当调用系统调用接口或时间片到了需要执行进程切换

    2024年02月14日
    浏览(29)
  • 【Linux】信号的保存和捕捉

    我们知道,操作系统是进程的管理者,只有操作系统才有资格向进程发信号,具体点,是给进程的PCB发信号。 更具体点,就是将进程的task_struct中的signal整形的某一个比特位由0置1!!! 那么该信号如何被保存下来呢? 实际执行信号的处理动作称为信号递达(Delivery) 信号从产

    2024年02月05日
    浏览(34)
  • 【Linux】进程信号 --- 信号的产生 保存 捕捉递达

    被爱情困住的是傻子 1. 关于信号这个话题我们其实并不陌生,早在以前的时候,我们想要杀死某个后台进程的时候,无法通过ctrl+c热键终止进程时,我们就会通过kill -9的命令来杀死信号。 查看信号也比较简单,通过kill -l命令就可以查看信号的种类,虽然最大的信号编号是

    2023年04月23日
    浏览(38)
  • 【Linux】进程信号——进程信号的概念和介绍、产生信号、四种产生信号方式、阻塞信号、捕捉信号、阻塞和捕捉信号的函数

      在Linux中,进程信号是一种异步的事件通知机制,用于通知进程某个事件已经发生。它是进程间通信的一种方式,可以用来控制进程的行为。   当一个进程收到信号时,操作系统会中断该进程的正常控制流程,并执行相应的处理函数。进程收到信号后有三种处理方式:

    2024年02月02日
    浏览(57)
  • 【Linux】信号--信号的捕捉/可重入函数/volatile/SIGCHLD信号

    用户态的的时候,进行以下操作:1.操作系统自身的资源(getpid,waitpid…)2.硬件资源(printf, write,read) 用户为了访问内核或者硬件资源,必须通过系统调用完成访问。实际执行系统调用”人是“进程”,但是身份其实是内核。往往系统调用比较费时间一些,所以尽量避免频繁调用系

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包