欢迎来到天天文库
浏览记录
ID:42306778
大小:275.01 KB
页数:19页
时间:2019-09-12
《进程同步与通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章进程同步与通信●进程同步与互斥●经典进程同步问题●管程●AND信号量●进程通信本章要点●吃水果问题●取动物问题●超市购物问题●生产者——消费者问题●哲学家进餐问题●3.2经典进程同步问题吃水果问题1题目:桌子上有一个水果盘,允许存放一个水果。父亲专门向盘子中放苹果,儿子专等吃盘子中的苹果。只要盘子空,则父亲可向盘中放水果,仅当盘中有水果时,儿子可从中取出。把父亲、儿子看作二个进程,试用P、V操作使这两个进程能正确地并发执行。使用信号量解决吃水果问题1题目:桌子上有一个水果盘,允许存放一个水果。父亲专门向盘子中放苹果,儿
2、子专等吃盘子中的苹果。只要盘子空,则父亲可向盘中放水果,仅当盘中有水果时,儿子可从中取出。分析:父亲和儿子两个进程相互制约,父亲进程执行完即往盘中放入苹果后,儿子进程才能执行即吃苹果。因此该问题为进程间的同步问题。semaphoreEmptyPlate=1,Apple=0;voidfather()//父亲进程{while(1){P(EmptyPlate);往盘子中放入一个苹果;V(Apple);}}voidson()//儿子进程{while(1){P(Apple);从盘中取出一个苹果;V(EmptyPlate);吃苹果;}}
3、吃水果问题2题目:桌上有一只盘子,允许存放一个水果,父亲专向盘中放苹果,母亲专向盘中放桔子,儿子专等吃盘里的桔子,女儿专等吃盘里的苹果。只要盘子空,则父亲或母亲可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出。请给出四人之间的同步关系,并用PV操作实现四人正确活动的程序。使用信号量解决吃水果问题2分析:四人之间的关系:1.父亲、母亲要互斥使用盘子,所以两者之间是互斥关系;2.父亲放的苹果,女儿吃,所以两者是同步关系;3.母亲放的桔子,儿子吃,所以两者也是同步关系。semaphoreEmptyPlate=1,A
4、pple=0,Orange=0;voidfather()//父亲进程{while(1){P(EmptyPlate);往盘子中放入一个苹果;V(Apple);}}voidmother()//母亲进程{while(1){P(EmptyPlate);往盘子中放入一个桔子;V(Orange);}}使用信号量解决吃水果问题2分析:四人之间的关系:1.父亲,母亲要互斥使用盘子,所以两者之间是互斥关系;2.父亲放的苹果,女儿吃,所以两者是同步关系;3.母亲放的桔子,儿子吃,所以两者也是同步关系。voidson()//儿子进程{while(
5、1){P(Orange);从盘中取出一个桔子;V(EmptyPlate);吃桔子;}}semaphoreEmptyPlate=1,Apple=0,Orange=0;voiddaughter()//女子进程{while(1){P(Apple);从盘中取出一个苹果;V(EmptyPlate);吃苹果;}}取动物问题题目:有一只铁笼子,每次只能放入一只动物,猎人向笼中放入老虎,农民向笼中放入猪,动物园等待取笼中的老虎,饭店等待取笼中的猪。试用P、V操作写出能同步执行的程序。使用信号量解决取动物问题分析:四者之间的关系:1.猎人和农
6、民要互斥使用笼子,所以两者之间是互斥关系;2.猎人放老虎,动物园取老虎,所以两者是同步关系;3.农民房猪,饭店取猪,所以两者也是同步关系。semaphoreEmptyCage=1,Tiger=0,Pig=0;voidhunter()//猎人进程{while(1){P(EmptyCage);往笼子里放入一只老虎;V(Tiger);}}voidfarmer()//农民进程{while(1){P(EmptyCage);往笼子里放入一只猪;V(Pig);}}voidzoo()//动物园进程{while(1){P(Tiger);从笼子
7、里取出一只老虎;V(EmptyCage);;}}voidrestaurant()//饭店进程{while(1){P(Pig);从笼子里取出一只猪;V(EmptyCage);;}}超市购物问题1题目:某小型超级市场,可容纳100个人同时购物。入口处备有购物车,每个购物者可拿一辆购物车入内购物。出口处结帐,并归还购物车。试用PV操作写出购物者的同步算法semaphores=100voidconsumeri(void)(i=1,2,…,k){while(TRUE){P(s);进入超市取一辆购物车;购物;结帐,并归还购物车;V(s)
8、;}}超市购物问题2题目:某小型超级市场,可容纳100个人同时购物。入口处备有购物车,每个购物者可拿一辆购物车入内购物。出口处结帐,并归还购物车。(出、入口禁止多人同时通过)试用PV操作写出购物者的同步算法semaphores=100voidconsumeri(void)(i=1,2,…,
此文档下载收益归作者所有