操作系统: 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放 橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们 之间的同步机制。

编程入门 行业动态 更新时间:2024-10-14 08:28:54

操作系统: 桌子上有一只<a href=https://www.elefans.com/category/jswz/34/1742945.html style=盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放 橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们 之间的同步机制。"/>

操作系统: 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放 橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们 之间的同步机制。

操作系统:进程的同步与互斥练习

     桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,

      一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV操作实现他们之间的同步机制。

分析设计四个信号量metux,empty、apple、orange;

metux表示:爸爸、妈妈、儿子和女儿进程对盘子的互斥使用;

empty表示:盘子是否为空;

apple表示:是否可以取苹果;

orange表示:是否可以取桔子。

算法描述如下:

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() {               //四个并发进程的同步执行cobeginfather();mather();son();daugther();coend
}

 

更多推荐

操作系统: 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放 橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用P

本文发布于:2024-02-26 13:56:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1702745.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:盘子   专向   橘子   苹果   一只

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!