第9课进程间的制约关系(经典同步问题).ppt

第9课进程间的制约关系(经典同步问题).ppt

ID:61668772

大小:628.00 KB

页数:40页

时间:2021-03-09

第9课进程间的制约关系(经典同步问题).ppt_第1页
第9课进程间的制约关系(经典同步问题).ppt_第2页
第9课进程间的制约关系(经典同步问题).ppt_第3页
第9课进程间的制约关系(经典同步问题).ppt_第4页
第9课进程间的制约关系(经典同步问题).ppt_第5页
资源描述:

《第9课进程间的制约关系(经典同步问题).ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、操作系统第9课经典进程同步问题经典进程同步问题读者-写者问题“理发店”问题哲学家就餐问题读者-写者问题数据对象可以为多个并发进程所共享有两种并发进程:读者:写者:共享一组数据区同步要求:同一时刻只允许一个写者写。同一时刻可允许多个读者读。不允许读者、写者同时操作。读者-写者问题程序描述读者:读者读取所需数据写者:写者对数据进行修改读者优先的读者-写者问题如果读者来:1)无读者、写者,新读者可以读2)有写者等,但有其它读者正在读,则新读者也可以读3)有写者写,新读者等如果写者来:1)无读者,新写者可

2、以写2)有读者,新写者等待3)有其它写者,新写者等待用P、V信号量来解决读者-写者问题读者:读者读取所需数据写者:写者对数据进行修改设置信号量wrt,初始值为1;用P、V信号量来解决读者-写者问题读者:P(wrt)读者读取所需数据V(wrt)写者:P(wrt)写者对数据进行修改V(wrt)设置信号量wrt,初始值为1;不满足读者优先要求用P、V信号量来解决读者-写者问题读者:P(wrt)读者读取所需数据V(wrt)写者:P(wrt)写者对数据进行修改V(wrt)设置信号量wrt,初始值为1;添加共

3、享变量reader,初始值为0;用P、V信号量来解决读者-写者问题读者:reader=reader+1ifreader==1P(wrt)读者读取所需数据V(wrt)写者:P(wrt)写者对数据进行修改V(wrt)设置信号量wrt,初始值为1;添加共享整型变量reader,初始值为0;问题:读者读完数据退出时数据是否需要更新?用P、V信号量来解决读者-写者问题读者:reader=reader+1ifreader==1P(wrt)读者读取所需数据reader=reader-1V(wrt)写者:P(wr

4、t)写者对数据进行修改V(wrt)设置信号量wrt,初始值为1;添加共享整型变量reader,初始值为0;用P、V信号量来解决读者-写者问题读者:reader=reader+1ifreader==1P(wrt)读者读取所需数据reader=reader-1ifreader==0V(wrt)写者:P(wrt)写者对数据进行修改V(wrt)设置信号量wrt,初始值为1;添加共享整型变量reader,初始值为0;用P、V信号量来解决读者-写者问题读者:P(mutex)reader=reader+1ifr

5、eader==1P(wrt)V(mutex)读者读取所需数据P(mutex)reader=reader-1ifreader==0V(wrt)v(mutex)写者:P(wrt)写者对数据进行修改V(wrt)设置信号量wrt,初始值为1;mutex,初始值1;设置共享整型变量reader,初始值为0;“理发店”问题理发店中有k张理发椅和n张给等待理发的顾客坐的座椅。入口座椅座椅座椅座椅座椅理发椅n张理发椅理发椅k张出口若没有顾客,理发师就坐在理发椅上打盹;当顾客来时,就唤醒打盹的理发师进行理发;若理发

6、师全在工作,又来新顾客,则就坐在空座椅上等待理发,如果没有空座椅顾客就离去。试用信号量上的P、V操作描述理发师和顾客的行为,保证该过程的正确实现。“理发店”问题程序描述理发师程序barber(){cut_hair();}顾客程序customer(){get_haircut();}“理发店”问题---P、V信号量解法理发师程序barber(){P(custs);//申请顾客cut_hair();}顾客程序customer(){P(barbs);//申请理发师get_haircut();}“理发店”问

7、题---P、V信号量解法理发师程序barber(){P(custs);//申请顾客cut_hair();}顾客程序customer(){V(custs);//释放顾客P(barbs);//申请理发师get_haircut();}“理发店”问题---P、V信号量解法理发师程序barber(){P(custs);//申请顾客cut_hair();V(barbs);//释放理发师}顾客程序customer(){V(custs);//释放顾客P(barbs);//申请理发师get_haircut();}设

8、置同步私用信号量custs:等待理发的顾客数(不包括正在理发的顾客),初值为0;barbs:等待为顾客理发的理发师数,初值为k;“理发店”问题---P、V信号量解法设置同步信号量custs:记录等待理发的顾客数(不包括正在理发的顾客),初值为0;barbs:正在等待为顾客理发的理发师数,初值为k;设置变量waiting,它的初值为0。记录等待理发的顾客数“理发店”问题---P、V信号量解法顾客程序customer(){if(waiting

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。