[Linux] 进程信号概念 | 信号产生

🪐🪐🪐欢迎来到程序员餐厅💫💫💫

          主厨:邪王真眼

主厨的主页:Chef‘s blog  

所属专栏:青果大战linux

总有光环在陨落,总有新星在闪烁

为什么我的课设这么难啊,久久叔叔吧,悲,模电要挂了


信号的概念

信号和信号量没有任何关系,他们就是老婆和老婆饼的关系

信号是进程之间事件异步通知的一种方式,属于软中断。
  • 同步(Synchronous)
    • 定义:同步操作是一种按照顺序依次执行的方式。在同步模式下,一个任务必须等待前一个任务完成后才能开始。可以把它想象成一个餐厅,顾客(程序)点完菜(发起任务)后,顾客什么都不干,等菜上来了,开始吃饭,这就是同步
  • 异步(Asynchronous)
    • 定义:任务的发起和完成不需要严格按照顺序。当一个异步任务被发起后,程序不会等待这个任务完成,而是可以继续执行其他任务。当异步任务完成时,会通过某种方式(如回调函数、事件通知等)通知程序。可以把它想象成一个餐厅,顾客(程序)点完菜(发起任务)后,可以做其他事情,比如聊天、看手机,等菜做好了(任务完成),服务员会通知顾客,这就是异步
    • 示例:在 JavaScript 中,使用setTimeout()函数就是一种异步操作。例如,setTimeout(() => console.log("Hello"), 1000);会在 1 秒后打印 “Hello”,但是在这 1 秒内,程序可以继续执行其他代码,而不是等待这个打印操作。
  • 因为信号也是由进程发送的,所以当一个进程正常运行的时候,系统收到了比如杀死这个进程的信号,那么就会有一个进程A作为信号去终止该进程B。但是B进程是不会等信号来的,而是一直做自己的事情。

可以通过指令kill -l来查询linux所支持的常见信号:

这里的信号如一号信号SIGHUP都属于宏,他们的值就是他们的编号,SIGHUP的值就是1. 

  • [1, 31]:这些信号称为非实时信号,当进程收到这些信号后,可以自己选择合适的时候处理
  • [34, 64]:这些信号称为实时信号,当进程收到这些信号后,必须立马处理
  • 实时操作系统:对外部事件响应有严格时间要求,必须在规定时间内作出响应。在任务调度上,采用优先级抢占式和时间片轮转(同优先级)调度,确保关键任务优先执行。用于工业控制、航空航天、医疗设备等对时间敏感的领域。
  • 非实时操作系统:没有严格时间限制,注重通用功能。在任务调度上,有优先级调度(非严格抢占)和公平共享调度,平衡资源分配。用于个人桌面和部分服务器领域,对响应时间要求不高。

事实上,大多数计算机都是非实时的,因此我们今天只学习非实时信号。

进程是如何认识信号的

进程识别信号,由程序员内置的特性,信号的处理方法,在信号产生前就设置好了

就像你在第一次过马路之前,就先被别人告诉了红灯停,绿灯行的信号处理方法

信号会被立刻处理吗

处理信号,不一定是立即处理的,而是选取一个合适的时候

因为当前做的事情的优先级可能比处理信号这件事更高,

处理信号的方法

  1. 默认方法

  2. 忽略该信号(忽略本身也是一种处理方法!!)

  3. 自定义处理方法

 signal

 signal函数是在 Unix、Linux 等操作系统中用于设置信号处理方式的函数。

参数解释

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值