IPC 信号是一种进程间通信禁止,它用于在进程之间传递数据和信号。与其他IPC机制相比,IPC 信号可以允许多个操作同时进行,提供了一种失效机制,并允许并发执行对一组信号量或不同的操作。

一、IPC信号的特点

  1. IPC信号量是一整套信号量的值的集合,可以保护一个或多个独立的、可共享的资源。
  2. 系统允许并发执行的进程对一组信号量进行相同或不同的操作,每个P、V操作不限于减1或者加1,可以加减任何整数。
  3. 在进程终止时,系统可根据需要自动消除所有被进程操作过的信号量的影响

二、IPC信号的使用

  1. Linux 系统中,可以使用 semget() 系统调用获取IPC信号量标识符,使用 semop()系统调用原子地减少或增加IPC信号量的值,使用 semctl()系统调用设置或获取IPC信号量选项
  2. 如果进程在等待IPC信号时排队,则在这里将其退出队列

三、IPC信号和信号量的区别

  1. IPC信号量与内核信号非常类似,但IPC信号量是用户空间的同步操作,比内核信号量的处理更复杂。
  2. 内核使用若干数据结构来描述所注册信号量的当前状态,并建立相互的关联,此外,内核还通过等待列表将信号量与等待进程关联起来。