互斥是由程序共享资源所引起的,某一个资源不允许同时多个程序访问,那么解决方法是要么访问其他空闲的同种资源,要么等待这一资源。等待这一资源就要在操作系统实现互斥:当一个进程正在使用资源的时候,其他希望使用该资源的程序必须等待,当该进程使用完并释放资源后,才允许其他进程去访问此资源,我们称这种进程之间的互相制约关系叫做互斥。
互斥的实现方法
软件方法
算法一:
保证互斥访问临界资源,问题在于强制两个进程交替进入临界区,造成资源利用率低,p0退出后,P1未进入,P0不能进入
- 12345678910111213141516171819
算法二:
解决了空闲让进的问题,但是当两个进程都未进入临界区,而又同时想进入临界区,双方都认为对方不在临界区,同时进入临界区,违背了忙则等待
- 1234567891011121314151617181920212223
算法三:
算法防止了两个进程同时进入临界区,但存在两个都进不了临界区的问题,违背了有限等待
- 12345678910111213141516171819202122
算法四:
flag解决临界区访问,turn解决饥饿现象