信号量题目

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2020/1/71第一章绪论(1)实现进程互斥用信号量实现临界区互斥设置一信号量,信号量初值为1,进入临界区以前对信号量执行P操作,退出临界区后对信号量执行V操作.2020/1/72第一章绪论解决进程间互斥问题P(mutex)V(mutex)P(mutex)P(mutex)V(mutex)V(mutex)2020/1/73第一章绪论Varmutex:semaphore:=1;beginparbeginprocess1:beginrepeatwait(mutex);criticalsectionsignal(mutex);remainderseetionuntilfalse;endprocess2:beginrepeatwait(mutex);criticalsectionsignal(mutex);remaindersectionuntilfalse;endparend2020/1/74第一章绪论(2)实现前趋关系控制合作进程的执行次序若干个进程为了完成一个共同任务而并发执行,有些进程之间有次序的要求,有些进程之间没有次序的要求前趋图来表示进程集合的执行次序。2020/1/75第一章绪论(2)实现前趋关系2020/1/76第一章绪论例如图,试用信号量实现这三个进程的同步。设有两个信号量SB、SC,初值均为0Pa:Pb:Pc:…P(SB);P(SC)V(SB);……V(SC);2020/1/77第一章绪论【题1】如图,试用信号量实现这三个进程的同步。2020/1/78第一章绪论解设有两个信号量S1、S2,初值均为0P1:P2:P3:……P(S1)V(S1);V(S2);P(S2)…2020/1/79第一章绪论【题2】如图,试用信号量实现这6个进程的同步2020/1/710第一章绪论解设有5个信号量S2、S3、S4、S5、S6,初值均为0P1:P2:P3:…P(S2);P(S3)V(S2);……V(S3);V(S4);V(S6);V(S5)P4:P5:P6:P(S4);P(S5);P(S6);…P(S5);P(S6);……V(S5);V(S6);2020/1/711第一章绪论司机进程:while(1){启动车辆正常驾驶到站停车}…售票员进程:while(1){关门售票开门}…【题3】P.V操作解决司机与售票员问题要求:先关门再启动车辆先停车再开门2020/1/712第一章绪论解设有两个信号量S1,S2,初值均为0。司机进程:while(1){P(S1)启动车辆正常驾驶到站停车V(S2)}…售票员进程:while(1){关门V(S1)售票P(S2)开门}…2020/1/713第一章绪论【题4】吃水果问题桌上有一空盘,最多允许存放一只水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。提示:设置一个信号量表示可否向盘中放水果,一个信号量表示可否取桔子,一个信号量表示可否取苹果。2020/1/714第一章绪论解设置三个信号量S,So,Sa,初值分别为1,0,0。分别表示可否向盘中放水果,可否取桔子,可否取苹果。2020/1/715第一章绪论Father(){while(1){p(S);将水果放入盘中;if(是桔子)v(So);elsev(Sa);}}Son(){while(1){p(So)取桔子v(S);吃桔子;}}Daughter(){while(1){p(Sa)取苹果v(S);吃苹果;}}2020/1/716第一章绪论【题5】共享缓冲区进程的同步设某计算进程CP和打印进程IOP共用一个单缓冲区,CP进程负责不断地计算数据并送入缓冲区T中,IOP进程负责不断地从缓冲区bufT中取出数据去打印。2020/1/717第一章绪论分析CP、IOP必须遵守以下同步规则:当CP进程把计算结果送入缓冲区后,IOP进程才能从缓冲区中取出结果去打印;当IOP进程把缓冲区中的数据取出打印后,CP进程才能把下一个计算结果送入缓冲区2020/1/718第一章绪论解:设有两个信号量Sa=0,Sb=1,Sa表示缓冲区中数据数,Sb表示缓冲区中空位置数。两个进程的同步可以描述如下:2020/1/719第一章绪论【题6】用P.V操作解决下图之同步问题getcopyput提示:分别考虑对缓冲区S和T的同步,再合并考虑2020/1/720第一章绪论【题7】假设在一个送煤车间,有甲乙两工种的工人若干。甲种工人每次用筐从车间外的一个煤库取一筐煤运到车间的一个煤斗里,乙种工人每次用筐从煤斗中取一筐煤送到锅炉里。煤斗最初是空的,最多可以存储100筐煤,筐子共有10只。假设煤库每次只允许一人进入取煤,煤斗每次只允许一人操作(即不能同时取煤或放煤),请用信号量描述甲乙两种工人的活动。2020/1/721第一章绪论甲:煤库————筐————煤斗乙:煤斗————筐————(锅炉)临界资源:对煤库、煤斗的操作互斥进行设互斥信号量mutex1=1,mutex2=1资源:筐:basket=10煤斗空:empty=100煤斗满:full=02020/1/722第一章绪论A进程:{while(1){P(empty);P(basket);走到煤库P(mutex1);进入煤库取一筐煤;V(mutex1);走到煤斗;P(mutex2);向煤斗倒煤;V(mutex2);V(basket);V(full);}}B进程:{while(){P(full);P(basket);走到煤斗;P(mutex2);从煤斗取一筐煤;V(mutex2);倒一筐煤到锅炉;V(basket);V(empty);}}

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功