0%

《操作系统》信号机制

简介

前面在操作系统原理中有学习到硬件中断,硬件中断就是指在硬件层次,CPU被强行中断去执行更重要的事情

而这里要讲的 信号机制 其实就是软件层次的强行中断,是在软件层次上对硬件中断机制的一种模拟

信号接收执行

主线程可以安装信号处理函数,主线程接收到信号后就会被强行打断,接着执行信号处理函数(只有主线程才能接收信号处理信号)

内核中针对每一个进程都有一个表来保存信号

当内核需要将信号传递给某个进程时,就在该进程对应的表中写入信号,这样就生成了信号。

当该进程由用户态陷入内核态,再次切换到用户态之前,会查看表中的信号。如果有信号,进程就会首先执行信号对应的操作,此时叫做执行信号。

信号发送

信号的发送方可以是操作系统内核自己发出,比如出现硬件错误、内存读取错误,分母为0的除法等,内核需要通知相应进程,继而杀死进程。

信号的发送方也可以是用户态进程通过系统调用告诉内核转发信号

案例

1
kill -9 1111

上面的命令是强行杀死进程号为1111的进程。

其实上面的命令,就是通过系统调用向1111的进程发送信号,默认情况下kill命令是发送SIGTERM信号,-9则是发送SIGKILL信号,这个信号内核规定不能被忽略,所以 -9 能达到强行杀死的目的

下面是所有信号的目录表:




微信关注我,及时接收最新技术文章