Answers:
就像其他人所说的那样,信号量是IPC(进程间通信结构)。像所有IPC一样,信号量用于允许不同的进程相互通信。
它们基本上是使用特殊系统调用(例如sempost(3),semwait(3),semget(2)和semop(2))创建,访问和销毁的计数器。有关简短说明,请参见linux系统上的sem_overview(7)。
这里的交流定义很原始。信号量的“通信”是指通过上述系统/库调用来读取,递增或递减计数器。
关于信号量的特殊之处在于,它们一次只能对一个进程执行操作,并且信号量操作被保证是原子的,也就是说,您不能进入竞争状态。信号量,因为内核不会交换正在执行信号量操作的进程。
另一个特别之处是它们是在共享内存中创建的,该共享内存允许多个进程访问它们。
它们如何表现/创建的是程序使用semget(2)创建它们。例如,apache运行时会创建临时对象。
ipcs -l将告诉您系统的ipc资源。
您可以使用sysctls操作一些系统信号量和ipc相关的限制。尝试 sysctl kernel.sem通过sysctl查看与sempahore相关的设置。如果要保留任何sysctl更改,请尝试将它们放入/etc/sysctl.conf。
信号量是进程间通信的一种形式(ipcrm中的ipc)。它们由操作系统提供,Apache的开发人员使用它们在不同的Apache进程之间进行通信。它们不太可能是导致Apache崩溃的原因,但是当崩溃时它们不会被释放,从而阻止了Apache新实例的启动。
维基百科:信号量(编程)