- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
T第2章进程3通信线程演示
FILENAME 3880420-58fb47452bc86.doc PAGE 1 PAGE 16 2.4 经典进程的同步问题 ① Dijkstra 1968年提出的生产者-消费者问题 ② 五个哲学家进餐问题 ③ 读者-写者问题(两类) 2.4.1 生产者-消费者问题(producer-consumer problems) 例3 S T GET COPY PUT GET、COPY、PUT三进程共用两个缓冲区S、T(其大小为每次存放一个记录)。GET进程负责不断把输入记录送入缓冲区S中,COPY进程负责从缓冲区S中取出记录复制到缓冲区T中,PUT进程负责把记录从缓冲区T中取出打印,试用WAIT、SIGNAL操作实现这三个进程之间的同步。 ① 对GET COPY S是临界区,同步为空满 ② 对PUT T是临界区,同步为空满 初始 SE=1 空 TE=1 空 SF=0 满 TF=0 满 GET: COPY: While(1) While(1) {wait(se);//申请s空 {wait(sf);//申请s满 add data to s; take data from s; signal(sf); signal(se);//通知get,s空 } add data to t; signal(tf)//通知put,t满 } PUT: While(1) {wait(tf);//申请t满 take data to output; signal(te);//释放t } 例3:有穷缓冲区生产者和消费者问题 设有多个生产者和消费者,他们共享一个具有n个存储单元的有穷缓冲区0……n-1。 in out 满 空 遵循以下规则: 1)只要缓冲区有空闲单元,生产者都可存放信息,当缓冲区满时,任一生产者提出要求时,都必须等待。 2)只要缓冲区中有信息可取,消费者都可以从缓冲区中取用信息,当缓冲区空时,任一消费者取用信息都必须等待。 3)生产者们和消费者们不能同时读写缓冲区。 设缓冲区编号为0~n-1,设三个信号量。 semaphore mutex=1,empty= n,full=0; char buffer[n]; int in=0,out=0; producer(semaphore mutex, semaphore empty, semaphore full) { while(1) {…… produce a new message m; wait(empty); wait(mutex); buffer(in)=m; in=(in+1)% n; signal(mutex); signal(full); } } consumer(semaphore mutex, semaphore empty, semaphore full) { while(1) {wait(full); wait(mutex); in=buffer(out); out=(out+1)%n; signal(mutex); signal(empty); consume message m } } 信号量只与制约进程及被制约进程有关而不是与整组并发进程有关,称该信号量为私用信号量(Private Semaphore)。 一个进程的私用信号量是从制约它的进程发送来的、使它能继续执行条件所需的消息,称互斥信号量为公用信号量(Public Semaphore)。 例4:利用信号量描述前驱关系 为了实现这种前驱关系,我们只需为进程P1,P2,……P6各设置一个私用信号量a,b,c,d,e,作为同步信号,赋初值为0。 S1 S2 S3 S4 S5 S6 p1:{ S1;signal(a);signal(a); } p2: {wait(a); S2; signal(b);signal(b);} p3: {wait(a); S3; signal(c); } p4: {wait(b); S4; signal(d); } p5: {wait(b); S5; signal(e); } p6: {wait(d); wait(e); wait(c); S6; } 在考虑进程同步问题时,要注意到几个问题: ① 分析有几个临界区,是否需要公用互斥信号量,初值是多少(资源量)。 ② 考虑几个进程如何同步,如何通过信号量互通消息,初值是多少。如何用信号量作为进程阻塞和唤醒的机构。 a)在资源分配和释放情况中,进程所等待的事件是其所要求的资源被其它进程释放出来成为可用。这时信号量代表该资源的数量。 b)在进程间相互协同情况下,使进程等待某事件来控制其执
您可能关注的文档
最近下载
- 2025年执业药师之西药学专业一模考预测题库(夺冠系列).docx VIP
- ISO 15614-13 2023 金属材料焊接工艺规程及评定 电阻对焊和闪光焊(中文版).pdf
- 过敏性休克抢救指南2025版.docx
- 扩张型心肌病的护理查房课件.pptx VIP
- 第一章 食品工艺学导论.ppt VIP
- 系统性红斑狼疮(共44张PPT).pptx VIP
- 3.1 标志设计 (课件)人教版七年级美术上册.pptx VIP
- genesis2000脚本编写,Perl╱TK常见问答中文版.pdf VIP
- 2024《广西农产品电商物流SWOT-PEST分析及发展策略研究(数据图表论文)》16000字.docx VIP
- 剑桥国际少儿英语KB1第1-12单元文本-(英汉版).pdf VIP
文档评论(0)