您的位置:首页 > 其它

进程同步之互斥

2018-03-27 15:57 267 查看
 进程同步是一个操作系统级别的概念,是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。而互斥和同步之间存在联系所以,这里先引入互斥概念。

1、概念

     进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。

2、原因

     由于进程具有独立性和异步性等并发特征,计算机的资源有限,导致了进程之间的资源竞争和共享,也导致了对进程执行过程的制约。

临界资源:把一次(一段时间内)仅允许一个进程使用的资源称为临界资源。

临界区:把不允许多个并发进程交叉执行的一段程序称为临界区(critical region)或临界部分(critical section)。

3、互斥准则:

平等竞争:不能假设各并发进程的相对执行速度。即各并发进程享有平等地、独立地竞争共有资源的权利,且在不采取任何措施的条件下,在临界区内任意指令结束时,其他并发进程可以进入临界区。
不可独占:并发进程中的某个进程不在临界区时,它不能阻止其他进程进入临界区。
互斥使用:并发进程中的若干个进程申请进入临界区时,只能允许一个进程进入。
有限等待:并发进程中的某个进程从申请进入临界区时开始,应在有限时间内得以进入临界区。

4、实现互斥

    1、加锁:对临界区加锁以实现互斥。当某个进程进入临界区后,它将锁上临界区,直到它退出临界区为止。并发进程在申请进入临界区时,首先测试该临界区是否上锁。    2、信号量:在操作系统中,信号量sem是一个整数。     
sem >= 0时,代表可供并发进程使用的资源实体数;
sem < 0时,表示正在等待使用临界区的进程数。
   P、V原语
信号量的数值仅能由P、V原语操作改变。采用P、V原语,可以把类名为S的临界区描述为:When S do P(sem) 临界区 V(sem) od。
一次P原语操作使信号量sem减1
一次V原语操作使信号量sem加1
P原语操作:sem减1;
若sem减1后仍大于或等于0,则P原语返回,该进程继续执行;
若sem减1后小于0,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。
V原语操作:sem加1;
若相加结果大于0,V原语停止执行,该进程返回调用处,继续执行;
若相加结果小于或等于0,则从该信号的等待队列中唤醒一个等待进程,然后再返回原进程继续执行或转进程调度。
      

                      


                        P原语操作流程                                                                   V原语操作流程
由上分析可知:只要把临界区置于P(sem)和V(sem)之间,即可实现进程之间的互斥。
设sem为互斥信号量,其取值范围为(1,0,-1)。其中sem=1表示进程PA和PB都未进入类名为S的临界区,sem=0表示进程PA或PB已进入类名为S的临界区,sem=-1表示进程PA和PB中,一个进程已进入临界区,而另一个进程等待进入该临界区。
     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: