赞
踩
中午11点了,你给自己和女朋友在网上点了两份外卖,你吃米饭,她吃面条。虽然外卖没有到来,但你清楚的知道外卖来临时,你该怎么处理。也就是你能“识别外卖”。
当外卖小哥到了你楼下,你也收到通知,但是你正在CSDN学习,需3min之后才能去取外卖。那么在这3min之内,你并没有下去去取外卖,但是你是知道有外卖到了。也就是取外卖的行为并不一定要立即执行,可以看做“在合适的时候去取”。
在接到电话,再到你拿到外卖期间,有一个时间窗口。在这段时间你并没有拿到外卖,但是你知道有外卖到了。本质上是你“记住了有一个外卖要去取”
当你时间合适,顺利拿到外卖之后,就要开始处理外卖了。而处理外卖一般方式有三种(信号递达):
用户按下Ctrl-C ,这个键盘输入产生一个硬件中断,被OS获取,解释成信号,发送给目标前台进程,前台进程因为收到信号,进而引起进程退出。
合适的时间:从内核切换为用户态。
信号处理过程:
2.自定义处理之后,信号的处理方式不再是进程退出
3.僵尸进程因为已经退出,因此不做任何处理
4.进程停止运行,则将不再处理信号
在一个函数中若对局部变量进行了原子操作,则这个函数一定是不可重入的。
上面所说的所有信号产生,最终都要有OS来进行执行,为什么?OS是进程的管理者
信号的处理是否是立即处理的?在合适的时候
信号如果不是被立即处理,那么信号是否需要暂时被进程记录下来?记录在哪里最合适呢?
一个进程在没有收到信号的时候,能否能知道,自己应该对合法信号作何处理呢?
如何理解OS向进程发送信号?能否描述一下完整的发送处理过程?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。