进程互斥–软件方法实现
下面来介绍一下进程的概念。动态分配共享资源给正在执行的程序。一般来说每个软件都有自己的进程。例如qq,浏览器,word等。那么当这些进程共享资源时,就有可能产生互斥。
先来说下软件方式解决资源互斥。
所谓软件方法实现。就是自己编写代码来实现对进程的控制。
我们先要明白进程的临界区。访问临界资源的代码成为临界区。
比如下面的代码。
int flag[2]={0,0}; //代表两个进程是否在临界区中执行。
...
p1
{
while(1)
{
flag[0]=1;turn=2;
while(flag[1]&&turn==2)
{
no-ap; //flag[1]其他进程在临界区中,则p1进程空操作
}
cirtical section //进入临界区
flag[0]=0;
}
}
但是这种算法当p1进程需要申请临界区资源时,并不会释放cpu资源。还是不太妥当。
所以一般是不用软件方式实现进程控制