linux0.12之内核代码signal.c说明

本文详细介绍了Linux0.12内核中的信号处理机制,强调了信号作为软件中断的角色。通过分析`do_signal`函数,阐述了如何在系统调用或中断返回时修改执行流程,插入信号处理句柄。内容涉及`do_signal`函数、`sigaction`结构体、信号处理句柄的设置以及内存验证和写时复制的过程。
摘要由CSDN通过智能技术生成

首先理论理解一下
信号是一种“软件中断”处理机制。信号机制提供了处理异步事件的方法。
信号也叫软中断。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。
内核代码中使用无符号长整型(32bit)编码信号,被定义在include/signal.h中

typedef unsigned int sigset_t;   /* 32 bits */
#define _NSIG             32
#define NSIG     _NSIG
#define SIGHUP   1
#define SIGINT   2
#define SIGQUIT  3
#define SIGILL   4
#define SIGTRAP  5
#define SIGABRT  6
#define SIGIOT   6
#define SIGUNUSED    7
#define SIGFPE   8
#define SIGKILL  9
#define SIGUSR1  10
#define SIGSEGV  11
#define SIGUSR2  12
#define SIGPIPE  13
#define SIGALRM  14
#define SIGTERM  15
#define SIGSTKFLT   16
#define SIGCHLD  17
#define SIGCONT  18
#define SIGSTOP  19
#define SIGTSTP  20
#define SIGTTIN  21
#define SIGTTOU  22

do_signal函数是由内核系统 调用(int 0x80)中断处理程序中对信号的预处理程序
如下有个信号处理程序的调用方式
这里写图片描述
我们知道从用户态到内核态,cpu会压入上下文,如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值