码迷,mamicode.com
首页 > 系统相关 > 详细

进程互斥

时间:2015-07-08 14:19:27      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

一 基本概念:

1 临界资源(critical resource): 系统中的某些资源一次只允许一个进程使用。

2 临界区(critical section): 各个进程中对某些临界资源进行操作的程序片段。

3 临界区的使用原则:

1)   无进程在临界区,进程可进入

2)   不允许两个进程同时处于临界区

3)   临界区外进程不可阻塞其他进程进入临界区

4)   进程不可无限期处于临界区

二 进程互斥的解决方案

   进程互斥的解决方案可划分为软件解决方案和硬件解决方案。软件解决方案主要包括:Dekker解法、Peterson解法。

1 软件解决方案

1)   Dekker解法

 1 P:
 2     ......
 3     pturn = true
 4     while(qturn) {
 5         if(turn == 2){
 6             pturn = false;
 7             while(turn == 2);
 8             pturn = true;
 9         }
10     }
11 
12     进入临界区
13 
14     turn = 2;
15     pturn = false;
16     ......
17 
18 Q:
19     ......
20     qturn = true;
21     while (pturn) {
22         if(turn==1) {
23             qturn = false;
24             while(turn==1);
25             qturn = true;
26         }
27     }
28 
29     进入临界区
30 
31     turn = 1;
32     qturn = false;
33     .....

2)  Peterson解法

 1 进程i:
 2     ......
 3     enter_region(i);
 4     进入临界区
 5     leave_region(i);
 6     ......
 7 
 8 #define FALSE 0
 9 #define TRUE 1
10 #define N 2
11 int turn;
12 int interested[N];
13 void enter_region(int process)    //process 为0或1
14 {
15     int other;
16     other = 1 - process;
17     interested[process] = TRUE;
18     turn = process;
19     while(turn == process && interested[other] == TRUE);    //先给turn赋值的进程先运行
20 }
21 
22 void leave_region(int process)
23 {
24     interested[process] = FALSE;
25 }

2 硬件解决方案

1)  中断屏蔽方案

特点:(1) 简单高效(2)代价高,限制CPU并发能力(3)不适用于多处理器(4)适用于操作系统本身,不适用于用户进程

2)  测试并加锁 TSL (Test and Set Lock)

enter_region:
    TSL REGISTER, LOCK       //复制锁到寄存器并且将锁置1
    CMP REGISTER,#0
    JNE enter_region
    RET 

leave_region:
    MOVE LOCK, #0
RET

3)  交换指令 XCHG

enter_region:
    MOVE REGISTER, #1
    XCHG REGISTER, LOCK       //复制锁到寄存器并且将锁置1
    CMP REGISTER,#0
    JNE enter_region
    RET 

leave_region:
    MOVE LOCK, #0
RET

上述解决方案都具有忙等待的特点。即进程在进入临界区之前,持续测试而不做其他事情,浪费一定的CPU资源。

进程互斥

标签:

原文地址:http://www.cnblogs.com/darrensun/p/4629886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!