信号的基本概念

来源:互联网 发布:判断是否存在sql注入 编辑:程序博客网 时间:2024/06/14 00:06

信号的基本概念

中断

  • 中断是系统对于异步事件的响应()
  • 主要构成部分

    • 中断源
    • 中断信号

    • 现场信息

    • 中断向量表
    • 中断处理程序

异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行异常处理程序

中断流程:中断源发出中断信号,CPU判断中断是否屏蔽屏蔽、保护现场 ,cpu根据异常/中断向量表,执行中断处理程序, cpu恢复现场,继续原来的任务。

  • 其他概念:
    • 中断向量表保存了中断处理程序的入口地址。
    • 中断个数固定,操作系统启动时初始化中断向量表。
    • 中断有优先级(有人敲门,有人打电话,有优先级)
    • 中断可以屏蔽(张三可以屏蔽电话)。
  • 中断分类
    • 硬件中断(外部中断)
      外部中断是指由外部设备通过硬件请求的方式产生的中断,也称为硬件中断
    • 软件中断(内部中断)
      内部中断是由CPU运行程序错误(取指异常)或执行内部程序调用引起的一种中断,也称为软件中断。
    • x86平台INT指令 ARM平台SWI指令–软中断指令

信号

  • 信号是UNIX系统为响应某些状况而产生的事件,进程在接收到信号时会采取相应的行动。–为了正常完成任务设置的信号
  • 信号是因为某些错误条件而产生的,比如内存段冲突、浮点处理器错误或者非法指令等–程序出错产生的信号
  • 信号是在软件层次上对中断的一种模拟,所以通常把它称为是软中断

信号VS中断

信号与中断的相似点:

(1)采用了相同的异步通信方式;
(2)当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序;
(3)都在处理完毕后返回到原来的断点;
(4)对信号或中断都可进行屏蔽。

信号与中断的区别:

(1)中断有优先级,而信号没有优先级,所有的信号都是平等的;
(2)信号处理程序是在用户态下运行的,而中断处理程序是在内核态下运行;
(3)中断响应是及时的,而信号响应通常都有较大的时间延迟

信号名称及常用信号

信号名称 描述 SIGABRT 进程停止运行 6 SIGALRM 警告钟 SIGFPE 算述运算例外 SIGHUP 系统挂断 SIGILL 非法指令 SIGINT 终端中断 2 SIGKILL 停止进程(此信号不能被忽略或捕获) SIGPIPE 向没有读者的管道写入数据 SIGSEGV 无效内存段访问 SIGQUIT 终端退出 3 SIGTERM 终止 SIGUSR1 用户定义信号1 SIGUSR2 用户定义信号2 SIGCHLD 子进程已经停止或退出 SIGCONT 如果被停止则继续执行 SIGSTOP 停止执行 SIGTSTP 终端停止信号 SIGTOUT 后台进程请求进行写操作 SIGTTIN 后台进程请求进行读操作

* kill –l 可以查看linux内核支持的信号
* man 7 signal 查看信号的默认动作、信号的含义

进程对信号的三种相应

  • 忽略信号
    不采取任何操作、有两个信号不能被忽略:SIGKILL(9号信号)和SIGSTOP。

    思考1:为什么进程不能忽略SIGKILL、SIGSTOP信号。(如果应用程序可以忽略这2个信号,系统管理无法杀死、暂停进程,无法对系统进行管理。)。SIGKILL(9号信号)和SIGSTOP信号是不能被捕获的。

  • 捕获并处理信号
    内核中断正在执行的代码,转去执行先前注册过的处理程序。

  • 执行默认操作
    默认操作通常是终止进程,这取决于被发送的信号。
    信号的默认操作:通过 man 7 signal 进程查看

这里写图片描述

0 0