介绍
信号量是进程间通信的一种同步机制,用于管理多个进程对共享资源的访问。以下是一些关于信号量的关键要点:
-
信号量概念:
- 信号量是一个特殊的变量或计数器,其值表示可供并发进程使用的资源数量。
- 信号量可以用来控制对临界区(critical section)的访问,确保在任何给定时刻只有一个进程在使用该资源。
-
P/V操作:
- 信号量主要进行两种操作:等待§和发送(V)。
- P操作会检查信号量的值:
- 如果信号量的值大于0,将其减1,进程可以继续执行。
- 如果信号量的值为0,进程会被阻塞(挂起),并放入一个等待队列中,直到其他进程执行V操作释放信号量。
- V操作会将信号量的值增加1:
- 如果信号量的值小于或等于0,唤醒等待队列中的一个进程。
- 如果信号量的值已经大于0,只需简单地增加其值。
-
类型:
- 二进制信号量:只能取0或1的信号量,常用于实现互斥锁(mutex)。
- 计数信号量:可以取大于1的值,用于控制可重入资源的数量。
-
系统调用:
- 在Unix/Linux系统中,常用的信号量系统调用包括:
- 在Unix/Linux系统中,常用的信号量系统调用包括: