【linux】Linux学习总结-信号机制

时间:2022-09-16 16:14:42

信号机制是U N I X系统使用最早的进程间通信机制之一,主要用于向一个或多个进程发异步事件信号,L i n u x使用存贮在每个进程t a s k s t r u c t结构中的信息实现信号机制, 它支持的信号数受限于处理器的字长.并不是系统中的每个进程都可以向其他的进程发消息,只有内核和超级用户可以做到这一点。普通的进程只能向同一进程组或具有相同的u i d和g i d的进程发送信号。信号可以通过设置t a s k s t r u c t结构s i g n a l域中相应中的位来产生。如果一个进程没有阻塞信号,正处于可中断的等待信号状态中,当等待的信号出现时,系统可以通过把该进程的状态变成运行状态,然后放入候选运行队列中的方法来唤醒它.

信号产生后,并不立即提交给进程,它必须要等到进程再次被调度运行时。每当进程从系统调用中返回时,系统都会检查进程的s i g n a l域和b l o c k e d域,以确定是否出现某些未阻塞的信号。这看起来非常不可靠,但实际上系统的每个进程都在不断地做系统调用,如向终端写字符。进程可以选择挂起在可中断的状态上,等待某一个它希望的信号出现, L i n u x的信号处理程序为当前每个未阻塞的信号查找s i g a c t i o n结构。


系统内有一组可以由内核或其他的进程触发的预定义信号,并且这些信号都有相应的优先级。