操作系统互斥的实现方法

互斥是由程序共享资源所引起的,某一个资源不允许同时多个程序访问,那么解决方法是要么访问其他空闲的同种资源,要么等待这一资源。等待这一资源就要在操作系统实现互斥:当一个进程正在使用资源的时候,其他希望使用该资源的程序必须等待,当该进程使用完并释放资源后,才允许其他进程去访问此资源,我们称这种进程之间的互相制约关系叫做互斥。

互斥的实现方法

软件方法

算法一:

int turn = 0;
P0: {
        do {
            while(turn == 0)
            P0的临界区代码CS0;
            turn = 1;
            进程的其他代码codesegment1;
           }
        while(ture);
    }
P1: {
        do {
            while(turn == 1)
            P1的临界区代码CS1;
            turn = 0;
            进程的其他代码codesegment2;
           }
        while(true);
    }

算法二:

//枚举类型
enum boolean {true, false};
boolean flag[2] = {false, false};
    P0 {
        do {
            while flag[1];
            flag[0] = true;
            CS0;
            flag[0] = false;
            codesegment1;
           }
        while(true);
       }
    P1: {
         do {
             while flag[0];
             flag[1] = true;
             CS1;
             flag[1] = false;
             codesegment2;
            }
         while(true);
        }

算法三:

enum boolean{false, true};
boolean flag[2] = {false, false};
    P0 {
        do {
            flag[0] = true;
            while flag[1];
            CS0;
            flag[0] = false;
            codesegment1;
           }
        while(true);
       }
    P1: {
         do {
             flag[1] = true;
             while flag[0]; 
             CS1;
             flag[1] = false;
             codesegment2;
            }
         while(true);
        }

算法四:

enum boolean{false, true};
boolean flag[2] = {false, false};
int turn;
    P0 {
        do {
            flag[0] = true;
            turn = 1;
            while flag[1] && turn == 1;
            CS0;
            flag[0] = false;
            codesegment1;
           }
        while(true);
       }
    P1: {
         do {
             flag[1] = true;
             turn = 0;
             while flag[0] && turn == 0; 
             CS1;
             flag[1] = false;
             codesegment2;
            }
         while(true);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值