进程通信
信号通信
信号的本质:信号是在软件层次上对中断机制的一种模拟,信号是进程通信间唯一的异步通信机制。
信号的来源:
硬件来源,包括硬件异常,除零,越界访问,这些信号由内核产生,并发送到相关进程;
软件来源,某些软件事件如alarm()函数产生SIGALRM信号,管道通信产生SIGPIPE;进程使用kill() raise()等函数。
信号的相应方式:
忽略信号,但是有两个信号不能忽略,SIGKILL SIGSTOP
捕捉信号,定义信号处理函数
执行默认操作
信号发送的限制
核心和超级用户和可发信号给任何一个进程
普通用户只能向与自己具有相同uid和gid的进程,或者在同意进程组中的进程发送信号
可靠信号和不可靠信号
Linux继承UNIX系统中的信号机制,早期UNIX为了避免信号频繁到达而引起进程堆栈溢出,就将对信号的的相应在每次处理信号后设置为默认动作,因此在信号处理函数里需要每次安装信号处理函数,而由于信号的到来是随机的,如果一个信号到来后,系统调用我们注册的信号处理函数,而此时我们还没有来得及作“安装信号处理函数”(singal())的操作,这时再到达一个信号,系统就会采取默认操作,因此这种信号不可靠。Linux支持UNIX的不可靠信号,并做了修改,也就是在调用完信号处理函数后,系统不会把对该信号的处理恢复为默认动作,用户也不必在信号处理函数里安装信号处理函数。因此,Linux下的不可靠主要是指信号可能丢失。0-31是不可靠信号,32-63是可靠信号,可靠信号支持排队。
现在的Linux的signal函数通过sigaction() 函数实现,在信号处理函数里不必安装信号处理函数,而且由signal()函数安装的信号都支持排队。signal() sigaction()的区别是后者可以传递信息给信号处理函数。
分享到:
相关推荐
操作系统,进程同步与通信
为什么要引入进程? 为了描述 程序在并发执行时对系统资源的共享 需要一个描述程序执行时动态特征的概念
此为一关于进程同步与通信的课件,其中涉及到几个典型的实例
逐步了解操作系统的各个环解,为同学以后更好的进入操作系统行业,提供基础保障。
进程同步与通信作业习题与答案.pdf进程同步与通信作业习题与答案.pdf进程同步与通信作业习题与答案.pdf进程同步与通信作业习题与答案.pdf进程同步与通信作业习题与答案.pdf
进程同步与通信优秀文档.ppt
进程同步与通信作业习题与答案.doc
进程同步与通信5优秀文档.ppt
进程同步与通信3优秀文档.ppt
进程同步与通信4优秀文档.ppt
进程同步与通信2优秀文档.ppt
进程同步与通信(2)优秀文档.ppt
进程同步与通信(1)优秀文档.ppt
进程同步与通信.pptx
第3章-进程同步与通信-1.ppt
第3章-进程同步与通信-3.ppt
进程同步与通信2(1)优秀文档.ppt
进程同步与通信3(1)优秀文档.ppt
第3章-进程同步与通信-练习题答案.doc