【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(),检查陷入内核时的上下文保护并恢复,跳转到进入内核的位置继续执行后续操作 -->

相关推荐
时佃鹏4 分钟前
银河麒麟 V10 重装打印服务 (CUPS)+ 打印机驱动完整教程
运维·银河麒麟系统
xsc-xyc26 分钟前
用 Tailscale + Syncthing 实现手机、电脑与 NAS 的跨网络文件同步
linux·网络·网络安全·智能手机·电脑
Shepherd061937 分钟前
【IT 运维】Apache 使用 mod_remoteip 恢复 Cloudflare 后的真实访客 IP
运维·tcp/ip·apache
IsJunJianXin44 分钟前
pdd小程序 cdp 保存响应体
linux·服务器·小程序·pdd小程序·拼多多响应体解密·小程序cdp·拼多多rpc取响应体
王二端茶倒水1 小时前
智慧园区网络运营:认证、分权、运维和安全闭环
运维·物联网·架构
爱就是恒久忍耐1 小时前
现代CMake的build方式
linux·运维·服务器
三8441 小时前
重定向/管道符/通配符/转义字符/VI/VIM
运维·服务器
qq_谁赞成_谁反对1 小时前
甲方IT的成长之路--nginx实战--2604
服务器·数据库·nginx
fofantasy1 小时前
NSK LH25FL 升级至 NH25EM 技术规格指南
服务器·网络·数据库·经验分享·规格说明书
facaixxx20242 小时前
雨云服务器区域选择终极指南:地域速度、节点带宽、延迟及防御说明
服务器·云服务器·雨云服务器·云服务器区域·云服务器地域·云服务器节点