시스템 운영 : 테이블에 접시가있다, 당신은 단지 과일 접시를 넣을 수 있습니다. 아빠가 사과를 먹는 오렌지 접시, 딸과 다른 특별한 요리를 먹고 같은 전용 아들로 접시 사과, 접시를 넣어 디자인 오렌지 엄마를 넣어 디자인했다. PV 작업과 그들 사이의 동기화 메커니즘.

 

프로세스 동기화 및 상호 배제 연습하는 운영 체제 :

 

     단 열매를이 테이블에 접시와 넣을 수 있습니다. 아빠가 요리 특별한에 사과를 넣어, 넣어 오렌지 접시에 특별한 엄마,

      아들은 오렌지, 딸과 사과를 먹는 다른 특별한 요리로 특별한 요리를 먹는다. PV 작업과 그들 사이의 동기화 메커니즘.

 

분석 및 네 개의 세마포어 metux, 빈, 사과, 오렌지의 디자인;

metux는 말했다 : 아버지, 어머니, 아들과 접시의 프로세스의 독점 사용에 딸;

빈, 그는 말했다 : 접시가 비어 있는지;

사과는 말한다 : 나는 사과를 취할 수있다;

오렌지는 말했다 : 당신이 오렌지을 할 수 있습니다.

알고리즘은 다음과 같이 설명된다 :

semaphore empty=1,nutex=1,apple=0,orange=0;  //为四个信号量赋初值
void father(){
     do{
           wait(empty);    //等待盘子为空
           wait(metux);    //等待获取对盘子的操作
            爸爸向盘中放一个苹果;
           signal(mutex);   //释放对盘子的操作
           signal(apple);   //通知女儿可以来盘子中取苹果
    }while(TRUE);
}
void mather(){               //与父亲进程雷同
     do{
           wait(empty);
           wait(metux);
            妈妈向盘中放一个桔子;
           signal(mutex);
           signal(orange);
    }while(TRUE);
}
void son(){                        
     do{
           wait(orange);       //判断盘子中是否有桔子
           wait(metux);        //等待获取对盘子的操作
            儿子取出盘中的桔子;
           signal(mutex);      //释放对盘子的操作
           signal(empty);      //盘子空了,可以继续放水果了
    }while(TRUE);
}
void daugther(){               //与儿子进程雷同
     do{
           wait(apple);
           wait(metux);
            女儿取出盘中的苹果;
           signal(mutex);
           signal(empty);
    }while(TRUE);
}
void main() {               //四个并发进程的同步执行
	cobegin
	   father();mather();son();daugther();
	coend
}

 

게시 된 736 개 원래 기사 · 원 찬양 (123) ·은 80000 +를 볼

추천

출처blog.csdn.net/S_999999/article/details/103648433