进程同步问题习题.doc_第1页
进程同步问题习题.doc_第2页
进程同步问题习题.doc_第3页
进程同步问题习题.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子,如果没有顾客,理发师便在理发椅上睡觉。一个顾客到来时,它必须叫醒理发师。如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。2、苹果桔子问题桌上有一只盘子,每次只能放入一只水果;爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔于(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果。使用记录型信号量解决苹果桔子问题。3、一座山有一个隧道,规定每次允许一列火车过隧道,现在南方北方都有车要过隧道。如果把每个过隧道火车都看作一个进程,为保证安全,请用wait和signal原语操作实现正确管理。var waiting : integer; /*等候理发的顾客数*/ CHAIRS:integer; /*为顾客准备的椅子数*/customers, barbers,mutex : semaphore;customers := 0; barbers := 0; waiting := 0; mutex := 1;Procedure barber;beginwhile(TRUE); /*理完一人,还有顾客吗?*/P(cutomers); /*若无顾客,理发师睡眠*/P(mutex); /*进程互斥*/waiting := waiting 1; /* */V(barbers); /*理发师去为一个顾客理发*等候顾客数少一个/V(mutex); /*开放临界区*/cut-hair( ); /*正在理发*/end;procedure customerbeginP(mutex); /*进程互斥*/if waitingCHAIRS begin /*看看有没有空椅子*/waiting := waiting+1; /* 等候顾客数加1*/V(customers); /*必要的话唤醒理发师*/V(mutex); /*开放临界区*/P(barbers); /*无理发师, 顾客坐着养神*/get-haircut( ); /*一个顾客坐下等理发*/endV(mutex); /*人满了,走吧!*/end;varplate : integer;sp:semaphore; /* 盘子里可以放几个水果 */sg1:semaphore; /* 盘子里有桔子 */sg2:semaphore; /* 盘子里有苹果 */sp := 1; /* 盘子里允许放一个水果*/Sg1, := 0; /* 盘子里没有桔子 */sg2 := 0; /* 盘子里没有苹果*/cobeginprocess father beginL1:削一个苹果;P(sp);把苹果放入plate;V(sg2);goto L1;end;process mother beginL2:剥一个桔子;P(sp);把桔子放入plate;V(sg1);goto L2;end;process son beginL3: P(sg1);从plate中取桔子;V(sp);吃桔子;goto L3;end;process daughter beginL4: P(sg2);从plate中取苹果;V(sp);吃苹果;goto L4;end;coend设信号量s表示隧道的互斥信号量,初始值为1。则第I列从南向北过隧道火车为进程p_s_to_n(I);第I列从北向南过隧道的火车为进程p_n_to_s(I);可得以下管理程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论