实例:同步问题.ppt_第1页
实例:同步问题.ppt_第2页
实例:同步问题.ppt_第3页
实例:同步问题.ppt_第4页
实例:同步问题.ppt_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、实例:同步问题,同步问题1:理发师问题,一个理发店由一个有几张椅子的等待室和一个放有一张理发椅的理发室组成。 问题分析: 题目中要求描述理发师和顾客的行为,因此需要两类进程Barber ()和Customer()分别描述理发师和顾客的行为。当理发师看报时顾客进来需要唤醒理发师为其理发,当有顾客时理发师为其理发,没有的时候理发师看报,因此理发师和顾客之间是同步的关系,由于每次理发师只能为一个人理发,且可供等侯的椅子有限只有n个,即理发师和椅子是临界资源,所以顾客之间是互斥的关系。,同步问题1:理发师问题,1 若没有要理发的顾客,则理发师去睡觉;2 若一顾客进入理发店,理发师正在为别人理发,且等待

2、室有空椅子,则该顾客就找张椅子按顺序坐下;3 若一顾客进入理发店,理发师在睡觉,则叫醒理发师为该顾客理发;4 若一顾客进入理发店且所有椅子都被占用了,则该顾客就离开。,同步问题1:理发师问题,互斥信号量:mutex ,初始值为1; 信号量customers用来记录等候理发的顾客数,并用作阻塞理发师进程,初值为0; barbers用来记录正在等候顾客的理发师数,并用作阻塞顾客进程,初值为0; 这里barbers只有两种取值, 0或1; 临界变量:waiting由理发师进程和顾客进程共同访问,用来记录在椅子上等着的顾客数;,同步问题1:理发师问题,var waiting : integer:=0;

3、 /*等候理发的顾客数*/ CHAIRS:integer:=n; /*为顾客准备的椅子数*/ VAR customers, barbers,mutex : semaphore:=0,0,1; Procedure barber; begin while(TRUE); /*理完一人,还有顾客吗?*/ P(cutomers); /*若无顾客,理发师睡眠*/ P(mutex); /*进程互斥*/ waiting := waiting 1; /*等候顾客数少一个*/ V(barbers); /*理发师去为一个顾客理发*/ V(mutex); /*开放临界区*/ cut-hair( ); /*正在理发*/

4、 end;,同步问题1:理发师问题,procedure customer begin P(mutex); /*进程互斥*/ if customersn then waiting := waiting+1; /* 等候顾客数加1*/ V(customers); /*必要的话唤醒理发师*/ V(mutex); /*开放临界区*/ P(barbers); /*无理发师, 顾客坐着养神*/ get-haircut( ); /*一个顾客坐下等理发*/ else V(mutex); /*人满了,走吧!*/ end;,同步问题2,一家四口父亲、母亲、儿子、女儿,现有一个盘子,父亲只往盘子里放苹果,母亲只往盘

5、子里放桔子,儿子只吃桔子,女儿只吃苹果。盘子中只能放一只水果。请用信号量机制分别为父亲、母亲、儿子、女儿编写程序,使他们不发生冲突。,同步问题2,解: semaphore mutex,apple,orage,empty; mutex.value=1; apple . value=0; orage .value = 0; empty . value = 1 ; Void father() Wait(empty); wait(mutex); put an apple on the disk; signal(mutex); signal(apple); ,同步问题2,Void mather() Wait(empty); wait(mutex); put an orange on the disk; signal(mutex); signal(orange); ,同步问题2,Void son() Wait(apple); Wait(mutex); Get an apple from disk; Signal(mutex); Signal(empty); ,同步问题2,Void dau

温馨提示

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

评论

0/150

提交评论