在介绍了软件与硬件对于进程互斥访问临界资源后,接下来了解一种新的机制:信号量机制。
信号量机制
PV操作
- P操作:wait原语,进程等待;
- V操作:signal原语,唤醒等待进程;
整型信号量
如下图所示,整型信号量的原理违背“让权等待”,会发生忙等。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/68b57348288fcb38051b1b4113923b7d.png)
由于使用了while循环,导致了忙等。为了克服这一缺点,引入阻塞队列即可。
记录型信号量
记录型信号量会在进程申请访问临界区资源失败后进入阻塞状态,不会发生忙等。每当一个线程从临界资源出来后,自动恢复信号量的值,一方面会唤醒阻塞队列的队首的进程,同时只要当前申请使用(包括正在使用)临界资源的数量大于临界资源量,新到的进程都会进入阻塞队列的队尾。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0b94561c051fac4bceff34d88a30b59e.png)